开发者学堂课程【你的第一门 C 语言:for 语句和循环嵌套】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/444/detail/5464
for 语句和循环嵌套
目录:
一、while 和 do..while 语句
二、For 语句及示例
三、嵌套循环语句
四、练习
一、While 和 do...While 语句
1.While 语句
While 语句条件判断在循环的入口处,所以称之为人口条件循环。先计算表达式的值,当值为真时(非0即是真),执行语句块,执行完语句块后,回到循环首部再次计算表达式的值,如果为真,又执行一次语句块。
示例:
入口条件循环
While(i<=100){
Sum=sum+i;
i=i+1
}
2.do...While 语句
Do...While 语句的条件判断在循环的出口处,所以称之为出口条件循环。(不论什么情况都会执行一次,注意后面结尾的分号)同样有循环体和条件表达式,但执行顺序与 while 不同,do while 是先执行一次循环体之后再进行条件判断。
注意,在 do while 语句的条件判断后要加上一个分号;表示语句的结束。
示例:
出口条件循环
Do{
Sum=sum+i;
I=i+1;
}while(i<=100);
注意:分号一定需要添加
基本上每一个循环都离不开三个动作:
初始化计数器,循环条件,更新计数器
二、For 语句
For(表达式1;表达式2;表达式3)
循环体
三个表达式用分号隔开,其中:
表达式1是循环初始化表达式 (初始化计数器)
表达式2是循环条件表达式 (循环条件)
表达式3是循环调整表达式 (更新计数器)
1.For语句示例
判断一个数是否为素数:
int main( )
{
//初始化count
int count;
//判断count是否小于10,满足条件继续执行,总共执行10词
for ( count = 0; c<10; count++)
{
Printf(“FIshC!\n”)
}
return 0;
执行代码:
[fishc@localhost sle14]$ vi test1.c
[fishc@localhost sle14]$ gcc test1.c && ./a.out
FIshC!
FIshC!
FIshC!
FIshC!
FIshC!
FIshC!
FIshC!
FIshC!
FIshC!
FIshC!
小程序:判断数是否是素数
1. 素数是指在大于1的自然数中,除了1和此数自身外,无法被其他自然数整除的数。
2.关于素数的求法很多,这里我们用比较朴素暴力的方式:迭代测试从2到 num/2 所有整数是否能被整除( num 为待测试的整数),如果没有出现能被整除的整数,那么它就是素数
Int main()
{
Int i,num;
-Bool flag=1;
Printf(“请输入一个整数:”);
Scanf(“%d”,&num);
For(i=2;i
{
If(num%i==0)
{
Flag=0;
}
}
If(flag)
{
Printf(“%d是一个素数!\n”,num);
}
Else
{
Printf(“%d不是一个素数!\n”num);
}
Return 0;
输入完成然后运行。
[fishc@localhost sle14]$ ./a.out
请输入一个整数:22
22不是一个素数!
2.灵活的 for 语句
表达式1,表达式2和表达式3可以按照需要进行省略(但分号不能省);
——for(;表达式2;表达式3)
——for(表达式1;表达式2;)
——for(表达式1;;)
——for(;;)-》代表永远为真的循环 while(1) ,即死循环
——.......
死循环:游戏开发需要用到死循环,使用 break 跳出循环
表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式(即用逗号分隔多个表达式)
Int main( )
{
Int i, j;
For(i=0,j=10;i
{
Printf(“%d\n”,i);
}
Return 0;
}
C99允许在for语句的表达式1中定义变量,才可以编译
C99新的标准
注意:循环表达式定义的变量出了循环就无法使用
三、嵌套循环
嵌套循环从内到外,先执行内层循环,再执行外层循环
示例:
int main( )
//定义变量
int i,j;
//外层循环
for (i = 0; i < 3; i++){
//内层循环
for (j = 0; j < 3; j++){
printf"i = %d, j = %d\n", i,j)
}
}
return 0;
执行:
[fishc@localhost sle14]$ gcc test4.c && ./a.out
I=0,j=0
I=0,j=1
I=0,j=2
I=1,j=0
I=1,j=1
I=1,j=2
I=2,j=0
I=2,j=1
I=2,j=2
四、练习
打印九九乘法表
使用嵌套循环
int main( )
int i,j;
for (i = 1; i <= 9; i++){
for (j = 1; j <= i; j++)
printf( "%d*%d=%-2d", i, j,i* j);
return 0;
执行:
[fishc@localhost sle14]$ gcc test5.c && ./a.out