学不会c语言不改名. 2021-12-04 17:52 采纳率: 100%
浏览 93
已结题

c语言程序中我想输入一个学号,但是后面输出的学号是乱码

学号那一项该怎么改才正确。

#include <stdio.h>
#define N 30
int ave(int a);
int i, max;
float a, b, c, d, e, f;
int score[N];
char name[N][10];
int number[N][1];

int main () {
    int counter1 = 0, counter2 = 0, counter3 = 0, counter4 = 0, counter5 = 0, counter6 = 0;
    for (i = 0; i < N; i++) {
        printf ("名字:\t");
        scanf ("%s", &name[i]);
        printf("成绩:\t");
        scanf("%d", &score[i]);
        printf("学号:\t");
        scanf("%d", &number[i]);
        if (score[i] < 0)
            break;
        else if (score[i] >= 90)
            counter1++;
        else if (score[i] >= 80)
            counter2++;
        else if (score[i] >= 70)
            counter3++;
        else if (score[i] >= 60)
            counter4++;
        else
            counter5++;
    }
    int p, j;
    f = ave(a);
    for (p = 0; p < N; p++) {
        if (score[p] > f)
            counter6++;
    }
    max = score[0];
    for (j = 0; j < N; j++) {
        if (max < score[j])
            max = score[j];
    }
    a = (counter1 * 100.0 / N);
    b = (counter2 * 100.0 / N);
    c = (counter3 * 100.0 / N);
    d = (counter4 * 100.0 / N);
    e = (counter5 * 100.0 / N);
    printf("最高分是:%d分,其学号为:%d\n", max, number[i]);
    printf("不及格有:%d人,所占百分比为:%.2f%%\n", counter5, e);
    printf("分数>=90占百分比为:%.2f%%\n", a);
    printf("90>分数>=80占百分比为:%.2f%%\n", b);
    printf("80>分数>=70占百分比为:%.2f%%\n", c);
    printf("70>分数>=60占百分比为:%.2f%%\n", d);
    printf("在平均分数之上的有:%d人\n", counter6);
    return 0;
}

int ave(int a) {
    int total = 0, i, b;
    for (i = 0; i < N; i++) {
        total += score[i];
    }
    b = total / N;
    return b;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-12-04 19:48
    关注

    修改处见注释,供参考:

    #include <stdio.h>
    #define N 30
    int ave(int a);
    int i, max, max_i;  //修改
    float a, b, c, d, e, f;
    int  score[N];
    char name[N][10];
    int  number[N];   // number[N][1];  修改
    int main () {
        int counter1 = 0, counter2 = 0, counter3 = 0, counter4 = 0, counter5 = 0, counter6 = 0;
        for (i = 0; i < N; i++) {
            printf ("名字:\t");
            scanf ("%s", &name[i]);
            printf("成绩:\t");
            scanf("%d", &score[i]);
            printf("学号:\t");
            scanf("%d", &number[i]);
            if (score[i] < 0)
                break;
            else if (score[i] >= 90)
                counter1++;
            else if (score[i] >= 80)
                counter2++;
            else if (score[i] >= 70)
                counter3++;
            else if (score[i] >= 60)
                counter4++;
            else
                counter5++;
        }
        int p, j;
        f = ave(a);
        for (p = 0; p < N; p++) {
            if (score[p] > f)
                counter6++;
        }
        max = score[0];max_i=0;  //修改
        for (j = 0; j < N; j++) {
            if (max < score[j])     
            {
                max  = score[j];
                max_i= j;           //修改
            }
        }
        a = (counter1 * 100.0 / N);
        b = (counter2 * 100.0 / N);
        c = (counter3 * 100.0 / N);
        d = (counter4 * 100.0 / N);
        e = (counter5 * 100.0 / N);
        printf("最高分是:%d分,其学号为:%d\n", max, number[max_i]); //修改
        printf("不及格有:%d人,所占百分比为:%.2f%%\n", counter5, e);
        printf("分数>=90占百分比为:%.2f%%\n", a);
        printf("90>分数>=80占百分比为:%.2f%%\n", b);
        printf("80>分数>=70占百分比为:%.2f%%\n", c);
        printf("70>分数>=60占百分比为:%.2f%%\n", d);
        printf("在平均分数之上的有:%d人\n", counter6);
        return 0;
    }
    int ave(int a) {
        int total = 0, i, b;
        for (i = 0; i < N; i++) {
            total += score[i];
        }
        b = total / N;
        return b;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月12日
  • 已采纳回答 12月4日
  • 修改了问题 12月4日
  • 创建了问题 12月4日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line