接上一篇 自学C语言——分支和循环(一)
5.switch语句
swish语句是一种特殊形式的if……else结构,用于判断条件有多个结果的情况
switch(expression){
case value1: statement
case value2: statement
…………
default: statement
}
根据表达式expression不同的值,执行相应的case分支。如果找不到队友的值,则执行default分支。
注意:
- switch后的expression必须是整型表达式
- case后的值,必须是整型常量表达式
if语句和switch语句的对比
输入任意一个整数值,计算除3之后的余数。
if语句:
#define _CRT_SECURE_NO_WARNINGS 1
#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语句:
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)// 0 1 2
{
case 0:
printf("余数是0\n");
break;//不加break就会从进入的地方一直往后运行输出多个结果
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
switch语句中的break
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n)
{
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;
}
int main()
{
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
switch语句中的default
如果上述代码没有输入1-7,则运行default
int main()
{
int n = 0;
scanf("%d", &n);
switch (n)
{
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;
}
switch语句中的case和default的顺序
没有要求,一般把default放后边
6.while循环
while语句的语法和if语句非常相似
if和while的对比
if(表达式)
语句;
while(表达式)
语句;
如果单纯把if换成while会形成循环
while语句的执行流程
(假装有图片)
while循环的实践
在屏幕上打印1-10的值
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;//i = i + 1
}
return 0;
}
输入一个正整数,逆序打印这个整数的每一位
int main()
{
int n = 0;
scanf("%d", &n);
while (n)
{
printf("%d ", n % 10);
n = n / 10;
}
return 0;
}
输出:
89445461
1 6 4 5 4 4 9 8
7.for循环
语法形式
for(表达式1;表达式2;表达式3)
语句;//如果循环体想包含更多语句,需要加{ }
表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整
for循环的执行流程
(假装有图片)
for循环的实践
在屏幕上打印1-10的值
//在屏幕上打印1-10的值
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
循环的过程中,初始化只被执行一次
计算1-100之前3的倍数的数字之和
//计算1-100之前3的倍数的数字之和
//1.生成1-100 for
//2.找出3的倍数 %3
//3.求和 sum += i
int main()
{
int i = 0;
int sum = 0;
for (i = 1;i <= 100; i++)
{
//判断2
if (i % 3 == 0)
sum += i;
}
printf("%d\n", sum);
return 0;
}
//1683
优化后
int main()
{
int i = 0;
int sum = 0;
for (i = 3; i <= 100; i+=3)
{
sum += i;
}
printf("%d\n", sum);
return 0;
}
//1683
while循环和for循环的对比
for和while在实现循环的过程中都有初始化、判断、调整三个部分,但是for循环的3个部分非常集中便于维护,从形式上for循环更优一些。
8.do-while循环
语法形式
do
语句;
while(表达式);
do while循环的执行流程
先进入循环体执行语句,然后判断表达式,!=0循环,==0结束循环
一般do while在循环体中至少被执行一次
do while循环的实例
使用do while语句在屏幕上打印1-10的值
//在屏幕上打印1-10的值
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
}
while (i <= 10);
return 0;
}
输入一个正整数,判断这整数是几位数?
//输入一个正整数,判断这整数是几位数?
int main()
{
int n = 0;
int cnt = 0;//计数器
scanf("%d", &n);
do
{
cnt++;//1
n /= 10;//0
} while (n);
printf("%d", cnt);
return 0;
}
——————————End——————————