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;
}

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

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;
}


结构体中float a[3];定义为int类型再提交试试
我给你都改了

# include <stdio.h>

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

int main()
{
    int num;
    int sum = 0;
    struct data student[10];
    scanf("%d", &num);
    getchar();
    int i;
    for (i = 0; i < num; i++)
    {
        scanf("%c%s%d%d%d", &student[i].number, student[i].name, &student[i].a[0], &student[i].a[1], &student[i].a[2]);
        getchar();
    }
    int 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;
    }
    int 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("%d ", b[i]);
    printf("\n");
    printf("%c %s %d %d %d", student[jishu].number, student[jishu].name, student[jishu].a[0], student[jishu].a[1], student[jishu].a[2]);
    return 0;
}
 /*
 2
1 blue 90 80 70
b clan 80 70 60
*/


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632