C - 我的 scanf 永远不会停止接受输入

标签 c for-loop compilation scanf factorial

所以,当我认为尝试制作一个简单的阶乘计算器是个不错的主意时,我正在用循环搞乱一些东西。这是代码:

#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;
}

修改:

  1. 将 for 循环条件中的 i = 1 更改为 i > 1

关于C - 我的 scanf 永远不会停止接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431547/

相关文章:

c - 我需要帮助理解这段 C 代码

c - 编写 LLVM pass 以检测 malloc 函数调用、分配的字节数和指向该内存的变量名称

java - 如何让我的文字之一垂直打印?

Java使用数组查找重复项(包含概念)

python - 创建奇数索引python的总和

c - 这是 C11 匿名结构吗?

c - 编写 AT 命令嵌入式 linux

java - 构建错误,Gradle -> 错误 :Execution failed for task ':app:preDexDebug' . > org.gradle.process.internal.ExecException:

linux - 尝试构建 rdiff-backup,出现错误 "/usr/bin/ld: cannot find -lrsync"

c++ - 为什么带有 const 参数的函数声明允许调用带有非常量参数的函数?