【C语言初阶(三)】分支和循环

❣博主主页: 33的博客
▶文章专栏分类: C语言从入门到精通
🚚我的代码仓库: 33的代码仓库🚚

1.前言

c语言是结构化的程序语言,这里的结构化指的是顺序结构,分支结构,循环结构,c语言能够实现这三种语言。我们可以使用if和switch语句实现分支结构,for、while和do while实现循环结构,接下来我们就通过本篇文章进行深入学习。
本章重点

本篇文章主要对if语句,关系操作符,条件操作符,逻辑操作符,switch语句;for、while、do while循环;break,continue语句;go to语句等等进行介绍


2.if语句

2.1if 语句

形式如下:

if(表达式)
语句;

表达式为真,则执行语句,其中0为假,非0为真

2.2else

语句形式如下:

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

例子:输入年龄,如果小于18则输出未成年,如果大于18则输出已成年

int main
{
int age = 0scanf("%d",&age);
if(age<18)
printf("未成年");
if(age>=18)
printf("已成年");
}

if语句只能控制一条语句,如果要输出两条语句该怎么办呢?其实只要在后面加入{ }就可以解决。如下:

int main
{
int age = 0scanf("%d",&age);
if(age<18)
{
printf("未成年");
printf("不可以谈恋爱");
}
if(age>=18)
{
printf("已成年");
printf("可以谈恋爱");
}
}

一般习惯性的在输入if语句后就直接加入大括号{}


2.3嵌套if

在if else语句中,else中与另一个if语句连用,构成多重判断。
例子:输入一个数判断输入的整数是0还是整数或者负数

