再生产中 2022-02-27 16:39 采纳率: 77.8%
浏览 34
已结题

C-谭浩强-11.5做不对

看了半天不知道错在哪

题目如下:

img

错误详情:

img

代码如下:

# include <stdio.h>

struct data
{
    char number;
    char name[10];
    float a[3];
};

int main()
{
    int num;
    float sum = 0;
    struct data student[10];
    scanf("%d", &num);
    getchar();
    int i;
    for (i = 0; i < num; i++)
    {
        scanf("%c%s%f%f%f", &student[i].number, student[i].name, &student[i].a[0], &student[i].a[1], &student[i].a[2]);
        getchar();
    }
    float b[3];
    int j;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < num; j++)
        {
            sum = sum + student[j].a[i];
        }
        b[i] = sum / num;
        sum = 0;
    }
    float c[10] = { 0 };
    int jishu = 0;
    for(i=0;i<num;i++)
        for (j = 0; j < 3; j++)
            c[i] = c[i] + student[i].a[j];
    for (i = 0; i < num - 1; i++)
    {
        if (c[i] > c[i + 1])
            c[i+1] = c[i];
        else jishu = jishu + 1;
    }
    for (i = 0; i < 3; i++)
        printf("%2.f ", b[i]);
    printf("\n");
    printf("%c %s %2.f %2.f %2.f", student[jishu].number, student[jishu].name, student[jishu].a[0], student[jishu].a[1], student[jishu].a[2]);
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 关注

    求最高成绩的地方不对吧,输出第一行的最后多了一个空格,用下面的代码试试:

    img

    # include <stdio.h>
    
    struct data
    {
        char number;
        char name[10];
        float a[3];
    };
    
    int main()
    {
        int num;
        float sum = 0;
        struct data student[10];
        scanf("%d", &num);
        getchar();
        int i;
        for (i = 0; i < num; i++)
        {
            scanf("%c%s%f%f%f", &student[i].number, student[i].name, &student[i].a[0], &student[i].a[1], &student[i].a[2]);
            getchar();
        }
        float b[3];
        int j;
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < num; j++)
            {
                sum = sum + student[j].a[i];
            }
            b[i] = sum / num;
            sum = 0;
        }
        float c[10] = { 0 };
        int jishu = 0;
        for(i=0;i<num;i++)
            for (j = 0; j < 3; j++)
                c[i] = c[i] + student[i].a[j];
    
        //修改部分
        for (i = 1; i < num; i++)
        {
            if (c[i] > c[jishu])
                jishu = i;//c[i+1] = c[i];
            //else jishu = jishu + 1;
        }
        for (i = 0; i < 3; i++)
        {
            if(i<2)
                printf("%2.f ", b[i]);
            else
                printf("%2.f",b[i]); //没有最后的空格
        }
        printf("\n");
        printf("%c %s %2.f %2.f %2.f", student[jishu].number, student[jishu].name, student[jishu].a[0], student[jishu].a[1], student[jishu].a[2]);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 创建了问题 2月27日

悬赏问题

  • ¥15 DEV-C++编译缺失
  • ¥33 找熟练码农写段Pyhthon程序
  • ¥100 怎么让数据库字段自动更新
  • ¥15 antv g6 力导向图布局
  • ¥15 quartz框架,No record found for selection of Trigger with key
  • ¥15 锅炉建模+优化算法,遗传算法优化锅炉燃烧模型,ls-svm会搞,后面的智能算法不会
  • ¥20 MATLAB多目标优化问题求解
  • ¥15 windows2003服务器按你VPN教程设置后,本地win10如何连接?
  • ¥15 求一阶微分方程的幂级数
  • ¥15 关于#线性回归#的问题:【统计】回归系数要转化为相关系数才能进行Fisher' Z转化吗(相关搜索:回归模型)