自学C语言——分支和循环(二)

接上一篇        自学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

switch 语句中,没办法直接实现分支,搭配 break 使用才能实现真正的分支。
输入1-7,打印星期一到星期天。
#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;
}
break 语句 的实际效果是把语句列表划分为不同的分支部分。
输入1-5,输出的是“工作日”;
输入6-7,输出“休息日”
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—————————— 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混迹网络的权某

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值