分支与循环语句详解(适合C语言初学者、编程初学者、C语言期末考复习)

提示:本篇文章适合初学者阅读、也可用作期末考复习参考


前言

本篇文章详细讲解了C语言中分支与循环语句的用法


一、什么是语句?

C语言语句可分为以下五类:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。
可分为三类:
1.条件判断语句:即分支语句:if语句,switch语句。
2.循环执行语句:do while语句、while语句、for语句。
3.转向语句:break语句、goto语句、continue语句、return语句。

二、分支语句(选择结构)

如果你好好学习,赢取白富美,走上人生巅峰。
如果你不学习,毕业即事业,回家卖红薯。
这里就涉及到了一个选择语句。

1.if语句

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

多分支

if(表达式1)
	语句1else if(表达式2)
	语句2else
	语句3

代码演示

//代码1
#include<stdio.h>
int main()
{
	int grade = 0;
	scanf("%d",&age);
	if(grade<60)
	{
		printf("不及格\n");
	}
}
//代码2
#include<stdio.h>
int main()
{
	int grade = 0;
	scanf("%d",&grade);
	if(grade<60)
	{
		printf("不及格\n");
	}
	else
	{
		printf("及格\n")}
}
//代码3
#include<stdio.h>
int main()
{
	int grade = 0;
	scanf("%d",&grade);
	if(grade<60)
	{
		printf("不及格\n")}
	else if(grade>=60 && grade<85)
	{
		printf("良好\n")}
	else
	{
		printf("优秀\n")}
}

如果表达式的结果为真,则语句执行
在C语言中0表示假,非0表示真
如果不在if和else后加上{}则只执行一条语句
如果要执行多条语句,应该使用{},这里一对花括号的内容就是一个代码块
else的匹配: else总是和离它最近的if匹配。

习题讲解

1)判断一个数是否为奇数
#include<stdio.h>
int x=0;
scanf("%d",&x);
if(x%2==0)
	printf("%d是偶数\n",x);
else
	printf("%d是奇数\n",x);
2)输出1-100之间的奇数
#include<stdio.h>
int main()
{
	int i=0;
	for(i=1;i<=100;i++)
	{
		if(i%2!=0)
			printf("%d ",i);
	}
	return 0;
}

2.switch语句

switch语句是一种分支语句。
常用于多分支的情况
举个例子,如果以下情况写成if…else if…else if的形式太过于复杂,此时可以考虑使用switch语句

#include<stdio.h>
int main()
{
	int day=0;
	scanf("%d",&day);
	switch(day)
	{
		case 1:printf("星期一\n");break;		//注意要搭配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;
		default:printf("输入无效\n");break;
	}
	return 0;
}

break语句的实际效果是把语句列表划分为不同的分支部分
如果表达式的值与所有的case标签值都不匹配,就会执行default语句后的内容default语句可以出现在任意位置。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。


三、循环语句

1.while循环

语法结构

while(表达式)
	循环语句;

表达式为真,继续循环,为假,结束循环
例如:在屏幕上打印1-10的数字

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

1)while语句中的break和continue

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

这里代码输出的结果是1 2 3 4.在i=5时跳出了循环,没有继续打印。
break在循环中的作用:
在循环中遇到break,就停止了所有的循环

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

这里的代码输出结果是1 2 3 4…死循环,因为当i=5时,不会打印,也不会+1变成6,一直无限循环。

//continue 代码实例2
#include <stdio.h>
int main()
{
	 int i = 1;
	 while(i<=10)
	 {
	    i = i+1;
	    if(i == 5)
		continue;
		printf("%d ", i);
	 }
	 return 0;
}

这里的输出结果是2 3 4 6 7 8 9 10 11
continue在循环中的作用:
用于终止本次循环,进入到下一次循环判断

2.for循环

语法结构

for(表达式1; 表达式2; 表达式3)
 	循环语句;

表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
使用for循环 在屏幕上打印1-10的数字。

#include <stdio.h>
int main()
{
	 int i = 0;
	 //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
	 for(i=1; i<=10; i++)
	 {
	 	printf("%d ", i);
	 }
	 return 0;
}

3.do while()循环

语法结构

do
 循环语句;
while(表达式);

特点:循环至少执行一次
使用场景有限

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

结果输出了一个10。

4.练习

1)计算n的阶乘

#include<stdio.h>
int main()
{
	int n=0;
	int ans=1//储存结果,因为求阶乘,注意要初始化为1
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		ans = ans*i;//ans*=i; 也等效
	}
	printf("%d\n",ans);//输出结果
	return 0;
}

2)计算1!+2!+3!+…+n!

#include<stdio.h>
int main()
{
	int n=0;
	scanf("%d",&n);
	int ret = 1;
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		ret*=i;//求出i的阶乘
		ans+=ret;//把每次阶乘的结果保存
	}
	printf("%d\n",ans);
	return 0;
}

3)二分查找(在一个有序数组中查找具体数字n)

#include<stdio.h>
int main()
{
	 int arr[] = {1,2,3,4,5,6,7,8,9,10};
	 int left = 0;
	 int right = sizeof(arr)/sizeof(arr[0])-1;
	 int key = 7;
	 int mid = 0;
	 while(left<=right)
	 {
	 		mid = (left+right)/2;
		if(arr[mid]>key)
		{
			right = mid-1;
		}
		else if(arr[mid] < key)
		{
			left = mid+1;
		}
		else
		break;
	 }
	 if(left <= right)
	 printf("找到了,下标是%d\n", mid);
	 else
	 printf("找不到\n");
}

总结

本篇文章详细讲解了分支与循环语句,讲了for循环、while循环、do while循环三大循环的特点和用法,以及一些基础习题的讲解。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值