关于一个C程序的问题,敬请高手不吝赐教,高分,急

摘自C语言程序设计(曾怡)第二十八讲例11.3#include<stdio.h>voidmain(){structstudent{longintnum;charname[... 摘自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.
展开
 我来答
伊人结果难u
2008-08-30 · TA获得超过1899个赞
知道大有可为答主
回答量:2501
采纳率:0%
帮助的人:2229万
展开全部
1.
printf("请输入姓名");
scanf("%d",&stu_1.name); //这是字符串类型,数组名就是首地址。用%S并不需要&。
改成。scanf("%s",stu_1.name)。
2.
printf("请输入性别");
scanf("%c",(*p).sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/ p->sex 是字符型,取址就是&(p->sex)
scanf("%C",&(p->sex));
3.printf("请输入成绩");
scanf("%c",p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
scanf("%f",p->score);
4.printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score); 指针指向符号不是下划线,是减号。
改成printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,p->score);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f7b9aa6bb
2008-08-30 · TA获得超过2250个赞
知道小有建树答主
回答量:584
采纳率:100%
帮助的人:464万
展开全部
#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);
getchar();

printf("请输入姓名");
scanf("%s",&stu_1.name);
getchar();

printf("请输入性别");
scanf("%c",&(p->sex)); //or scanf("%c",&((*p).sex));
getchar();

printf("请输入成绩");
scanf("%f",&(p->score)); //or scanf("%f",&((*p).score));
getchar();

printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",
stu_1.num, p->name, p->score); //or stu_1.num, (*p).name,(*p).score);
}

好多问题啊
第一个是分号
是全角的....
然后是scanf的修饰符
字符串用%d...

还有中间用getchar();读掉回车符
不然会直接跳过不让你输入

结构体指针访问成员我喜欢
p->成员名

继续加油!!~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
搞笑点
2008-09-11 · TA获得超过237个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:238万
展开全部
//可以了...给点分.刚才又修改了一下
#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("%s",&stu_1.name);
printf("请输入性别");
scanf("%s",&(p->sex));
printf("请输入成绩");
scanf("%f",&(p->score));
printf("学号:%ld\n姓名:%s\n性别:%c\n成绩:%.1f\n",stu_1.num,p->name,p->sex,(*p).score);
return;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniappacE4CNDxlhi0i
2008-09-14 · TA获得超过355个赞
知道小有建树答主
回答量:461
采纳率:0%
帮助的人:397万
展开全部
printf("请输入姓名");
scanf("%d",&stu_1.name);

这里应该是:

printf("请输入姓名");
scanf("%d",stu_1.name); //因为name是地址,所以不用&了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w_7849516230
2008-09-14 · 超过38用户采纳过TA的回答
知道答主
回答量:223
采纳率:0%
帮助的人:0
展开全部
#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("%ld",&p->num);
printf("请输入姓名");
scanf("%s",&p->name);
printf("请输入性别");
getchar();
scanf("%c",&p->sex); /*存如字符就行了,刚才错误是把内存中存的回车取走了!*/
printf("请输入成绩");
scanf("%f",&p->score); /*错误原因是score是浮点型的啊*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,(*p).score);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式