#include
struct student
{
char name[10];
char num[20];
int score;
}student[50],max,min;
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;iscanf("%s%s%d",student[i].name,student[i].num,&student[i].score);
}
max=student[0];
for(i=1;iif(student[i].score>max.score)
{
min=max;
max=student[i];
continue;
}
}
printf("%s %s\n",max.name,max.num);
printf("%s %s\n",min.name,min.num);
return 0;
}
错误结果:
min和max你记录序号就可以了
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[10];
char num[20];
int score;
}student[50];
int max,min;
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%d",student[i].name,student[i].num,&student[i].score);
}
min = max = 0;
for(i=1;i<n;i++)
{
if(student[i].score<student[min].score)
{
min = i;
}
if(student[i].score>student[max].score)
{
max = i;
}
}
printf("%s %s\n",student[max].name,student[max].num);
printf("%s %s\n",student[min].name,student[min].num);
return 0;
}
min你没有进行比较,min需要单独进行比较得出。
修改后的测试结果:
代码修改如下:
#include<stdio.h>
struct student
{
char name[20];//这里空间大一些
char num[20];
int score;
}student[50], max, min;
int main()
{
int n, i;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s%s%d", student[i].name, student[i].num, &student[i].score);
}
max = student[0];
min = student[0]; //修改
for (i = 1; i < n; i++)
{
if (student[i].score > max.score)
max = student[i];
if (student[i].score < min.score)
min = student[i];
}
printf("%s %s\n", max.name, max.num);
printf("%s %s\n", min.name, min.num);
return 0;
}
min需要另外比较吧。你的代码min看起来只是次于max的第二名,输入两组数据才会对。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!