为什么我输入数字以后才 printf啊?什么原因啊?

img


感觉我运行的没有错,为什么显示控制台上的时候printf后输出😂

少了花括号,这里没出来

img

int main() {
    int i, n, iSum = 0;
    printf("请输入数字:");
    scanf("%d", &n);
    for (i = 1; i < n / 2; i++) {
        if (n % i == 0) {
            iSum += i;
        }
    }
    if (iSum == n) {
        printf("是完数");
    } else {
        printf("不是完数");
    }
}


第113行:for (i = 1; i < n / 2; i++) 循环条件 i < n / 2 不正确,应修改为:for (i = 1; i <= n / 2; i++)

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7724823
  • 这篇博客也不错, 你可以看下根据用户输入的值,调整printf的输出精度
  • 除此之外, 这篇博客: printf 详解 - 你所不知道的printf用法中的 ①直接输出字符串 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 输出格式 : printf("hello world!");

    printf输出字符串的方式有很多,在我们最开始学习C语言时,我们会输出"hello world!",这样的方式属于直接输出字符串。它是根据'h'的地址向后一个一个进行打印,直到遇到'\0'才会停止,而"hello world!'\0'"其实是有'\0'的,只是被隐藏了,在这里我就不细讲了,后面我会出一期字符串的相关知识进行解释。当然我们也不需要这么复杂的去这样记,这里是为第二种输出方式做铺垫的。

  • 您还可以看一下 李南江老师的零基础学会C语言课程中的 printf函数宽度和标志(掌握) 小节, 巩固相关知识点