C语言——分支循环

一 if语句

二 switch语句

三 while循环语句

四 for循环语句

五 do-while循环句

六 循环嵌套

七 break和continue语句

一 if语句

if语句的格式

if(表达式)

语句

else

语句

例子:if....else语句判断是否是奇数

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a % 2 == 0)
		printf("%d是偶数", a);
	else 
		printf("%d是奇数", a);

	return 0;
}

嵌套if

在if else语句中,else可以与另外一个if连用构成多重判断

if()

语句

else  if()

语句

else

例如:输入一个整数判断是0还是正数或者负数

#include<stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a == 0)
		printf("输入的数字是0\n");
	else if (a > 0)
		printf("输入的数是正数");
	else printf("输入的数是奇数");
	return 0;
}

但是这样的if   else语句容易让人产生误解可以用括号实行代码块的方式更利于理解代码

if()

{

}else if()

{

}else if()

{

}

....

例如:

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

注意:else只有他最近的if匹配 一定要注意这种情况else悬空问题

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

结果是什么都不输出

这就是指针悬空问题,else是跟他最近的if匹配的,从else的照应位置而言应该输出“呵呵”但是结果什么都不输出,这种方式写代码容易出现bug建议if else通过代码块的方式输出,把语句用括号的方式括起来

例如:

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

		else
	{
		printf("呵呵\n");
	}
	return 0;
}

二 switch语句

switch语句是一种特殊的分支结构,相较于if else可读性更好的,可以判断多种情况

格式如下;

switch(expression)

{

case  (表达式)语句  break

case  (表达式)语句  break

....

default     语句

}

expression 必须是整形表达式   case后的表达式是整形常量

default是所有case都没有匹配的情况执行

#include<stdio.h>
int main()
{
	int a;
	scanf("%d",& a);
	switch (a % 2)
	{
	case 0:
			printf("输入的得数是0或偶数\n");
			break;
	case 1:
			printf("输入的是奇数\n");
			break;
	}
	return 0;
}

注意:case后面要加空格和数字隔开最后加    :

记得加break语句跳出循环不加break语句会执行所有的语句

练习:输入1到7打印对应的星期几

#include<stdio.h>
int main()
{
	int day;
	scanf("%d",& day);
	switch (day)
	{
	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;
	default :
		printf("输入的数字超出范围\n");
	}
	return 0;
}

default与case的选后顺序并没有要求,default可以放前面也可以放后面,通常是把default放最后面

三 while 循环语句

while(表达式)

语句;

while语句和if语句很类似但是有区别

while循环流程:

#include<stdio.h>
int main()
{
	int a = 1;
	if (a)
	{
		printf("haha\n");

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

	}
	return 0;
}

有结果可知while语句陷入死循环,if语句只执行一次

while语句先判断是否为0,不为0进入循环,循环结束再次判断是否为0,为零停止,否则继续直到表达式为零为止,上述代码并没有结束循环的标志

例子:打印1~10的数字

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

}
		return 0;
	}

例子:输入一个整数,逆序打印出来

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	while (a)
	{
		printf("%d ", a % 10);
		a /= 10;
	}
	return 0;
}

当输入一个整数时,a%10可以得出最后一位,1245%10=5    a/10可以舍弃最后一位数   1245/10=124 因为我们定义的a为整数类型返回124,直至循环a为0结束循环

四 for语句

格式

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

{

语句;

}

表达式1进行初始化,通过表达式2进行判断,满足进入循环,否则结束循环即  表达式2!=0

整个结果就是表达式1执行一次,剩下的由表达式2,循环语句,表达式3进行调整

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

练习 :1~100之间打印3的倍数和

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

五 do-while语句

语法格式

do

{

语句;

}while(表达式)

while和for语句是先判断再循环 do-while语句是先循环再判断   do-while语句循环体至少执行一次

例:打印1~10

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

输入一个正整数计算是几位数

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

六 循环嵌套

for语句while语句和if语句相结合更好的实现程序设计

例:打印100~200之间的素数

#include<stdio.h>
int main()
{
	int i ;
	for (i = 100;i <= 200;i++)//对100到200进行遍历
	{
		int j = 0;
		int flag = 1;
		for (j = 2;j < i;j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
			printf("%d ", i);
		
	}
	return 0;
}

结语

这就是我对于C语言的循环分支结构的分享

如果这篇文章对您有帮助的话请点的赞吧~

如有错误请多多指正!

(以上所有代码都是在vs2022中实现的)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值