C语言分支循环语句

 众所周知循环是每一门编程语言都必不可少的一项功能,循环的作用就是重复一件事情,而分支则是判断是否执行条件下的语句。

目前C语言主流的循环为for while dowhile;

分支语句有if-else switch

首先先来了解一下分支语句,分支语句的作用就是判断是否执行条件下的语句

分支:

if-else单分支:

if(判断条件){
语句
}

流程图可以看出程序经过判断条件式如果符合条件则执行语句,否者程序不执行语句,但是程序整体依然会继续执行下去

如果我们想对某一变量,表达式等符合某一条件进行单独操作时我们可以使用if语句,这么说可能不清楚具体看例子:

#include <stdio.h>

int main()
{
	int year = 18;
	if (year == 18){
		
		printf("刚满18岁!");
	}
	return 0;
}

这里我们定义了一个变量year当year满足year == 18这个条件的时候我们输出刚满18岁!

if-else双分支:

if(判断条件){
语句1;
}
else{
语句2;
}

从上面流程图可以看出,程序经进入判断条件时出现了两条分支,一条是满足判断条件的分支,一条是不满足判断条件的分支。

一个变量,一个表达式等如果符合我们的条件,我们想这样做,如果不符合我们要那样做,就可以使用以上if-else双分支语法。

例:

#include <stdio.h>

int main()
{
	int year = 18;
	if (year >= 18){
		
		printf("成年了!");
	}
	else{
		printf("未成年!");
	}
	
	return 0;
}

这里我们定义了一个变量year,当程序往下走的时候我们会遇到一个判断条件,当year满足year>=18岁的时候输出成年了!否则输出未成年。

if-else多分支:

if(条件1){
语句1

}else if(条件2){
语句2

}else if(条件3){
语句3

}....
else if(条件n){
语句n

}else {
全部不满足时的语句
}

当有多个条件,并且每个条件都需要有自己独立的语句的时候就可以用多分支结构

例:

#include <stdio.h>

int main()
{
	int year;
	printf("请输入年龄:");
	scanf("%d", &year);
	if (year >= 0 && year < 18){
		
		printf("未成年!");
		
	}else if(year >= 18 && year < 30){
		
		printf("青年");
		
	}else if(year >= 30 && year < 50){
		
		printf("中年");
		
	}else if(year >= 50 && year < 120){
		
		printf("老年");
		
	}else{
		printf("输入错误!");
	}
	return 0;
}

这里我们设计了一个程序,用户输入年龄根据条件判断用户属于哪个年龄段的人,用户输入年龄如果大于等于0小于18输出未成年,输入年龄大于等于18小于30输出青年,输入年龄大于等于30小于50输出中年,输入年龄大于等于50小于120输出老年,其余的情况均输出"输入错误!"

switch 分支

Switch语句和if-else多分支很像都是用于判断条件有多个结果的情况但是Switch语句的条件表达式只能是整形结果也只能是整形

switch (条件表达式) {
 case 结果1: 语句
 case 结果1: 语句
 default: 全部结果都不符合的语句
}

这里我们写一个判断月份是否为大月,如果是输出大月如果不是输出小月

#include <stdio.h>

int main()
{
	int month;
	printf("请输入月份:");
	scanf("%d", &month);
	switch (month) {
	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;
	case 8:
		printf("大月");
		break;
	case 9:
		printf("小月");
		break;
	case 10:
		printf("大月");
		break;
	case 11:
		printf("小月");
		break;
	case 12:
		printf("大月");
		break;
	default:
		printf("输出错误");
		break;
	}
	return 0;
}

这里的break语句是用于跳出分支的,如果不加break语句我们输入1的时候程序会从1这个分支一直往下走直到遇见break语句才跳出分支,假设我们删除全部break语句就会成这样

同理我们也可以运用这个原理来简化一下程序,当我们输入1 3 5 7 8 10 12 的时候输出大月,2 4 6 9 11 的时候输出小月其余情况输出错误。

#include <stdio.h>

