思维导图
一、switch····case分支
【1】格式
switch(变量)
{
case 常量表达式:
语句块1;
break;
case 常量表达式:
语句块2;
break;
····
case 常量表达式:
语句块n;
break;
default:
语句块n+1;
break;
}
switch和后面括号内的内容是,选择的变量,case后面的常量表达式,就是switch后面的变量可能出现的情况。
哪个case后面的常量是变量的结果,就执行哪个case后面的代码块。
执行逻辑
进入switch···case判断变量的结果,和case后的常量表达式判断,走满足的case后面的分支,
如果一个case后面没有break,执行完该case后会顺序向后执行下面的case/switch···case语句,
default的作用,如果不关心其他分支,就写一个default,其他分支就走default
注意事项
switch后面的变量只能是char/int
如果不加break会顺序向后执行,叫做case击穿
case的顺序,不会影响程序的执行
default的位置也不会影响程序的执行,只有所有case都不满足时,才会走default分支
case击穿可以根据使用场景的不用利用起来。
二、while循环
【1】格式
while(条件)
{
代码块;
改变循环变量的语句;
}
先判断条件是否成立,如果条件成立,执行代码块里的语句
再判断条件是否成立,如果不成立退出while循环
注意:
循环的次数,只和循环变量初始值、步长以及循环条件有关。
如果while后面,只有一条语句,{}可以不写
while()后面不要加;
例子:
使用while循环输出5行helloworld。
#include <stdio.h> int main() { int i = 2; while(i<=10) { printf("hello world\n"); i+=2; //让循环变量每次自增2 } }
猴子吃桃问题,猴子第一天摘了若干个桃,
当即就吃了一半的桃,没过瘾,又多吃一个
第二天,在剩下的桃里吃了一半的桃,没过瘾,又多吃一个
依次类推,知道第10天,猴子发现只剩一个桃了。
问:猴子第一天摘了几个桃子。
#include <stdio.h> int main(int argc, const char *argv[]) { int peach = 1,i=9; //i进入循环时是第9天,第9天的桃子数才需要去计算 while(i>=1) //循环进行9次 { peach=(peach+1)*2; i--; //改变循环变量 } printf("%d\n",peach); return 0; }
三、for循环
【1】格式
for(表达式1;表达式2;表达式3)
{
(循环体内)代码块;
}
先执行表达式1,表达式1通常是循环变量初始化语句,
再执行表达式2,表达式2是for循环判断条件,
如果条件成立,执行循环体内的语句,再执行表达式3,表达式3就是循环变量的步长
如果条件不成立,退出for循环.
【2】练习
终端输入一个数,求该数的所有因子,如12,输出1 2 3 4 6 12
#include <stdio.h> int main(int argc, const char *argv[]) { int num; scanf("%d",&num); int i; for(i=1;i<=num;i++) //循环从1-num的每一个数 { if(num%i==0) //判断循环到的数是否是num的因子 { printf("%d\n",i); } } return 0; }
输出下三角的九九乘法表
#include <stdio.h> int main(int argc, const char *argv[]) { int i,j; for(i=1;i<=9;i++) //外层循环控制行数 { for(j=1;j<=i;j++) //内层循环控制每行打印的列数 { printf("%d*%d=%d\t",j,i,i*j); } printf("\n"); //每一行打印完输出换行 } return 0; }
四、辅助控制关键字
return break continue
【1】break
break只能用在循环和switch···case中
break用在循环中,表示退出本层循环。
例子:
for循环
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j;
for(i=1;i<4;i++)
{
printf("i=%d\t",i);
for(j=1;j<5;j++)
{
if(j==3)
{
//break; //跳出本层循环
continue; //跳出本层本次循环
//return ; //退出当前函数
}
printf("j=%d\t",j);
}
printf("\n");
}
return 0;
}
while循环
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i=1,j=1;
while(i<4)
{
printf("i=%d\t",i);
j=1; //让内层循环变量j,每一次进入循环前都重置一次
while(j<5)
{
if(j==3)
{
//break; //跳出本层循环
//continue; //跳出本层本次循环,死循环,因为j永远=3
return 1;
}
printf("j=%d\t",j);
j++;
}
printf("\n");
i++;
}
return 0;
}
【2】continue
退出本层本次循环
continue放在while中时,需要把修改循环变量的语句放在continue的上面
【3】return
退出当前函数
作业:
1.整理思维导图
2.while循环的练习用for循环做一遍,桃子数的不需要
1、使用while循环输出5行helloworld。
2、1-100中的偶数
3、求1-100的和,5050。
4、输出100-999内的所有水仙花数,(各位的三次方相加等于该数)
使用pow函数,需要加编译选项-lm。
3.for循环的练习用while写一遍
1、求1-100内奇数的和。
2、终端输入一个数,求该数的所有因子,如12,输出1 2 3 4 6 12
3、输出下三角的九九乘法表
4、终端输入行数,打印直角三角形
打印等腰三角形
for循环:
while循环: