
大神看下这个编程题目,我提交的时候显示答案错误,帮忙找下错误啊 50
#include<stdio.h>#defineN105structstudent{charname[20];//姓名intaver;//平均成绩intpingYi;//...
#include <stdio.h>#define N 105struct student{ char name[20]; //姓名 int aver; //平均成绩 int pingYi; //评议成绩 char ganBu; //是否干部 char xiBu; //是否西部省份 int lunWen; //论文数 int sum;};main(){ struct student stu[N]; int i,n; int allSum=0; int max,tMax; //tMax记录奖学金最多的是否有相同 scanf("%d",&n); for(i=0;i<n;i++) scanf("%s %d %d %c %c %d",stu[i].name,&stu[i].aver,&stu[i].pingYi,&stu[i].ganBu,&stu[i].xiBu,&stu[i].lunWen); for(i=0;i<n;i++) { stu[i].sum=0; if(stu[i].aver>80&&stu[i].lunWen>=1) stu[i].sum+=8000; if(stu[i].aver>85&&stu[i].pingYi>80) stu[i].sum+=4000; if(stu[i].aver>90) stu[i].sum+=2000; if(stu[i].aver>85&&stu[i].xiBu=='Y') stu[i].sum+=1000; if(stu[i].aver>80&&stu[i].ganBu=='Y') stu[i].sum+=850; } max=0; tMax=0; for(i=1;i<n;i++) if(stu[i].sum>stu[max].sum) { max=i; tMax=0; } else if(stu[i].sum==stu[max].sum) tMax=1; for(i=0;i<n;i++) allSum+=stu[i].sum; printf("%s\n",stu[max].name); if(tMax) printf("%s\n",stu[max].name); else printf("%d\n",stu[max].sum); printf("%d\n",allSum);}
展开
1个回答
2017-04-13
展开全部
#include <stdio.h>
#define N 105
struct student {
char name[20]; //姓名
int aver; //平均成绩
int pingYi; //评议成绩
char ganBu; //是否干部
char xiBu; //是否西部省份
int lunWen; //论文数
int sum;
};
int main(void)
{
struct student stu[N];
int i,n;
//int allSum=0;
// int max,tMax; //tMax记录奖学金最多的是否有相同
scanf("%d", &n);
for(i=0; i < n; i++)
scanf("%s %d %d %c %c %d",stu[i].name,&stu[i].aver,&stu[i].pingYi,&stu[i].ganBu,&stu[i].xiBu,&stu[i].lunWen);
for(i = 0; i < n; i++) {
stu[i].sum=0;
if(stu[i].aver > 80 && stu[i].lunWen >= 1)
stu[i].sum += 8000;
if(stu[i].aver > 85 && stu[i].pingYi > 80)
stu[i].sum += 4000;
if(stu[i].aver > 90)
stu[i].sum += 2000;
if(stu[i].aver > 85 && stu[i].xiBu == 'Y')
stu[i].sum += 1000;
if(stu[i].pingYi > 80 && stu[i].ganBu == 'Y')//这里是pingYi !!!
stu[i].sum += 850;
}
putchar('\n');
int max = 0;
int sum = 0;
for (i = 0; i < n; ++i) {
if (stu[i].sum > stu[max].sum)
max = i;
sum += stu[i].sum;
}
printf("%s\n", stu[max].name);
printf("%d\n", stu[max].sum);
printf("%d\n", sum);
/*max = 0; tMax = 0;
for(i = 1; i < n; i++)
if(stu[i].sum > stu[max].sum) {
max=i;
tMax=0;
}
else if(stu[i].sum == stu[max].sum)
tMax=1;
for(i = 0; i <n ; i++)
allSum += stu[i].sum;
printf("%s\n",stu[max].name);
if(tMax)
printf("%s\n",stu[max].name);
else
printf("%d\n",stu[max].sum);
printf("%d\n",allSum);
*/
return 0;
}
最后一个if里面
if(stu[i].pingYi > 80 && stu[i].ganBu == 'Y')//这里是pingYi !!!
stu[i].sum += 850;
最后的求最大求和好像有些小错误,我只接写了我的。
你不需要记录是否有重复的,只有大于已知的最大时才记录这个就行,相等的直接不用理会,这样结果得到的就是第一个最大的,即使后面有相同的。
更多追问追答
追问
哪行错了呢
你改了哪儿呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询