所以,当我认为尝试制作一个简单的阶乘计算器是个不错的主意时,我正在用循环搞乱一些东西。这是代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int num;
int ans;
printf("Enter any number: ");
scanf("%d", &num);
ans = num;
for (int i = (num-1); i = 1; --i)
{
ans *= i;
}
printf("%d! is %d \n", num, ans);
return 0;
}
非常简单。但是,我的问题是,当我必须输入一个数字(例如 5)时,scanf 永远不会停止。它没有继续执行,而是让我在按回车键后输入更多数字。事实上,它永远不会停止,我可以在它根本不运行的情况下连续数小时添加数字。知道这是为什么吗?
我用 5 进行了桌面检查!它有效,但我根本无法编译它。
谢谢。
最佳答案
这应该有效:
#include <stdio.h>
int main() {
int num;
int ans;
printf("Enter number: ");
scanf(" %d", &num);
ans = num;
for(int i = (num - 1); i > 1; --i)
ans = ans * i;
printf("%d! is %d\n", num, ans);
return 0;
}
修改:
- 将 for 循环条件中的
i = 1
更改为i > 1
。
关于C - 我的 scanf 永远不会停止接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431547/