跪求这道c++的答案,我的答案哪里错了呢???? 15

Description所谓NO.1,就是所有成绩都排在第一的同学,我们假设每个人只有理科,文科,体育这三门课。我们现在假设某门成绩并列第一,并列的人都是这门功课第一名,并... Description
所谓NO.1,就是所有成绩都排在第一的同学,我们假设每个人只有理科,文科,体育这三门课。我们现在假设某门成绩并列第一,并列的人都是这门功课第一名,并且保证数据不会出现2个NO.1现给定n个人的信息,输出第一面的名字。
Input
多组数据,输入文件第一行为一个整数T,代表测试数据数。 (T<50)接下来T个测试数据。 每个测试数据的的第一行为一个整数n(n<=100),接下来有n行,每行的格式如下: 名字 理科成绩 文科成绩 体育成绩 (数值越高代表成绩越好).名字长度不超过20,3个成绩的为正整型.
Output
对于每个测试数据,输出NO.1的名字,如果不存在第一名,就输出"NO NO.1".
Sample Input
3
2
lvhao 2 2 2
xiaoshua 1 1 1
2
lvhao 4 4 4
xiaoshua 4 4 3
3
lvhao 3 4 5
xiaoshua 1 3 1
pan 4 1 5Sample Output
lvhao
lvhao
NO NO.1

#include<stdio.h>
#include<math.h>
struct student
{
char name[8];
int score[4];
}stu[50];
int main()
{
int m,n,i,j,k,max,maxj[3];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&m);
for(j=0;j<m;j++)
{
scanf("%s",stu[j].name);
for(k=0;k<3;k++)
{
scanf("%d",&stu[j].score[k]);
}
}
max=0;
for(k=0;k<3;k++)
{
for(j=0;j<m;j++)
{
if(stu[j].score[k]>max)
{
max=stu[j].score[k];
maxj[k]=j;
}
}
}
if(maxj[0]==maxj[1]&&maxj[1]==maxj[2]) printf("%s\n",stu[maxj[0]].name);
else printf("NO NO.1\n");
}
}
return 0;
}
展开
 我来答
凝结了的柔情
2012-12-12 · TA获得超过169个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:115万
展开全部
变量m表示什么?
还有最好在每个scanf()语句前加printf()语句提示用户要输入什么内容,因为你这代码的 scanf()语句太多了而且还是连续在一起的。这样会提高程序的可读性
还有程序头文件上面的内容干嘛的?!
while(scanf("%d",&n)!=EOF)判断输入的内容不为回车键?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
今笑掩昨泪
2012-12-19
知道答主
回答量:16
采纳率:0%
帮助的人:2.3万
展开全部
楼主你找到错误的地方了吗?求分享啊。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式