【发布时间】:2020-06-11 07:05:21
【问题描述】:
我编写了一个 C 程序来查找 5 个学生的成绩点。如果学生失败,我会显示正确的结果,但当所有学生都通过时,它不会显示任何答案。请帮我解决它。 代码:
#include <stdio.h>
int main()
{
int mark[5], failed = 0, sum = 0;
for (int i = 0; i < 5; i++) scanf("%d", &mark[i]);
for (int i = 0; i < 5; i++)
{
sum = sum + mark[i];
if (mark[i] < 40) failed++;
}
double marks = (double)((sum / 500) * 100);
if (failed > 0) printf("Ops! Failed\n");
else
{
if (marks >= 90) printf("%d%%: Grade A", marks);
else if (marks >= 80 && marks <= 89) printf("%.2lf%%: Grade B\n", marks);
else if (marks >= 70 && marks <= 79) printf("%.2lf%%: Grade C\n", marks);
else if (marks >= 60 && marks <= 69) printf("%.2lf%%: Grade C\n", marks);
else if (marks >= 40 && marks <= 59) printf("%.2lf%%: Grade D\n", marks);
}
return 0;
}
【问题讨论】:
-
printf("%d%%: Grade A", marks);-->printf("%.0f%%: Grade A", marks); -
请不要张贴文字图片。将文本作为文本发布。
-
你在做整数除法,把
(double)((sum / 500) * 100);改成(((double)sum / 500) * 100); -
请问,您为什么更改了代码?按要求回滚到问题。
-
谢谢天气风向标先生。有用。非常感谢。
标签: c floating-point precision integer-division integer-arithmetic