switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。
例如:
#include
int main()
{
int n;
switch(n)
{
case number:
statement;
case number:
statement;
case number://注意,case和后面的number中间有个空格
statement;
default:
statment;//此处的number只能为整型数值
}
return 0;
}
上⾯代码中,根据表达式number 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,就执⾏ default 分⽀
输入一个0~7的数,输出“星期 * ”:
#include
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
printf("星期⼀\n");
break;
case 2:
printf("星期⼆\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句,如果不加break,输出结果会不一样:
如果case的不同值有相同结果,就可以写成以下:
#include
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("⼯作⽇\n");
break;
case 6:
case 7:
printf("休息⽇\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
如果输入数字8,就会执行default分支:
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。
while 语句的语法结构和 if 语句⾮常相似。
但是也有着极大的区别,while语句是可以实现循环效果的:
if 语句
#include
int main()
{
if(1)
printf("hehe\n"); //if后边条件满⾜,打印⼀次hehe
return 0;
}
while 循环
/代码2
#include
int main()
{
while(1)
printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehe
return 0;
}
while循环⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
#include
int main()
{
int n = 0;
scanf("%d", &n);
while(n)
{
printf("%d ", n%10);//此处输出的n%10就是n的个位数
n=n/10;//去掉个位数的n再次返回执行
}
return 0;
}
for 循环的使用频率是最高的。
for(表达式1;表达式2;表达式3)
语句;
此处的表达式1用于初始化,
表达式2用于⽤于循环结束条件的判断,
表达式3 ⽤于循环变量的调整
例如,用for 循环算出一百以内能整除3的数之和:
#include
int main()
{
int sum;
for(int i=1;i<=100;i++){
if(i%3==0){
sum+=i;
}
}
printf("%d",sum);
return 0;
}
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环;⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
在 do while 循环中先执⾏语句,执⾏完语句,在去执⾏判断表达式,判断表达式的结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。
练习:
输⼊⼀个正整数,计算这个整数是⼏位数?
例如:
输⼊:1234 输出:4
输⼊:12 输出:2
#include
int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
do
{
cnt++;//n即使是0,也是1位数,要统计位数的
n = n / 10;
} while (n);
printf("%d\n", cnt);
return 0;
}