while循环:
-
掌握while循环结构语法
while(表达式) 表达式括号后面不要有分号,但是后面的do-while循环就不一样了,while后面的表达式要有分号 //只有当表达式为真时,才会执行里面的循环语句; { 循环语句; } //循环语句只有一句时,大花括号可以省略。
-
了解while循环和if语句的区别:
if语句结构语法: if(表达式) { 执行语句; }
既然他们两个语法结构一样,那么他么的区别在那呢?
区别在于if语句大花括号里面的语句只会执行一次,而while循环如果表达式为真,
那么他就会一直执行里面的语句,容易陷入死循环。 -
小要求:试着能在纸上把while循环结构的执行过程画出来
- 用while循环打印1-10的数字
#include <stdio.h> int main() { int num=1; while(num<=10) { printf("%d\n",num); num++; } return 0; }
- 输入一个整数,逆序输出,比如输入1234就输出4321
#include <stdio.h> int main() { int num; //num是你输入的整数 scanf("%d",&num); int a=0; //a是代表最低位的数 while(num!=0) { a=num%10; //先进行取余操作,拿到这个数的最低位 num=num/10;//然后再去掉最低位,把去掉最低位的数重新赋值给num printf("%d ",a); } return 0; }
程序分析:
1.有两个知识点:假设有一个数是i,拿到一个最低位的数,用i%10;去掉一个最低位的数用i/10;
2.一次从高到低循环输出这个数,我么就想到要用循环结构,首先我们得定义一个变量num用来存储输入的整数,定义一个变量a用来存储每次拿到的最低位的数,程序结束的条件是num==0,因此我们只要num不等于0,那么他就会一直循环,
3.这个程序的执行流程是,先判断你输入的数受否不为0,不为0,则进入循环,进入循环后第一步就是进行取余,把取余的数赋值给a,第二步就是打印这个a,第三步就是去掉最低位,把去掉最低位的数重新赋值给num,然后再返回表达式,进行判断。
for循环:
-
掌握for循环的基本结构
#include <stdio.h> int main() { for(变量初始值;条件判断;调整语句) { 循环语句; } return 0; }
- 记住for循环的3个主要因素:变量初始值;条件判断;调整语句
- 了解for循环和while循环的不同点和相同点:
相同点:while循环和for循环包括后面的do-while循环都要有循环三要素,就是初始值,条件判断,调整语句,这是毋庸置疑的
不同点:for循环的书写更简洁,而while循环的书写更分离,在后续如果代码非常多的情况下,while循环变量初始值和条件判断以及调整语句就会隔得非常远 - 小目标:能够在纸上画出for循环的执行流程
- 用for循环打印1-10的数
#include <stdio.h> int main() { int num=0; for(num=1;num<=10;num++) { printf("%d ",num); } return 0; }
-
打印1-100之间是3的倍数的整数之和
#include <stdio.h> int main() /* 1.首先得产生1-300的数,定义一个变量num来存储,用for循环结构 2.在产生的数之间判断那些数是3的倍数,如果是3的倍数就把他放到num这个变量里 3.然后再定义一个sum变量,把这些是3的倍数相加起来。 4.最后打印sum变量的值 */ { int num=0; int sum=0; for(num=1;num<=300;num++) { if(num%3==0) { sum+=num; } } printf("%d",sum); return 0; }
do-while循环:
- 掌握do-while循环结构语法
do //do后面没有括号 { 循环语句; }while(表达式); //do-while循环里表达式后面一定要有分号,但是while循环里不用
- 了解do-while循环和while循环的区别:
while循环只有当条件满足时才会执行语句,而do-while循环上来就是先工作,比较鲁莽,所以do-while循环不管怎么样都会先执行一次,
了解do-while循环的使用场景,下面这个程序就非常适合用do-while循环做
//题目:判断输入的整数共有多少位数
/*
1.采用do-while循环结构,
2.定义变量num存储数据
3.定义一个变量count,用来统计位数
不管怎么样,最低都要有一位数,只要你输入了数字,哪怕是0,也是一位数,
4.进入循环后第一步,先把它除以10,就是比如输入了123,用123/10,把最低位去掉了变成了12,相当于把它划掉了,然后此时我们让count++,开始进行计数。
5.最后循环结束了,打印count的值
*/
int main()
{
int num=0;
int count=0;
scanf("%d",&num);
do
{
num=num/10;
count++;
}while(num!=0)
printf("共有%d位数",num);
return 0;
}
continue语句和break语句:
- 掌握continue语句和break语句的区别:
continue语句是用于跳出某一次循环后面的语句,而break是用于跳出整个循环。 - continue语句和break语句在for循环和while循环以及do-while循环中的区别:
break语句在三种循环中没什么区别,都是跳出整个循环; 但是continue语句就不一样了,在for循环中,continue语句跳过后面的循环语句后,会来到调整语句部分,而 在while循环和do-while循环中会来到表达式部分。
//判断下列程序输出结果: int main() { int a=1; while(a<=10) //程序一共要循环10次,但是一进入循环,就a++了,所以第一次循环时, a=2,所以循环10次,最终a会变成11 { a++; if(a==5) continue; printf("%d",a); } return 0; } //最终打印结果为2-11,但是没有5
找出下列代码的错误: int main() { int a = 1; while (a <= 10) { if (a == 5) continue; printf("%d", a); a++; } return 0; } //这串代码错误的原因是缺少调整语句,所以陷入了死循环,打印结果为1-4;a++的顺序错了
//用while循环打印1-10的数字,但是没有5 int main() { int num=0; while(num<10) { num++; if(num==5) continue; printf("%d",num); } return 0; }
do-while循环中的continue和break打印1-10 int num=1; do { if(num==5) continue; //换成break即打印1-4 printf("%d",num); num++; }while(num!=10);
- 注意点:continue语句后面如果没有任何执行语句,那么也就没有什么意义了。
循环嵌套:
- 比如输出100-300间的素数,这个程序代码在另一篇博客中有写
goto语句:
- goto语句的作用:
它就相当于一个导航,可以带我们去我们真正想去的目的地 - 它主要应用的场景:
用于多层循环结构,想要 跳出循环时 - goto语句的语法结构:
goto +标识号; 跳过的语句; 标识号: 执行语句; goto next(这个next就是自己为你想要去的目的地起的名字); printf("哈哈\n"); next: printf("跳过了打印哈哈\n"); //跳过goto语句后面的内容,直接来到目的地后面的语句
- goto语句的限制:
它只能在同一个函数里,不能跨函数 - 注意事项:
在写代码时能不用goto语句就尽量不用,还有goto语句是先分号后冒号。