鱼C论坛

 找回密码
 立即注册
查看: 2331|回复: 3

continue语句与break语句

[复制链接]
发表于 2020-1-9 16:47:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
continue语句在跳出do while或者while循环的时候直接就短路,从放continue语句开始后面语句都不见了,请问这是我代码的问题还是continue语句原本就这样定义的
而break语句不会短路,仅仅是跳过了循环,后面语句还是会执行
代码如下:
    //while循环
    i = 1;
    while (i <= 9)
    {
        printf("while循环九九乘法表:");
        j = 1;
        while(j <= i)
        {
              if (j == 5)
            {
                break;            }
            printf("%d * %d = %-2d  ", j , i, i * j);
            j++;

        }
        printf("%c",HC);
        i++;
    }
    //do while循环九九乘法表
    i = 1;
    do
    {
        printf("%s", F);
        //%s访问字符串常量,%c是访问字符,大概,先这样解释一下
        j = 1;
        do
        {
            if (j == 5)
            {
                continue;
            }
            printf("%d * %d = %-2d  ", j , i, i * j);
            j++;

        }
        while(j <= i);
        putchar('\n');
        i++;
    }
    while(i <= 9);
    printf("......\n");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-9 17:28:52 | 显示全部楼层
首先回答你的技术性问题。break和continue都是在循环中跳出循环用的,二者的相同点:都只本层循环有效。二者的差别是,break直接终止循环,continue是跳出本次循环,继续下一次循环。
以你的代码片段为例。
#include <stdio.h>
int main()
{
    int i,j;
    //while循环
    i = 1;
    while (i <= 9)
    {
        printf("while循环九九乘法表:");
        j = 1;
        while(j <= i)
        {
              if (j == 5)
            {
                break;            }
            printf("%d * %d = %-2d  ", j , i, i * j);
            j++;

        }
        printf("\n");//这里不知道你的那个变量是什么我修改为了回车。
        i++;
    }
return 0;
}
当j==5成立时,用break跳出while(j<=i)循环,而不会跳出while(i<=9)的循环,因此会得到如下结果:
while循环九九乘法表:1 * 1 = 1   
while循环九九乘法表:1 * 2 = 2   2 * 2 = 4   
while循环九九乘法表:1 * 3 = 3   2 * 3 = 6   3 * 3 = 9   
while循环九九乘法表:1 * 4 = 4   2 * 4 = 8   3 * 4 = 12  4 * 4 = 16  
while循环九九乘法表:1 * 5 = 5   2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  
while循环九九乘法表:1 * 6 = 6   2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  
while循环九九乘法表:1 * 7 = 7   2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  
while循环九九乘法表:1 * 8 = 8   2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  
while循环九九乘法表:1 * 9 = 9   2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  
在第二段代码双层do…while循环中,由于你的continue跳出内层do…while循环,使得当i=5时,j值加到5之后,就在内层do…while中一直循环,遇到if(j==5)就会跳出本次循环,而无法改变j的值,因而内层循环无法停止。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-9 17:41:29 | 显示全部楼层
        break 会跳出并结束循环,continue 只会结束本次循环,开始下一次循环。

        九九乘法表似乎根本就没有必要使用 break 和 continue 语句
#include <stdio.h>

int main(void)
{
        int i , j                                                 ;
        printf("\t\twhile循环九九乘法表:\n")                     ;
        i = 1                                                     ;
        while (i <= 9){
                j = 1 ;
                while(j <= i) {
                        if(j > 1) printf(" ")                     ;
                        printf("%dx%d=%2d" , j , i , i * j)       ;
                        j ++                                      ;
                }
                printf("\n")                                      ;
                i ++                                              ;
        }
        printf("\n\n")                                            ;
        printf("\t\tdo while循环九九乘法表:\n")                  ;
        i = 1                                                     ;
        do {
                j = 1 ;
                do {
                        if(j > 1) printf(" ")                     ;
                        printf("%dx%d=%2d" , j , i , i * j)       ;
                        j ++                                      ;
                } while(j <= i)                                   ;
                printf("\n")                                      ;
                i ++                                              ;
        } while(i <= 9)                                           ;
        printf("\n")                                              ;
}
        编译、运行实况:
C:\Bin>cl x.c
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.00.24215.1 版
版权所有(C) Microsoft Corporation。保留所有权利。

x.c
Microsoft (R) Incremental Linker Version 14.00.24215.1
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:x.exe
x.obj

C:\Bin>x
                while循环九九乘法表:
1x1= 1
1x2= 2 2x2= 4
1x3= 3 2x3= 6 3x3= 9
1x4= 4 2x4= 8 3x4=12 4x4=16
1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25
1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8= 8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81


                do while循环九九乘法表:
1x1= 1
1x2= 2 2x2= 4
1x3= 3 2x3= 6 3x3= 9
1x4= 4 2x4= 8 3x4=12 4x4=16
1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25
1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8= 8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81


C:\Bin>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-10 09:19:24 | 显示全部楼层
jackz007 发表于 2020-1-9 17:41
break 会跳出并结束循环,continue 只会结束本次循环,开始下一次循环。

        九九乘法表似 ...

我只是想试试能不能在合适的地方跳出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 07:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表