运行试试看~最后那里有点错误

来源:百度知道 编辑:UC知道 时间:2024/05/28 19:36:07
#include <stdio.h>
void main()

{
int i;
struct STUDENT
{
int num;
char name[20];
char sex;
int age;
float score[3];
float total,aver;
}stu[10],*p,*best=stu;

printf("请输入2个学生的信息:\n");
for(i=0;i<2;i++)
{
scanf("%d,%s,%c,%d",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].age);
}

printf("请输入2个学生的成绩:\n");
for(p=stu;p<stu+2;p++)
{
p->total=0;
for(i=0;i<3;i++)
{
scanf("%f",&(*p).score[i]);
(p->total)=(p->total)+(*p).score[i];
}
p->aver=p->total/3.0;
printf("平均成绩为:%f\n",p->aver);

}

printf("the best performed student is:\n");

for(p=stu;p<stu+2;p++)
if((p->total)>(best->total)) best=p;

printf("%d %s %c %d\n",best->num,best->name,best->sex,best->

问题不是出在最后而是出在你的输入处理上:
scanf("%d,%s,%c,%d",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].age);
你这么处理,会导致如下输入:
1,zz,m,23
其中,
1作为stu[i].num保存
zz,m,23都作为输入字符串被stu[i].name保存
而stu[i].sex,stu[i].age没有被赋值

修改后:
void main()
{
int i;
struct STUDENT
{
int num;
char name[20];
char sex;
int age;
float score[3];
float total,aver;
}stu[10],*p,*best=stu;

printf("请输入2个学生的信息:\n");
for(i=0;i<2;i++)
{
// scanf("%d,%s,%c,%d",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].age);
fflush(stdin);
scanf("%d",&stu[i].num);
fflush(stdin);
scanf("%s",stu[i].name);
fflush(stdin);
scanf("%c",&stu[i].sex);
fflush(stdin);
scanf("%d",&stu[i].age);
}

printf("请输入2个学生的成绩:\n");
for(p=stu;p<stu+2;p++)
{