进阶的光头 2023-03-21 18:06 采纳率: 66.7%
浏览 30
已结题

C语言中for循环嵌套,内循环遇到break语句结束本次内循环 ,输出会换行吗?

C语言中for循环嵌套,内循环遇到break语句结束本次内循环 ,为什么第三行会直接换行呢?求解

img

img

  • 写回答

1条回答 默认 最新

  • a5156520 2023-03-21 18:23
    关注

    因为当i=3,j=1时,n为10,打印一个换行,然后就break跳出了内层循环,n没有++,仍为10;

    然后当外层循环开始新一轮循环时,i=4,j=1,进入到内层循环,n=10,n%5还是等于0,加上前面n=10时打印的一个换行,和这次的又一个换行,所以就显示为第三行直接空行了。(可以在第一个if中加个打印语句,观察下i,j,n的值的变化)。

    如果要不显示第三行的空行,可以在判断打印换行的if加个条件:i!=3即可;如果第一行数字之前的空行也不要,可以再加个条件:n!=0.

    测试代码如下:

    #include <stdio.h>
    
    int main(void){
        
        int i,j,n=0;
        
        for(i=1;i<=4;i++){
            
            for(j=1;j<=5;j++,n++){
                
                if(n%5==0&&i!=3&&n!=0){  // 当i==3,j==1时,n=10,此时会打印一个换行,光标跳转到第三行(以显示第一次显示数字的那行为第一行) 
                //    printf("i=%d,j=%d,n=%d",i,j,n);
                    printf("\n");
                }
                
     // 然后break退出了,n没有++,此时n仍等于10,
     //下次再进入内层循环,i=4,j=1时,前面的if还要打印一个换行 ,此时会光标会跳转到第四行(以显示第一次显示数字的那行为第一行) 
     // 所以,因为这两个换行,而显示出第三行空行了
     // 如果要让第三行不空行,可以在上面的if加个条件i!=3 ,如果第一行数字之前的空行也不要,可以再加个条件n!=0    
                if(i==3&&j==1){
                    break;
                }
                
                printf("%d\t",i*j);
            }
        }
        
        return 0;
    } 
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?
  • ¥20 用户端如何上传图片到服务器和数据库里
  • ¥15 现在研究生在烦开题,看了一些文献,但不知道自己要做什么,求指导。
  • ¥30 vivado封装时总是显示缺少一个dcp文件
  • ¥100 pxe uefi启动 tinycore
  • ¥15 我pycharm运行jupyter时出现Jupyter server process exited with code 1,然后打开cmd显示如下
  • ¥15 可否使用carsim-simulink进行四轮独立转向汽车的联合仿真,实现四轮独立转向汽车原地旋转、斜向形式、横移等动作,如果可以的话在carsim中如何进行相应设置
  • ¥15 Caché 2016 在Java环境通过jdbc 执行sql报Parameter list mismatch错误,但是同样的sql使用连接工具可以查询出数据
  • ¥15 疾病的获得与年龄是否有关