0

帮助,我似乎无法在下面的代码中识别问题。

这就是我想要做的:输入一个标记列表。输入以 0 结尾(0 本身不是某人的标记)。输出 1) 得分大于等于 85 的学生人数;2) 60 到 84 之间;3)严格小于60。

这是我的代码:

#include stdio.h

int main() {
    int mark;
    int morethan85 = 0, between60and84 = 0, lessthan60 = 0;

    for (true) {
        scanf("%d", &mark);
        if (mark != 0) {
            if (mark >= 85)
                morethan85 = morethan85 + 1;
            else if (mark < 85 && mark >= 60)
                between60and84 = between60and84 + 1;
            else
                lessthan60 = lessthan60 + 1;
        } else
            break;
    }

    printf(">=85:%d, morethan85");
    printf("60-84:%d, between60and84");
    printf("<60:%d, lessthan60");

}
4

2 回答 2

3
printf(">=85:%d, morethan85");
                           ^

您正在打印纯字符串。试试这个:

printf(">=85:%d", morethan85);
               ^

此外,严格来说,传递的参数少于格式字符串所需的参数是未定义的行为。

于 2012-08-07T19:55:58.637 回答
0

哇。这里有很多东西要评论。

  1. 首先,“true”是无效的 C。您可以定义一个名为 TRUE 的宏或常量并将其设置为“1”——或者简单地使用 1。

  2. 如果你正在循环某个东西直到它中断,请使用 while() 而不是 for()。

  3. 最后,您的代码不起作用的原因是您在 printf() 函数中的变量名称之后添加了引号。

这是您的代码的工作版本:

#include <stdio.h>

int main() {
    int mark;
    int morethan85 = 0;
    int between60and84 = 0;
    int lessthan60 = 0;

    while (1) {
        scanf("%d", &mark);
        if (mark != 0) {
            if (mark >= 85)
                morethan85 ++;
            else if (mark < 85 && mark >= 60)
                between60and84 ++;
            else
                lessthan60 ++;
        } else
            break;
    }

    printf(">=85:%d\n", morethan85);
    printf("60-84:%d\n", between60and84);
    printf("<60:%d\n", lessthan60);

}
于 2012-08-07T20:02:25.230 回答