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

c语言代码运行出现逻辑错误,如何解决?

这一段代码能正常运行但是都是错误数据





#include <stdio.h>
#define N 5
int ave(int a);
int i, max;
int a, b, c, d, e, f;
int score[N];

int main () {
    printf ("输入小于30人的学生成绩\n");
    int counter1 = 0, counter2 = 0, counter3 = 0, counter4 = 0, counter5 = 0, counter6 = 0;
    for (i = 0; i < N; i++) {
        scanf("%d", &score[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, o;
    f = ave(a);
    for (p = 0; p < N; p++) {
        if (score[p] > f)
            counter6++;
        else
            break;
    }
    max = score[0];
    for (o = 0; o < N; o++) {
        if (max < score[o])
            max = score[o];
        else
            break;
    }
    a = (counter1 / N);
    b = (counter2 / N);
    c = (counter3 / N);
    d = (counter4 / N);
    e = (counter5 / N);
    printf("最高分为:%d\n", max);
    printf("不及格有:%d人,所占百分比为:%d%%\n", &counter5, &e);
    printf("分数>90占百分比为:%d%%\n", &a);
    printf("90=>分数>80占百分比为:%d%%\n", &b);
    printf("80=>分数>70占百分比为:%d%%\n", &c);
    printf("70=>分数>60占百分比为:%d%%\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条回答 默认 最新

  • 椰子zii 2021-12-04 16:21
    关注
    
    #include <stdio.h>
    #define N 5
    int ave(int a);
    int i, max;
    float a, b, c, d, e, f;
    int score[N];
    int main () {
       printf ("输入小于30人的学生成绩\n");
       int counter1 = 0, counter2 = 0, counter3 = 0, counter4 = 0, counter5 = 0, counter6 = 0;
       for (i = 0; i < N; i++) {
           scanf("%d", &score[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, o;
       f = ave(a);
       for (p = 0; p < N; p++) {
           if (score[p] > f)
               counter6++;
       }
       max = score[0];
       for (o = 0; o < N; o++) {
           if (max < score[o])
               max = score[o];
       }
       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\n", max);
       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;
       float b;
       for (i = 0; i < N; i++) {
           total += score[i];
       }
       b = total*1.00 / N;
       return b;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换