分支语句和循环语句

重点
1.分支语句
if
switch
2.循环语句
while
for
do while
3.go to语句
C语言是一门结构化的程序设计语言
1.顺序结构
2.选择结构
3.循环结构
什么是语句?
C语言中由一个分号“;”隔开的就是一条语句。
一,分支语句(选择结构)

1.if语句
语法结构
① if(表达式)
语句;

#include<stdio.h>
int main()
{
	int age;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	return 0;
}

②if(表达式)
语句1;
else
语句2;

#include<stdio.h>
int main()
{
	int age;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	else
	{
		printf("已成年");
	}
	return 0;
}

③if(表达式1) //多分支
语句1;
else if(表达式2)
语句2;
else
语句3;

#include<stdio.h>
int main()
{
	int age;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	else if (age > 18 && age < 50)
	{
		printf("中年");
	}
	else
	{
		printf("老年");
	}
	return 0;
}

注释:if语句中的表达式用来判断条件是否为真,如果为真执行,为假不执行。
在学语言中如何判断真假?
0表示假,非0都为真

#include<stdio.h>
int main()
{
	int age = 10;
	if (age = 5)
	{
		printf("hehe\n");
	}

	return 0;
}

这段代码的输出结果为hehe,age=5是赋值语句,所以age=5为真,执行输出语句判断age等不等于2要用“==”

注意
这段代码什么都不输出
上面这段代码什么都不输出,代码书写不规范,else应与第二个if结合。
在这里插入图片描述
结论:else与他最近的if相结合
改正

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
	}
	else
	{
		printf("haha\n");
	}
	return 0;
}

输出结果为haha

练习
1.判断一个数是否为奇数

#include<stdio.h>
int main()
{
	int num=0;
	scanf("%d", &num);
	if (num % 2 ==1)
	{
		printf("这个数是奇数");
	}
	return 0;
}

2.输出1-100之间的奇数

#include<stdio.h>
int main()
{
	int num=1;
	for (num = 1; num < 100; num++)
	{
		if (num % 2 == 1)
		{
			printf("%d ",num);
		}
	}
	return 0;
}
#include<stdio.h>
int main()
{
	int num=1;
	while(num<100)
	{
		printf("%d ", num);
		num = num + 2;
	}
	return 0;
}

2.switch语句
switch语句常常用于多分支的情况。
switch(整形表达式)//这里必须是整形表达式,语句项中也必须是整形

语句项;

比如:
在这里插入图片描述

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一");
		break;
	case 2:
		printf("星期二");
		break;
	case 3:
		printf("星期三");
		break;
	case 4:
		printf("星期四");
		break;
	case 5:
		printf("星期五");
		break;
	case 6:
		printf("星期六");
		break;
	case 7:
		printf("星期天");
		break;
	}
	return 0;
}

注意:每一个case语句结尾都要加上break,否则它会继续执行下面的语句(break的作用是跳出循环)
如果表达的值与所有的case标签的值都不匹配怎么办?
这时就要用到default语句,处理不能被case语句处理的情况。

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一");
		break;
	case 2:
		printf("星期二");
		break;
	case 3:
		printf("星期三");
		break;
	case 4:
		printf("星期四");
		break;
	case 5:
		printf("星期五");
		break;
	case 6:
		printf("星期六");
		break;
	case 7:
		printf("星期天");
		break;
	default:		
			printf("输入错误\n");
			break;	}
	return 0;
}

二.循环语句
1.while语句
while(表达式)
循环语句;
在这里插入图片描述
举例:打印1-10的数字

#include<stdio.h>
int main()
{
	int num = 1;
	while (num <=10)
	{
		printf("%d ", num);
		num = num + 1;
	}
	return 0;
}

while语句中的break和continue
break直接结束循环,continue跳过本次循环执行下一次循环

#include<stdio.h>
int main()
{
	int num = 0;
		while (num < 10)
		{
			num = num + 1;
			if (num == 5)
				continue;
			printf("%d ", num);
			
		}
	return 0;
}

在这里插入图片描述

#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ",i);
}
return 0;
}

在这里插入图片描述
2.for循环
语法:
for(表达式1;表达式2;表达式3)
循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断
循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整

在这里插入图片描述

举例:打印1-10的数字

#include<stdio.h>
int main()
{
	int i;
	for (i = 1; i <= 10; i++)
	//i等于1满足小于等于10执行printf语句,然后i++进行下一次判断
	{
		printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述
for循环与while循环对比

#include<stdio.h>
int main()
{
	int i=1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}
	printf("\n");
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述
while循环条件分散不易查看修改,for循环的条件集中容易查看和修改使用频率更高。
3.do while()循环
语法:
do
循环语句;
while(表达式);
执行流程:
在这里插入图片描述
do语句的特点:
循环至少执行一次,使用的场景有限,所以不是经常使用。
举例:输出1-10

#include<stdio.h>
int main()
{
	int i=1;
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 10);//循环条件
	return 0;
}

练习:
1.计算10的阶乘。

#include<stdio.h>
int main()
{
	int i = 1;
	int sum = 1;
	for (i = 1; i <= 10; i++)
	{
		sum = i * sum;
	}
	printf("%d ", sum);
	return 0;
}

2.计算1-10阶乘的和

#include<stdio.h>
int main()
{
	int i = 1;
	int sum1 = 1;
	int sum2 = 0;
	for (i = 1; i <=10; i++)
	{
		for (int j = 1; j <=i; j++)
		{
			//sum1 = 1;
			sum1 = j * sum1;
		}
		sum2 = sum2 + sum1;
		sum1 = 1;  //循环一次后将sum1重新置为1,计算下一个数的阶乘
	}
	printf("%d ", sum2);
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值