帮助,我似乎无法在下面的代码中找出问题。
这是我想要做的:输入标记列表。输入以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");
}
答案 0 :(得分:3)
printf(">=85:%d, morethan85"); ^
你正在打印普通字符串。试试这个:
printf(">=85:%d", morethan85);
^
另外,严格来说,传递的参数少于格式字符串所需的参数是未定义的行为。
答案 1 :(得分:0)
哇。很多东西都在这里评论。
首先,“true”无效C.您可以定义名为TRUE的宏或常量并将其设置为“1” - 或者只使用1。
如果你循环浏览某些内容直到它中断,请使用while()而不是()。
最后,您的代码无效的原因是您在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);
}