
高手指点迷津:一个C程序的错误修改!(高分!)急!
高手指点迷津:一个C程序的错误修改!(高分!)摘自C语言程序设计(曾怡)第二十八讲例11.3#include<stdio.h>voidmain(){structstude...
高手指点迷津:一个C程序的错误修改!(高分!)
摘自C语言程序设计(曾怡)第二十八讲
例11.3
#include <stdio.h>
void main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
stu_1.num=89101l;
strcpy(stu-1.name,"lilin");
(*P).sex='M';
p->score=89.5;
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
小可想:
1.在运行时输入学号姓名性别成绩而不是在源程序中预先设置好;
2.要可以用结构体变量时,采用结构体变量.成员名,(*p).成员名,p->成员名三形式相结合
其在此,特修改如下:
#include <stdio.h>
void main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号");
scanf("%d",&stu_1.num);
printf("请输入姓名");
scanf("%d",&stu_1.name);
printf("请输入性别");
scanf("%c",(*p).sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/
printf("请输入成绩");
scanf("%c",p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
问怎样修改啊?!!错因在哪啊
改正各位所指错误后,运行时:
请输入学号;98706(或别的) 回车
请输入姓名:张帆(或别的)回车 (则出现以下情况:)
请输入姓别:请输入成绩:scanf:floating point formats not linked
Abnormal program termination. 展开
摘自C语言程序设计(曾怡)第二十八讲
例11.3
#include <stdio.h>
void main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
stu_1.num=89101l;
strcpy(stu-1.name,"lilin");
(*P).sex='M';
p->score=89.5;
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
小可想:
1.在运行时输入学号姓名性别成绩而不是在源程序中预先设置好;
2.要可以用结构体变量时,采用结构体变量.成员名,(*p).成员名,p->成员名三形式相结合
其在此,特修改如下:
#include <stdio.h>
void main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号");
scanf("%d",&stu_1.num);
printf("请输入姓名");
scanf("%d",&stu_1.name);
printf("请输入性别");
scanf("%c",(*p).sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/
printf("请输入成绩");
scanf("%c",p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
问怎样修改啊?!!错因在哪啊
改正各位所指错误后,运行时:
请输入学号;98706(或别的) 回车
请输入姓名:张帆(或别的)回车 (则出现以下情况:)
请输入姓别:请输入成绩:scanf:floating point formats not linked
Abnormal program termination. 展开
3个回答
展开全部
#include <stdio.h>
int main()
{
struct student
{
long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号"); /*分号应该用英文的*/
scanf("%ld",&stu_1.num); /*此处用长整数 ld 而不是正数 d*/
printf("请输入姓名"); /*分号应该用英文的*/
scanf("%s",stu_1.name); /*此处用字符串 s 而不是正数 d*/
printf("请输入性别"); /*分号应该用英文的*/
scanf("%c",&(*p).sex); /*注意取地址符*/
printf("请输入成绩"); /*分号应该用英文的*/
scanf("%f",&p->score); /*此处用浮点数 f 而不是字符c。注意取地址符*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,(*p).score);
return 0;
}
另外 c 标准规定,main前面加int 结尾处加 return 0;
不过国内的氛围不好,很多中文教程都用 void,值得注意
int main()
{
struct student
{
long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号"); /*分号应该用英文的*/
scanf("%ld",&stu_1.num); /*此处用长整数 ld 而不是正数 d*/
printf("请输入姓名"); /*分号应该用英文的*/
scanf("%s",stu_1.name); /*此处用字符串 s 而不是正数 d*/
printf("请输入性别"); /*分号应该用英文的*/
scanf("%c",&(*p).sex); /*注意取地址符*/
printf("请输入成绩"); /*分号应该用英文的*/
scanf("%f",&p->score); /*此处用浮点数 f 而不是字符c。注意取地址符*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,(*p).score);
return 0;
}
另外 c 标准规定,main前面加int 结尾处加 return 0;
不过国内的氛围不好,很多中文教程都用 void,值得注意
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的想法是对的,不过应该注意:
1、有的编译工具是不认识汉字的。
2、&后面的变量应该加括号,scanf("%d",&(stu_1.num));我编译过是成功的。
最后的输出printf忘了输出sex,其它的很好。你不妨改正下试试。
1、有的编译工具是不认识汉字的。
2、&后面的变量应该加括号,scanf("%d",&(stu_1.num));我编译过是成功的。
最后的输出printf忘了输出sex,其它的很好。你不妨改正下试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号") ;
scanf("%d",&stu_1.num);
printf("请输入姓名");
scanf("%s",stu_1.name);
printf("请输入性别");
scanf("%c",&p->sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/
printf("请输入成绩");
scanf("%f",&p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,(*p).score);
这样改下就没问题了
struct student *p;
p=&stu_1;
printf("请输入学号") ;
scanf("%d",&stu_1.num);
printf("请输入姓名");
scanf("%s",stu_1.name);
printf("请输入性别");
scanf("%c",&p->sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/
printf("请输入成绩");
scanf("%f",&p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,(*p).score);
这样改下就没问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询