再生产中 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 hexo+github部署博客
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?