本章概述思维导图:
C语言流程控制语句
C语言循环嵌套
在C语言中,循环嵌套是指在一个循环结构内部包含另一个完整的循环结构,即“循环套循环”。这种技术允许程序处理多层次的数据或重复操作,尤其适用于需要遍历多维数据(如二维数组、矩阵)或生成复杂图案的场景。
循环嵌套代码示例:
#include <stdio.h>
int main()
{
for(int i=1;i<4;i++)
{
for(int j=1;j<4;j++)
{
printf("第%d层外循环,第%d层内循环\n",i,j);
}
}
return 0;
}
//代码运行结果:
第1层外循环,第1层内循环
第1层外循环,第2层内循环
第1层外循环,第3层内循环
第2层外循环,第1层内循环
第2层外循环,第2层内循环
第2层外循环,第3层内循环
第3层外循环,第1层内循环
第3层外循环,第2层内循环
第3层外循环,第3层内循环
代码说明:
在示例代码中:有两个循环,外层循环每执行一次,内循环就会完整的执行完一轮;例如i =1时,内循环 j 执行了3次;对应第一次外循环 i =1,j =1;第二次循环 i=1,j =2;第三次循环 i=1;j=3;在第二次外循环 i =2 时,内循环又从头开始执行;若示例代码中外循环执行三次,内循环执行3次。则循环语句体一共执行3*3 =9次;
循环嵌套注意事项:
1. 避免无限循环
2. 变量命要清晰明白,因为嵌套一多非常容易弄混;
3.尽量减少不必要的循环嵌套。在循环嵌套复杂时,可用printf()函数追踪;
C语言无限循环
在C语言中,无限循环是指没有终止条件或终止条件永远无法满足的循环结构,导致循环体无限次执行。
无限循环第一种格式:
无限循环第二种格式:
无限循环第三种格式:
C语言break关键字
在C语言中,break
是一个控制流关键字,用于立即终止当前所在的循环(for
、while
、do-while
)或 switch
语句,并跳出该代码块,继续执行后续的代码。
break关键字有两种用法:
1. 用于循环语句中,当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
代码示例:
#include <stdio.h>
int main()
{
for(int i=1;i<11;i++)
{
printf("在生命的旅程行走\n");
if(i==3)
{
printf("遇到break小石头啦,停止行走\n");
break;
}
}
return 0;
}
//代码运行结果:
在生命的旅程行走
在生命的旅程行走
在生命的旅程行走
遇到break小石头啦,停止行走
代码说明:本来要循环打印10句" 在生命的旅程行走 "的,但是在循环语句里有一个if判断,当i=3时,就会进入if判断里执行语句,先执行打印" 遇到break小石头啦,停止行走 "在执行break关键字跳出循环;
2. 用于switch结构中,它可用于终止 switch 语句中的一个 case。
代码示例:
#include <stdio.h>
int main()
{
printf("输入1~3,显示选择输出的语句\n");
int num1=0;
scanf("%d",&num1);
switch(num1)
{
case 1:
printf("河流从不催促自己,却能抵达大海。\n");
break;
case 2:
printf("真正的成长,是开始接纳自己的不完美,并学会与它共舞。\n");
break;
case 3:
printf("选择没有对错,只有后果;成熟的人,会为自己的选择负责。\n");
break;
default :
printf("山不解释自己的高度,却巍峨;海不解释自己的深度,却浩瀚。\n");
break;
}
return 0;
}
//代码运行结果:
输入1~3,显示选择输出的语句
1
河流从不催促自己,却能抵达大海。
代码讲解:输入了1因而会打印"河流从不催促自己,却能抵达大海。"这句话,如果没有break关键字,会造成case穿透;进而使其全部输出打印在退出;
注意:如果使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行其所在的那层循环,然后开始执行该块之后的下一行代码。
C语言continue关键字
在 C 语言中,continue
是一个控制流关键字,用于跳过当前循环的剩余部分,直接进入下一次循环的条件判断。它不会终止整个循环(如 break
那样),而是仅跳过当前迭代,继续执行下一次循环。
代码示例:
#include <stdio.h>
int main()
{
for(int i=1;i<11;i++)
{
if(i == 5)
{
continue;
}
printf("现在为%d层循环\n",i);
}
return 0;
}
//代码运行结果:
现在为1层循环
现在为2层循环
现在为3层循环
现在为4层循环
现在为6层循环
现在为7层循环
现在为8层循环
现在为9层循环
现在为10层循环
代码解决:在代码种有一个循环可循环10次,但是在循环里有一个if判断,在i =5时就会执行continue关键字,使其跳出本次循环。但是不会终止本次循环,会继续执行;
C语言goto关键字
在 C 语言中,goto
是一个无条件跳转关键字,允许程序直接跳转到同一函数内的指定标签处执行(label)。虽然 goto
提供了灵活的控制流,但滥用会导致代码难以维护(俗称“面条代码”)。使得程序的控制流难以跟踪,使程序难以理解和难以修改。
代码示例:
#include <stdio.h>
int main()
{
for(int i=1;i<11;i++)
{
if(i == 5)
{
goto label;
}
printf("现在为%d层循环\n",i);
}
label: printf("被goto转移啦\n");
return 0;
}
//代码示例:
现在为1层循环
现在为2层循环
现在为3层循环
现在为4层循环
被goto转移啦
代码讲解:在代码种有一个循环可循环10次,但是在循环里有一个if判断,在i =5时就会执行goto关键字,使其转移到指定标签处(label),执行指定标签处(label)代码。
思考一个小细节:当指定标签处(label)放在for循环前面是不是就构成了一个死循环,导致程序永远结束不了,小伙伴可以试试哟;
C语言\t制表符
在 C 语言中,\t
是一个转义字符,代表水平制表符。它的作用是在输出时将光标移动到下一个制表位(默认间隔 8 个字符),通常用于对齐文本或格式化输出。
\t制表符会根据前面字母的个数在后面补空格,让整体的长度达到8或者8的倍数,最少补1个,最多补8个;
代码示例:
#include <stdio.h>
int main()
{
printf("abc\tLiyongfeng\t李\t|\n");
return 0;
}
//代码示例:
abc Liyongfeng 李 |
代码讲解:abc \t 会在后面补5个空格;Liyongfeng \t会在后面补6个空格;张 \t会在后面补6个空格;
循环嵌套和break、countinue关键字、制表符练习题
通过本章的学习,接下来就是进入实战环节,小伙伴们开始攻略C语言循环嵌套和break、countinue关键字、制表符练习题啦!小伙伴们先尝试自己敲代码敲完后在来查看代码示例呦!
break关键字(找出符合要求的数字)
题目:在1-1000之间,找第一个既能被3,又能被5和7整除的数字
#include <stdio.h>
int main()
{
printf("在1-1000之间,找第一个既能被3,又能被5和7整除的数字\n");
for(int i=1;i<1001;i++)
{
if(i%3==0 && i%5==0 && i%7==0)
{
printf("满足要求的数字为:%d\n",i);
break;
}
}
return 0;
}
//代码运行结果:
在1-1000之间,找第一个既能被3,又能被5和7整除的数字
满足要求的数字为:105
continue关键字(吃包子)
题目:小钰钰早上一共买了5个包子,吃到第三个包子时,发现里面有个虫子。直接扔掉不吃了,开始吃下一个包子。把这一过程用continue表示出来;
代码示例:
#include <stdio.h>
int main()
{
for(int i=1;i<6;i++)
{
if(i==3)
{
printf("发现第3个包子有虫子不吃啦扔掉\n");
continue;
}
printf("吃第%d包子\n",i);
}
return 0;
}
//代码运行结果:
吃第1包子
吃第2包子
发现第3个包子有虫子不吃啦扔掉
吃第4包子
吃第5包子
\t制表符(输出数据)
题目:要求打印以下数据,并让数据对齐
代码示例:
#include <stdio.h>
int main()
{
printf("name\t\tage\tgender\thobby\nLiYongFeng\t25\t男孩\t羽毛球\n");
return 0;
}
//代码运行结果:
name age gender hobby
LiYongFeng 25 男孩 羽毛球
循环嵌套(输出三角形)
题目:输出图片所示三角形
代码示例:
#include <stdio.h>
int main()
{
for(int i=1;i<6;i++)
{
for(int j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
printf("和\n");
for(int i=5;i>0;i--)
{
for(int j=i;j>0;j--)
{
printf("*");
}
printf("\n");
}
return 0;
}
//代码运行结果:
*
**
***
****
*****
和
*****
****
***
**
*
循环嵌套(九九乘法表)
题目:打印九九乘法表
代码示例:
#include <stdio.h>
int main()
{
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
{
printf("%d*%d=%d\t",j,i,j*i);
}
printf("\n");
}
return 0;
}
//代码运行结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
循环嵌套(特殊数字)
题目:找出0-1000之内,符合要求的数字;要求:每一位的数字之和等于15
例如:78,168;
代码示例:
#include <stdio.h>
int main()
{
for(int i=0;i<=1000;i++)
{
if(i>=10 && i<100)
{
int a=i%10;
int b=i/10;
if((a+b) == 15)
{
printf("%d\t",i);
}
}
if(i>=100 && i<1000)
{
int a=i%10;
int b=i/10%10;
int c=i/100;
if((a+b+c) == 15)
{
printf("%d\t",i);
}
}
}
return 0;
}
//代码运行结果:
69 78 87 96 159 168 177 186 195 249 258 267 276 285 294 339 348 357 366 375 384 393 429 438 447 456 465 474 483 492 519 528 537 546 555 564 573 582 591 609 618 627 636 645 654 663 672 681 690 708 717 726 735 744 753 762 771 780 807 816 825 834 843 852 861 870 906 915 924 933 942 951 960
制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!