lune23333 2023-11-20 17:21 采纳率: 50%
浏览 8
已结题

为什么每次for循环中,尽管第二个if里的条件没成立,里面的程序也会每次都被执行?

提问,闰年问题for循环中出现的的问题
为什么修改前,每次for循环中,尽管第二个if里的条件没成立,里面的程序也会每次都被执行?(即为什么每次循环都会打印\n)

修改前

#include<stdio.h>
int main()
{
    int i,n=0,a;
    for(i=1900;i<=2000;i++)
    {
    if((i%4==0&&i%100!=0)||i%400==0)
    {printf("%d  ",i);n++;}
    if(n%3==0)
    {printf("\n");}
    } 
    return 0;
    
}

错误结果如下

img

修改后

#include<stdio.h>
int main()
{
    int i,n=0,a;
    for(i=1900;i<=2000;i++)
    {
    if((i%4==0&&i%100!=0)||i%400==0)
    {printf("%d  ",i);n++;
    if(n%3==0)
    printf("\n");}
    } 
    return 0;
    
}

正确结果如下

img

  • 写回答

2条回答 默认 最新

  • 虫鸣@蝶舞 2023-11-20 18:24
    关注

    我先说下关键点,之前的代码把第两个if排除在n不是闰年的条件之外,可能你写代码没有格式缩进,所以当3个闰年输出后,不管每行的第三个闰年都会输出换行,举个例子,1996 2000 2004,在2004之后n在不是闰年的时候如2005 2006 2007,都是n=3,所以会出现这个多空行bug,而解决的方法就是让第二个if,在第一个if为true时执行,你修改的代码正好解决了这个问题,我建议你养成编写代码好的缩进习惯和编程思路,给你个完整版的gpt代码参考。
    以下是gpt生成
    这段代码是用于打印1900年到2000年之间的所有闰年,并且每打印3个闰年就换行。这个代码多输出空行的原因在于printf("\n")的位置和条件判断。

    问题在于当n是3的倍数时,无论当前年份是否是闰年,都会执行printf("\n")。这意味着即使最后一个打印的年份不是一行的第三个闰年,代码仍会打印一个换行符。

    要修复这个问题,你可以调整条件,使得换行只在打印了3个闰年之后发生。代码应该像这样修改:

    #include<stdio.h>
    int main()
    {
        int i, n = 0;
        for(i = 1900; i <= 2000; i++)
        {
            if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
            {
                printf("%d  ", i);
                n++;
                if(n % 3 == 0)
                {
                    printf("\n");
                }
            }
        }
        return 0;
    }
    

    在这个修改后的版本中,printf("\n")只在一个闰年被打印并且n是3的倍数时执行,从而避免了多余的空行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月20日

悬赏问题

  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上
  • ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用
  • ¥15 ESP-IDP-BLE配网连接wifi