switch 语句
switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。
例如:
#include<stdio.h> 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 <stdio.h> 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 <stdio.h> 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 循环
while 语句的语法结构和 if 语句⾮常相似。
但是也有着极大的区别,while语句是可以实现循环效果的:
if 语句
#include <stdio.h> int main() { if(1) printf("hehe\n"); //if后边条件满⾜,打印⼀次hehe return 0; }
while 循环
/代码2 #include <stdio.h> int main() { while(1) printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehe return 0; }
while循环⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
#include <stdio.h> 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 循环的使用频率是最高的。
for(表达式1;表达式2;表达式3) 语句; 此处的表达式1用于初始化, 表达式2用于⽤于循环结束条件的判断, 表达式3 ⽤于循环变量的调整
例如,用for 循环算出一百以内能整除3的数之和:
#include<stdio.h> int main() { int sum; for(int i=1;i<=100;i++){ if(i%3==0){ sum+=i; } } printf("%d",sum); return 0; }
do while 循环
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环;⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
在 do while 循环中先执⾏语句,执⾏完语句,在去执⾏判断表达式,判断表达式的结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。
练习:
输⼊⼀个正整数,计算这个整数是⼏位数?
例如:
输⼊:1234 输出:4
输⼊:12 输出:2
#include <stdio.h> 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; }