int main()
{
	int month;
	printf("请输入月份:");
	scanf("%d", &month);
	switch (month) {
	case 1:	
	case 3:
	case 5:	
	case 7:
	case 8:
	case 10:		
	case 12:
		printf("大月");
		break;
	case 2:
	case 4:
	case 6:
	case 9:
	case 11:
		printf("小月");	
		break;
	default:
		printf("输出错误");
		break;
	}
	return 0;
}

循环

循环的作用就是重复迭代的做一件事,我们在写代码的时候不可能对一件需要重复5次的事情写5次相同一样的代码这个时候就需要用到循环了。

while循环

当判断表达式为0的时候循环结束,不为0则继续,如果遇到continue语句结束本次循环进入下一次循环,如果遇到break语句直接结束循环。

这里我们写一个打印1-10中偶数的程序

#include <stdio.h>

int main()
{
	int i = 10;
	while(i){
		if (i % 2 == 0){
			printf("%d ", i);
			i--;
			continue;
		}
		if (i == 1){
			break;
		}
		i-- ;
	}
	return 0;
}

这里我们定义了一个为10的i变量,当i进入循环的时候,先判断i是不是偶数如果是输出i并自减1同时跳出本次循环进入下次循环,如果i不是偶数则判断i是否为1如果是直接结束循环。其余情况i都自减1。while括号里的i同样也可以换成表达式。

for循环

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

表达式1 ⽤于循环变量的初始化

表达式2 ⽤于循环结束条件的判断

表达式3 ⽤于循环变量的调整

for循环先是执行表达式1初始化循环变量,接着是表达式2循环变量的判断,如果判断结果为0结束循环,不为0执行循环语句如果碰见break直接结束循环,如果碰见continue结束本次循环进入到表达式3变量调整,之后再次进入表达式2继续循环。如果没有碰见break和continue则执行完循环语句后执行continue之后的语句。

这里我们写一个打印2-100素数的的程序

#include <stdio.h>

int main()
{
	int i;
	for(i = 2; i <= 100; i++){
		int j, boo = 1;
		for(j = 2; j < i; j++){
			if(i % j == 0){
				boo = 0;
				break;
			}
		}
		if (boo == 1){
			printf("%d ", i);
		}
	}
	return 0;
}

我们都知道一个数如果只能被1和它本身整除那么它就是素数,这里程序先给i初始化一个2的值然后判断i是否小于等于100如果符合则执行循环语句,循环语句里先定义一个变量j然后再定义一个变量boo用于判断素数,接着进入内循环,内循环表达式1给j初始化一个2的值,表达式2规定j必须小i。然后进入内循环语句如果i%j余0,bool改为0结束内循环,否则进入内循环表达式3j++继续内循环。这里的内循环主要是用来判断i是不是能被除1和它本身之外的数整除,如果内循环执行完了都没有触发boo = 0,那么这个数一定是素数应为他不能被除1和它本身之外的数整除。接着就执行判断条件boo == 1如果没有触发内循环boo = 0那么boo值为1符合条件打印i。接着继续执行循环直到i<=100不满足为止。

do while

do{
	
}while(判断表达式);

do while循环绝对是这三个循环中最特殊的,其他循环是先判断在执行,而它是先执行在判断。

举个例子

#include <stdio.h>

int main() {
	int i = 0;
	do {
		printf("输入1打游戏\n输入0退出游戏\n");
		printf("请输入你的选着:");
		scanf("%d", &i);
		if (i == 1) {
			printf("打游戏\n");
		} else if (i == 0) {
			printf("退出游戏\n");
			break;
		} else {
			printf("输入错误\n");
		}
	} while (i);
	return 0;
}

这里我们写了一个简化的游戏菜单,用户输入1开始游戏输入0停止游戏输入其他则提示输入错误

这个程序可以一直输入只要用户不输入0;如果用的是for循环和while循环他们则是要先判断后才能让我们输入,而do while正好可以让我们输入了之后再判断要不要循环!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值