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

为什么C语言main函数中仅第一个for循环的内容可以正常打印

问题原因

所有for循环都复用了存储输入起始值的变量a作为循环变量:第一个遍历质数的for循环执行完成后,a的值已经自增到b + 1,后续三个for循环直接使用此时的a作为初始值,天然不满足a <= b的循环执行条件,因此后续循环完全不会执行,无任何输出。

修复方案

每次执行新的遍历前,将循环变量重置为用户输入的起始值即可,推荐以下实现方式:

  • 单独定义临时循环变量,不要复用存储输入参数的原始变量,避免误改输入值
    修改后的代码如下:
// 标准C规范下main函数返回值为int,不推荐使用void main
int main(void){
    int a, b, i;
    printf("\n Hello, how are you? Please enter the two numbers: \n");
    scanf("%d %d", &a,&b);
    
    printf("\n isPrime numbers: \n");
    for(i = a; i<=b; i++){
        if(isPrime(i) == 1){
            printf("%d, ", i);         
        } 
    } 
    
    printf("\n isStrong numbers: \n");
    for(i = a; i<=b; i++){
        if(isStrong(i) == 1){
            printf("%d, ", i);          
        } 
    } 
    
    printf("\n isPalindrome numbers: \n");
    for(i = a; i<=b; i++){
        if(isPalindrome(i) == 1){
            printf("%d, ", i);          
        } 
    } 
    
    printf("\n isArmostrong numbers: \n");
    for(i = a; i<=b; i++){
        if(isArmstrong(i) == 1){
            printf("%d, ", i);          
        } 
    } 
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:24:10