我的代码在第二个分数后停止接受输入并结束执行。我想不出为什么会这样做 下面的代码接受我的第一个和第二个分数输入,跳过第三个,然后结束执行而不进一步。
下面的 C 代码在第二个之后停止接受输入并退出。它接受第一个和第二个输入,跳过第三个输入,然后退出。
如何解决此错误?以下是我提供的代码。
#include <stdio.h>
int main(void)
{
int scores[3];
int x;
int y;
int z;
printf("first score is:\n");
scanf("%i", x);
scores[0] = x;
printf("second score is:\n");
scanf("%i", y);
scores[1] = y;
printf("third score is:\n");
scanf("%i", z);
scores[2] = z;
printf("average is %f\n", (scores[0]+scores[1]+scores[2])/(float)3);
}
令我惊讶的是该程序甚至在编译时没有出现警告或错误。
scanf
将指向 int
的指针作为第二个参数。所以它应该是:
scanf("%i", &x);
您需要将变量的地址传递给
scanf
才能使其正常工作。
#include <stdio.h>
int main(void)
{
int scores[3];
int x;
int y;
int z;
printf("first score is:\n");
scanf("%i", &x);
scores[0] = x;
printf("second score is:\n");
scanf("%i", &y);
scores[1] = y;
printf("third score is:\n");
scanf("%i", &z);
scores[2] = z;
printf("average is %f\n", (scores[0]+scores[1]+scores[2])/(float)3);
}
当然,
x
、y
、z
都是多余的。
#include <stdio.h>
int main(void)
{
int scores[3];
printf("first score is:\n");
scanf("%i", &scores[0]);
printf("second score is:\n");
scanf("%i", &scores[1]);
printf("third score is:\n");
scanf("%i", &scores[2]);
printf("average is %f\n", (scores[0]+scores[1]+scores[2])/(float)3);
}
您应该每次检查
scanf
返回 1
,表明它已成功读取一个值。如果没有,您应该采取一些措施,否则您正在使用初始化的数据,这意味着您的程序可以打印anything。