#include <stdio.h>
int main(void)
{
total = 0;
counter = 1;
while(counter <= 10)
{
printf("%s", "Enter grade: ");
scanf("%d", &grade);
total = total + grade;
counter = counter + 1;
}
average = total / 10;
printf("%d", "average is:", average);
}
我尝试计算 10 个数字的平均值。我做错了什么?
printf("%d", "average is:", average);
告诉 printf
获取 int
并将其打印为十进制数字,但 "average is:"
向其传递字符串的地址而不是 int
。您应该使用 printf("The average is %d.\n", average);
。
在启用警告并提升为错误的情况下进行编译。对于 Clang,从
-Wmost -Werror
开始。对于 GCC,从 -Wall -Werror
开始。对于 MSVC,从 /W3 /WX
开始。
一旦你开始工作,请考虑制作
average
和 total
double
而不是 int
。然后您需要将 %d
更改为其他格式。
做数学时要求,必须声明 double,或者带除法的 float。为了获得最准确的结果。如果不需要获取结果的浮点数,则不需要。
这种情况下,除法运算,必须先将int类型转换为float类型。 或转换为浮点数,结果将是正确的。 它并不总是一位数结果的平均值。
这是必须知道的规则。
a = b / (c * 1.0)
或:
a = (float)b / c or a = (b * 1.0)/c
或者如果所有变量都声明为 float 或 double,则什么也不做。
double total = 0.0;
int counter = 1;
while(counter <= 10)
{
printf("Enter grade: ");
scanf("%lf", &grade);
total = total + grade;
counter = counter + 1;
}
double average = total / 10;
printf("average is: %lf", average);