目录
1.switch语句
1)switch语法形式
2)if语句和switch语句的对比
3) switch语句中的break
4) switch语句中的default
5) switch语句中的case和default的顺序问题
2.while循环
1) if 和 while的对比
2) while语句的执行流程编辑
3)while循环的实践
4) 练习
3.for循环
1) for语法形式
2) for循环的执行流程编辑
3) for循环的实践
4) while循环和for循环的对比
5) for循环练习
1.switch语句
1)switch语法形式
switch 语句是一种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重
的else if 改成更易用、可读性更好的形式
switch (expression) //根据表达式 expression 不同的值,执行相应的 case 分支
//如果找不到对应的值,就执行 default 分支
{
case value1: statement
case value2: statement
default: statement
}
注意:
<1> switch 后的 expression 必须是整型表达式
<2> case 后的值必须是整形常量表达式
2)if语句和switch语句的对比
if语句:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n%3 == 0)
printf("整除,余数为0\n");
else if(n%3 == 1)
printf("余数是1\n");
else
printf("余数是2\n");
return 0;
}
switch语句:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
注意:
<1> case 和后边的数字之间必须有空格
<2> 每一个case 语句中的代码执行完成后需要加上break 才能跳出这个switch语句
3) switch语句中的break
如果去掉case语句中的break
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);// 7
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");//多了一行“余数是2”的打印。
}
return 0;
}
只有在switch 语句中使用 break 才能在跳出switch 语句,如果某一个case 语句的后边没有break 语句,代码会继续玩下执行,有可能执行其他case语句中的代码,直到遇到break 语句或者switch 语句结束。就比如上面的代码就执行了case2 中的语句
当然, break 也不是每个case 语句都得有,这就得根据实际情况来看了
#include <stdio.h>
int main() //1.输入1-5,输出的是“工作日”;
//2. 输入6-7,输出“休息日”
{
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;
}
return 0;
}
4) switch语句中的default
switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句
switch (expression)
{
case value1: statement
case value2: statement
default: statement
}
#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;
}
5) switch语句中的case和default的顺序问题
在 switch 语句中 case 语句和 default 语句是没有顺序要求,只要你的顺序满足实际需求就可以
2.while循环
1) if 和 while的对比
if(表达式)
语句;
while(表达式)
语句;//如果循环体想包含更多的语句,可以加上大括号
//代码1
#include <stdio.h>
int main()
{
if(1)
printf("hehe\n"); //if后边条件满足,打印一次 hehe
return 0;
}
//代码2
#include <stdio.h>
int main()
{
while(1)
printf("hehe\n"); //while后边的条件满足,死循环的打印 hehe
return 0;
}
2) while语句的执行流程
表达式的值为0,循环直接结束;
表达式的值不为0,则执行循环语句,语句执
行完后再继续判断,是否进行下一次判断
3)while循环的实践
#include <stdio.h>
int main() //在屏幕上打印1~10的值
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
4) 练习
输入一个正的整数,逆序打印这个整数的每一位
例如:
输入:1234,输出:4 3 2 1
输入:521,输出:1 2 5
题目解析
1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4
2. 要想去掉n的最低位,找出倒数第二位,则使用 n=n/10 操作就可以去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。
3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
while(n)
{
printf("%d ", n%10);
n /= 10;
}
return 0;
}
3.for循环
1) for语法形式
for(1 表达式1; 表达式2; 表达式3)
语句;//如果2 循环体想包含更多的语句,可以加上大括号
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
2) for循环的执行流程
首先执行 表达式 1 初始化循环变量,接下来就是执行 表达式2 的判断部分, 表达式2 的结果如果
==0,则循环结束; 表达式2 的结果如果 !=0则执行循环语句,循环语句执行完后再去执行表达式3 调整循环变量,然后再去表达式2 的地方执行判断, 表达式2 的结果是否为 0 决定循环是否继续
整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循
环。
3) for循环的实践
#include <stdio.h>
int main()//在屏幕上打印1~10的值
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
4) while循环和for循环的对比
for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是for 循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候 while 循环的三个部分就比较分散,所以从形式上 for 循环要更优一些
5) for循环练习
计算1~100之间3的倍数的数字之和
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for(i=1; i<=100; i++)
{
if(i % 3 == 0)
sum += i;
}
printf("%d\n", sum);
return 0;
}
//小小的优化
//如果能直接产生3的倍数的数字就省去了多余的循环和判断
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for(i=3; i<=100; i+=3)
{
sum += i;
}
printf("%d\n", sum);
return 0;
}
谢谢观看