一道简单的C语言编程题,输出最大和最小的成绩,但是为什么编译器说答案部分正确啊 5

#include<stdio.h>typedefstruct{charname[10];charnumbers[10];intgrades;}students;intma... #include<stdio.h>
typedef struct
{
char name[10];
char numbers[10];
int grades;
}students;
int main()
{
int num, i, j;
int flag = 0;
int y, k;
students temp;
scanf("%d", &num);
students stu[1000] = { 0 };
for (i = 0; i < num; i++)
{
scanf("%s %s %d", stu[i].name, stu[i].numbers, &stu[i].grades);
}
for (j = 0; j < num; j++)
{
if (stu[j].grades == stu[j + 1].grades)
flag = 1;
}
if (flag == 0)
{
students* p = stu;
for (y = 0; y < num - 1; y++)
{
for (k = 0; k < num - 1 - y; k++)
if ((p + k)->grades < (p + k + 1)->grades)
{
temp = *(p + k);
*(p + k) = *(p + k + 1);
*(p + k + 1) = temp;
}
}

printf("%s %s\n", p->name, p->numbers);
printf("%s %s\n", (p + num - 1)->name, (p + num - 1)->numbers);
}
else
return 0;
}
展开
 我来答
xoaxa
2018-03-19 · TA获得超过8605个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3374万
展开全部
#include<stdio.h>
#define MAX 100

typedef struct {
char name[20];
char numbers[20];
int grades;
}students;

int main() {
int num, i, imax, imin;
scanf("%d", &num);
students stu[MAX] = { 0 };
for (i = 0; i < num; ++i) {
scanf("%s %s %d", stu[i].name, stu[i].numbers, &stu[i].grades);
}
imax = imin = 0;
for (i = 1; i < num && i < MAX; ++i) {
if (stu[i].grades > stu[imax].grades) imax = i;
if (stu[i].grades < stu[imin].grades) imin = i;
}
printf("最好的成绩是:%d\n",stu[imax].grades);
printf("最差的成绩是:%d\n",stu[imin].grades);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式