You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言for循环为何仅输出最终结果而非逐次迭代内容?

问题原因:for循环末尾的多余分号导致逻辑偏离

你的代码里有个很容易犯的语法小错误——for (i = 1; i <= num; i++); 这一行末尾的分号。

在C语言里,分号代表一个空语句,也就是说这个for循环的循环体就是什么都不执行,只是单纯让变量i从1开始递增,直到i的值超过你输入的num(比如输入5时,i会一直加到6,此时i <= num不成立,循环终止)。

而你写的printf("%d", i);不在循环体内,是循环结束后才会执行的语句,自然只会输出一次循环结束后的i值,也就是num + 1,这就是为什么输入5会输出6。

要实现每次循环都输出i的需求,只需要去掉for循环末尾的分号,让printf成为循环体的一部分即可,规范起见也可以用大括号把循环体括起来:

修正后的代码示例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num, i;

    printf("Enter a Number: ");
    scanf("%d", &num);

    // 去掉分号,用大括号包裹循环体(推荐写法,可读性更强)
    for (i = 1; i <= num; i++) {
        printf("%d ", i); // 加个空格让输出的数字更易区分
    }

    return 0;
}

这样输入5时,就会依次输出1 2 3 4 5了。

内容的提问来源于stack exchange,提问作者user17651225

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:24:41