if(a==0{
printf("是0";
}
else
//以下是嵌套
{
if(a>0)
printf("是正数";
else
printf("是负数";
}

2.4悬空else问题

悬空else问题就是else总是跟最近的一条if匹配,接下来通过下面的代码进行讲解

int a = 1int b = 2if(a==1)
	if(b==2)
		printf("hehe";
		else
		printf("haha";
return 0

那么上述结果是多少呢?else与最近的if匹配就是hehe


3.关系操作符

c语言中用于比较的表达式,称为“关系表达式”,里面使用的运算符就是关系运算符,主要有以下6个

大于符号 >
小于符号 <
大于等于符号 >=
小于等于符号 <=
相等运算 ==
不相等运算 !=

注意==与=的使用:==表示判断是否相等,=表示是否相等
另一个需要注意的是关系操作符号不能连用,如果要表达a<b<c那么应该写成a<b&&b<c


4.条件操作符

之前我们已经学习了单目和双目操作符了,其实条件操作符就是三目操作符
形式如下:返回连个数中的较大值

//exp1?exp2:exp3如果exp1为真那么执行exp2,为假就执行exp3
//返回两个数中的较大值
int a=0;
int b=2;
scanf("%d %d",&a,&b);
int m = a>b?a:b
printf("%d",m);

5.算数逻辑操作符

算数逻辑提供逻辑判断功能,用于构造更赋值的表达式,主要有以下3个:

逻辑取反运算 !
与运算 &&
或运算 ||


5.1与 或运算

与运算&&:只要有一条语句是假,那么整个表达式就是假
或运算||:只要有一条语句是真,那么整个表达式就是真
短路:如果左边的表达式不成立就不用计算右边的表达式
例子:判断闰年,规则 1.能被4整除并且不能被100整除 2.能被400整除

int year= 0scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)
{
printf("%d是闰年",year);
}
else
{
printf("%d不是闰年",year);
}

6.switch语句

除了if语句外,c语言中还提供了switch语句来实现分支语句。switch语句是一种特殊的if…else结构,用于判断条件有多个结果的情况。
形式如下:

switch(expression)
case value1:statement
case value2:statement
default:statement

switch后面的语句必须是整型表达式,字符也属于
case后面的值,必须是整型常量表达式

int a =0;
scanf("%d",&a)
switch(a%3)
{
	case 1:   //case和1之间有空格!!!一定要有
		printf("余数是1");
		breakcase 2:
		printf("余数是2");
		breakcase 0:
		printf("能被整除");
		break}

6.1switch语句中的break

试想,如果上面的式子,中没有break,会出现什么情况呢?
测试一下:输入8
在这里插入图片描述
我们发现本来应该输出余数是2;但多了一行。原因是switch语句中使用break才能跳出switch语句,如果某一个case语句没有break2,代码会继续往下执行,直到遇到break才结束。所以在switch语句中使用break是非常重要的。


6.2switch语句中的default

当switch后表达式的值无法匹配代码中的case语句时,这时候要不就不处理,要不就得switch中加入default语句,case和default语句是没有顺序要求的,但通常放在最后。
格式如下:

switch(expression)
case value1:statement
case value2:statement
default:statement

7.while循环

c语言中有3种循环语句,while就是其中一种,接下来介绍while循环
格式如下:

while(表达式)
	语句;

while语句的执行流程
在这里插入图片描述
表达式的值为0,循环直接结束,非0,进行语句。
例子1:在屏幕在打印1~10

int i =1;
while(i<=10)
{
printf("%d",i);
i++;
}

例子2:输入一个正整数,逆序打印

int main()
{
	int n = 0;
	scanf("%d",&n);
	while (n)
	{
		int a = n % 10;
		printf("%d", a);
		n = n / 10;
	}
	return 0;
}

8. for循环

格式如下:

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

表达式1:初始化
表达式2:判断
表达式3:调整

例子1:在屏幕上打印1~10

int main()
{
	int i;
	for (i = 1; i <= 10; i++)
	{
		printf("%d",i);
	}
	return 0;
}

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


9.do-while循环

格式如下:

do
	语句;
while(表达式);

在do while语句中循环体是至少执行一次的,只是比较特别的地方
例子1:在屏幕在打印1~10

int main()
{
	int i=1;
	do
	{
		printf("%d", i);
		i++;
	} while (i <= 10);
	return 0;
}

例子2:输入一个正整数,计算这个数是几位数

int main()
{
	int a = 0;
	int count = 0;
	scanf("%d",&a);
	do
	{
		a = a / 10;
		count++;
	} while (a);
	printf("这个数是%d位",count);
	return 0;
}

10.continue和break

continue的作用:可以帮助我们跳过某一次循环continue以后的代码,直接到循环的判断部分,进行下一次循环。
break的作用:永久中止循环,只要执行了break就跳出循环。

对比while循环和for循环中continue的区别
在这里插入图片描述


11.循环嵌套

前面学习了三种循环,这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套,这⾥我们就看⼀个例⼦。
练习:找出100~200之中的素数(只能被1和本身整除)

int main()
{
	int i = 100;
	for (i = 100; i <= 200; i++)
	{
	//100~200的数
		int j = 0;
		int a = 1;//假设为素数
		for (j = 2 ; j <i ; j++)
		{
			if (i % j == 0)

			{
				a = 0;
				break;//如果某一个值能被整除就跳出
			}	
		}
		if (a==1)
		{
			printf("%d  ",i);
		}
	}
	return 0;
}

12.goto 语句

C语⾔提供了⼀种非常特别的语法,就是goto语句,goto语句可以实现在同一个函数内跳转到设置好的标号处。

 int main()
 {
 printf("hehe\n");
 goto next:
 printf("haha\n");
 next:
 return 0;
 }

但值得注意如果语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们尽量不要使用多次。


13.总结

本篇文章我主要对if语句,关系操作符,条件操作符,逻辑操作符,switch语句;for、while、do while循环;break,continue语句;go to语句进行了介绍,但依然有没有涉及的地方,感兴趣的同学可以去看看其他博主的文章来学习。

下章预告:猜数字游戏

  • 49
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值