continue语句与break语句
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;
} 首先回答你的技术性问题。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 = 124 * 4 = 16
while循环九九乘法表:1 * 5 = 5 2 * 5 = 103 * 5 = 154 * 5 = 20
while循环九九乘法表:1 * 6 = 6 2 * 6 = 123 * 6 = 184 * 6 = 24
while循环九九乘法表:1 * 7 = 7 2 * 7 = 143 * 7 = 214 * 7 = 28
while循环九九乘法表:1 * 8 = 8 2 * 8 = 163 * 8 = 244 * 8 = 32
while循环九九乘法表:1 * 9 = 9 2 * 9 = 183 * 9 = 274 * 9 = 36
在第二段代码双层do…while循环中,由于你的continue跳出内层do…while循环,使得当i=5时,j值加到5之后,就在内层do…while中一直循环,遇到if(j==5)就会跳出本次循环,而无法改变j的值,因而内层循环无法停止。 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> jackz007 发表于 2020-1-9 17:41
break 会跳出并结束循环,continue 只会结束本次循环,开始下一次循环。
九九乘法表似 ...
我只是想试试能不能在合适的地方跳出
页:
[1]