我是C的新手。对于以下程序,问题是:无论输入什么整数,输出都是1.你能告诉我问题在哪里吗?
#include <stdio.h>
int main(void)
{
int n;
n = scanf("%d", &n);
printf("%d\n", n);
}
答案 0 :(得分:2)
因为您正在打印scanf()
的返回值。 scanf()返回成功扫描的值的数量。
更改行:
n = scanf("%d", &n);
为:
scanf("%d", &n);
或者,如果您想验证输入是否成功,请使用其他变量:
if (scanf("%d", &n)! = 1 ) {
/* Input failure */
}
答案 1 :(得分:2)
scanf
返回读取的有效值的数量。在您的示例中,首先将值读入n
,这将进一步替换为当前实现中始终为scanf
的{{1}}的返回值,只要您输入有效整数为输入。
答案 2 :(得分:1)
scanf()
返回成功阅读的项目数。因此,如果您将其分配给n
,则n
将包含1(如果读取的整数没有错误)。
总而言之:将代码更改为
scanf("%d", &n);
并阅读了一本关于C的好书。
答案 3 :(得分:0)
您的错误在
中n = scanf(“%d”,&amp; n);
将其更改为
scanf("%d", &n);
它应该没问题