编程 结构体 输入5个学生的各项信息 输出平均分和总分 我这个程序输出的结果不对 求解答 速度。。。
#include<stdio.h>structstudent{intnum;charname[20];intscore1;intscore2;intscore3;}stu...
#include<stdio.h>
struct student
{
int num;
char name[20];
int score1;
int score2;
int score3;
}stu[5];
main()
{
int i;
int c;
for(i=0;i<5;i++)
{
scanf("%d,%s,%d,%d,%d\n",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,stu[i].score3);
}
for(i=0;i<5;i++)
{
c=f(stu[i].score1,stu[i].score2,stu[i].score3);
printf("%d,%s,%d,%d\n",stu[i].num,stu[i].name,c,c/3);
}
}
int f(int x,int y,int z)
{
int sum;
sum=x+y+z;
return (sum);
} 展开
struct student
{
int num;
char name[20];
int score1;
int score2;
int score3;
}stu[5];
main()
{
int i;
int c;
for(i=0;i<5;i++)
{
scanf("%d,%s,%d,%d,%d\n",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,stu[i].score3);
}
for(i=0;i<5;i++)
{
c=f(stu[i].score1,stu[i].score2,stu[i].score3);
printf("%d,%s,%d,%d\n",stu[i].num,stu[i].name,c,c/3);
}
}
int f(int x,int y,int z)
{
int sum;
sum=x+y+z;
return (sum);
} 展开
展开全部
这段代码问题就在于
scanf("%d,%s,%d,%d,%d\n",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,stu[i].score3);
经过调试,发现2个问题
第一个:stu[i].score3前面没&,应该是笔误,因为前面的都写了。
第二个:中间有个%s,这段代码的作者本意是输入“序号,名字,分数...” 中间用逗号隔开,而%s把后名字后面所有的输入都当成一个字符串存到name中去了。
问题解决:
方法1:改为
scanf("%d %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
但是这样修改会强制要求用空格作为分隔符,而不是逗号,能接受吗?
方法2:改为
scanf("%d,%[^,],%d,%d,%d",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
依然使用逗号作为分隔符,用scanf 扫描集%[^,]代替%s。
scanf("%d,%s,%d,%d,%d\n",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,stu[i].score3);
经过调试,发现2个问题
第一个:stu[i].score3前面没&,应该是笔误,因为前面的都写了。
第二个:中间有个%s,这段代码的作者本意是输入“序号,名字,分数...” 中间用逗号隔开,而%s把后名字后面所有的输入都当成一个字符串存到name中去了。
问题解决:
方法1:改为
scanf("%d %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
但是这样修改会强制要求用空格作为分隔符,而不是逗号,能接受吗?
方法2:改为
scanf("%d,%[^,],%d,%d,%d",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
依然使用逗号作为分隔符,用scanf 扫描集%[^,]代替%s。
展开全部
首先,main函数前面怎么没类型标识符(int main()或void main()才对);
其次,scanf用法写错了("%d,%s,%d,%d,%d....)中间这个逗号不该有的,连着写(“%d%s%d。。”);目前发现这么多,没有上机调试,你先改改吧。
其次,scanf用法写错了("%d,%s,%d,%d,%d....)中间这个逗号不该有的,连着写(“%d%s%d。。”);目前发现这么多,没有上机调试,你先改改吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结构体定义应在主函数内
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询