#include<stdio.h>
int main(){
int N,i,zong[1001],j,p,g;
int max=0;
struct Student{
char name[20];
int yu;
int shu;
int ying;
}student[1001];
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf("%s %d %d %d",student[i].name,&student[i].yu,&student[i].shu,&student[i].ying);
zong[i]=student[i].yu+student[i].shu+student[i].ying;
}
for(j=1;j<=N;j++){
if(zong[j]>max){
max=zong[j];
g=j;}
}
printf("%s %d %d %d",student[g].name,student[g].yu,student[g].shu,student[g].ying);
return 0;
}
修改如下,供参考:
#include<stdio.h>
int main() {
int N, i, zong[1001], j, p, g;
int max = 0;
struct Student {
char name[20];
int yu;
int shu;
int ying;
}student[1001];
scanf("%d", &N);
for (i = 0; i < N; i++) { //for (i = 1; i <= N; i++) 修改
scanf("%s %d %d %d", student[i].name, &student[i].yu, &student[i].shu, &student[i].ying);
zong[i] = student[i].yu + student[i].shu + student[i].ying;
}
max = zong[0]; g = 0; //修改
for (j = 0; j < N; j++) { //for (j = 1; j <= N; j++) 修改
if (zong[j] > max) {
max = zong[j];
g = j;
}
}
printf("%s %d %d %d", student[g].name, student[g].yu, student[g].shu, student[g].ying);
return 0;
}
g应该默认为0
否则如果输入学生成绩全是0的话,代码有问题
这题哪里用得到结构体和数组
#include<stdio.h>
int main(){
int N,max=-1;
char name[20],name1[20];
int yu,shu,wai,yu1,shu1,wai1;
scanf("%d",&N);
while(N--){
scanf("%s %d %d %d",name,&yu,&shu,&ying);
if(yu+shu+wai>max)
{
max=yu+shu+wai;
strcpy(name1,name);
yu1=yu;
shu1=shu;
wai1=wai;
}
}
printf("%s %d %d %d",name1,yu1,shu1,wai1);
return 0;
}