c语言的高手们来看一下!求救!

2025-03-12 03:37:17
推荐回答(2个)
回答1:

应该是上学期就已经学过C语言了吧?
这个程序里面有很多错误,不知道你是把书本中的改错题拿过来了还是你在输入过程中粗心导致,说能运行肯定不是事实。
认认真真改一下吧,输入是最基本应该掌握的知识。
我把程序改得面目全非了,由于已经没有时间了,就不一一给你注释了。学好一门编程语言的最好的方法就是用它来写程序,很值得花大量时间在上面。
#include

float p(float,float,float);
struct student
{
int number;
char name[20];
float score1;
float score2;
float score3;
}a[5];

void main()
{
float aver[5],Aver;
int i,j;
struct student *p1;
printf("请输入五个同学的学号,姓名,以及3门课的成绩:\n");
for(i=0;i<5;i++)
{
scanf("%d%s%f%f%f",&a[i].number,a[i].name,&a[i].score1,&a[i].score2,&a[i].score3);
aver[i]=p(a[i].score1,a[i].score2,a[i].score3);
}

Aver=aver[0];
for(i=0;i<5;i++)
{
if(Aver j=i;
}
p1=&a[j];
for(i=0;i<5;i++)
printf("第%d名学生成绩情况:%s %d %f %f %f %f\n",i,a[i].name,a[i].number,a[i].score1,a[i].score2,a[i].score3,aver[i]);
printf("最高分的学生的数据:%d %s %f %f %f %f\n",(*p1).number,(*p1).name,(*p1).score1,(*p1).score2,(*p1).score3,Aver);
}

float p(float x,float y,float z)
{
float sum=0,s;
sum=x+y+z;
s=sum/3.0;
return(s);
}

输入和运行结果在下面:
请输入五个同学的学号,姓名,以及3门课的成绩:
23 xiao 89 78 67
24 yu 84 75 96
25 ting 86 95 72
26 yung 87 59 64
27 ring 75 94 82
第0名学生成绩情况:xiao 23 89.000000 78.000000 67.000000 78.000000
第1名学生成绩情况:yu 24 84.000000 75.000000 96.000000 85.000000
第2名学生成绩情况:ting 25 86.000000 95.000000 72.000000 84.333336
第3名学生成绩情况:yung 26 87.000000 59.000000 64.000000 70.000000
第4名学生成绩情况:ring 27 75.000000 94.000000 82.000000 83.666664
最高分的学生的数据:27 ring 75.000000 94.000000 82.000000 85.000000
Press any key to continue

回答2:

scanf("%d,%s,%f,%f,%f",a[i].name,a[i].number,a[i].score1,a[i].score2,a[i].score3);
这句就是获得数据的语句呀