大神看下这个编程题目,我提交的时候显示答案错误,帮忙找下错误啊 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);} 展开
 我来答
匿名用户
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;

最后的求最大求和好像有些小错误,我只接写了我的。

你不需要记录是否有重复的,只有大于已知的最大时才记录这个就行,相等的直接不用理会,这样结果得到的就是第一个最大的,即使后面有相同的。

更多追问追答
追问
哪行错了呢
你改了哪儿呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式