#include
struct stu
{
int no;
char name[30];
int g[3];
int s;
int gk;
};
int main()
{ struct stu a[30];
int n;
while(scanf("%d",&n)!=EOF)
{int i,j;
for(i=0;is=0;a[i].gk=0;
scanf("%d%s",&a[i].no,&a[i].name);
for(j=0;j<3;j++)
{a[i].s=a[i].s+a[i].g[j];
if(a[i].g[j]<60)
a[i].gk=1;}}
int max=0;
for(i=0;iif(a[i].s>max&&a[i].gk==0)
max=a[i].s;}
for(i=0;iif(a[i].s==max&&a[i].gk==0)
printf("%d %s %d\n",a[i].no,a[i].name,a[i].s);}
}return 0;
}
应该是因为缺少获取每个学生3门成绩的代码,所以导致获取输入错误,而让程序异常了。补上获取每个学生3门成绩的代码即可。
修改如下:
#include <stdio.h>
struct stu
{
int no;
char name[30];
int g[3];
int s;
int gk;
};
int main()
{
struct stu a[30];
int n;
while(scanf("%d",&n)!=EOF)
{
int i,j;
for(i=0; i<n; i++)
{
a[i].s=0;
a[i].gk=0;
scanf("%d%s",&a[i].no,a[i].name);
for(j=0; j<3; j++)
{
scanf("%d",&(a[i].g[j])) ;// 增加每组中获取每个学生3门成绩的代码即可
a[i].s=a[i].s+a[i].g[j];
if(a[i].g[j]<60)
a[i].gk=1;
}
// printf("input:%d %s %d,gk=%d\n",a[i].no,a[i].name,a[i].s,a[i].gk);
}
int max=0;
for(i=0; i<n; i++)
{
if(a[i].s>max&&a[i].gk==0)
max=a[i].s;
}
// printf("max=%d\n",max);
for(i=0; i<n; i++)
{
if(a[i].s==max&&a[i].gk==0)
printf("%d %s %d\n",a[i].no,a[i].name,a[i].s);
}
}
return 0;
}