【C语言从不挂科到高绩点】04-流程控制语句-if

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程

本套课程将会从0基础讲解C语言核心技术,适合人群:

  1. 大学中开设了C语言课程的同学
  2. 想要专升本或者考研的同学
  3. 想要考计算机等级证书的同学
  4. 想要从事C/C++/嵌入式开发的同学

前文传送:

【C语言从不挂科到高绩点】01-C语言概述-CSDN博客

【C语言从不挂科到高绩点】02-变量、数据类型、标识符、关键字-CSDN博客

【C语言从不挂科到高绩点】03-C语言运算符

​分享不易,耗时耗力,麻烦给个不要钱的关注和赞

承接毕设指导,技术答疑,学习路上缺少导师的同学可以私信我

更多学习资料,公众号:墨轩学习网,B站:墨轩大楼

五、选择结构和循环结构

C 语言中三大结构:

  1. 顺序结构:就是让程序从头到尾依次逐行执行每一条语句,不重复执行代码
  2. 选择结构:可以根据不同的条件从而选择执行不同的代码
  3. 循环结构:可以让程序循环重复执行某段代码

5.1 选择结构-if

5.1.1 if 语句格式 1

if(条件表达式){
    代码块;
}

表示:如果条件表达式成立,结果为 1,就执行代码块,否则就不执行



#include <stdio.h>

int main(){
	// 输入年龄判断是否成年了
	// 1. 定义变量
	int age = 0;
	// 2. 提示输入
	printf("请输入年龄:");
	// 3. 将输入的内容扫描到变量中
	scanf("%d",&age);

	// 如果age<18 ,条件成立,就会执行if语句中的代码块
	// 如果age<18 不成立,if语句中的代码就不会执行
	if(age<18){
		printf("你是未成年\n");
	}

	printf("O(∩_∩)O哈哈~\n");

	return 0;
}

此种 if 格式,适用于,当达到某个条件时,才去执行某段代码。比如:如果我中了 500 万,给你们每人发 20 万。

5.1.2 if 语句格式 2

if(条件表达式){
    代码块1;
}else{
    代码块2;
}

表示:如果条件表达式成立,结果为 1,就执行代码块 1.否则就执行代码块 2

#include <stdio.h>

int main(){

	printf("我:我能进网吧吗?\n");
	int age = 0;
	printf("网管:你多大了?");
	scanf("%d",&age);

	// 网管开始做判断
	if(age>=18){//  如果age满足大于或者等于18
		printf("网管:你已经成年了!可以进来happy了\n");
	}else{
		printf("网管:滚~回家写作业去!\n");
	}

	return 0;
}

此种格式适用于如果满足条件就执行一个操作,不满足就执行另外一种操作。

需要注意的问题:如果 if 或者 else 中只有一行代码。这个时候 if 或者 else 的大括号可以省略。

if(age>=18)//  如果age满足大于或者等于18
    printf("网管:你已经成年了!可以进来happy了\n");
// printf("O(∩_∩)O哈哈~"); // 添加此行代码,编译就会出错
else
    printf("网管:滚~回家写作业去!\n");
printf("┭┮﹏┭┮");

省略大括号之后,if 或者 else 只能管住 1 行代码,后面的代码实际上已经不在 if 语句里面了。虽然可以省略,但是建议不要省略

5.1.3 if 语句的格式 3

if(条件表达式1){
    代码块1;
}else if(条件表达式2){
    代码快2;
}else if(条件表达式3){
    代码块3;
}
......
else{
    代码块n
}

表示:从上到下依次判断条件表达式是否成立,如果条件表达式成立,就会执行对应的代码块。执行完代码块之后,整个 if 语句就结束了。后面的条件将不再做判断

如果所有的条件表达式都不成立,最终会执行 else 中的代码块。


#include <stdio.h>

int main(){

	int n=2;
	// 特别注意:在if语句中,等值判断一定要用==
	// 如果写成n=1,就意味着将1赋值给了n,此时的n就是一个非0值,条件成立
	// if(n) 这个条件就恒成立了
	if(n==1){ 
		printf("1\n");
	}else if(n<3){
		printf("3\n");
	}else if(n<6){ // 当条件满足时,会执行这个if语句里面的代码
		printf("6\n");// 执行完这个代码,if语句就结束了

	}else if(n<8){   // 上面条件满足,执行完代码,if语句就结束了,此处条件不做判断
		printf("8\n");
	}else{
		printf("666\n");
	}

	return 0;
}

需要注意的点:在 if 语句的条件表达式中,做等值判断时,要用==,而不是=。=等号是赋值语句,会让条件表达式变成恒成立的状态。

【练习 1】根据输入的月薪判断夜生活

【题目需求】

  1. 如果月薪小于 4000 回家看小电影
  2. 如果月薪在 4000-7000 出去下馆子
  3. 如果月薪 7000-12000 约女朋友出去逛吃逛吃
  4. 如果月薪 12000-18000 出去蹦迪
  5. 如果月薪 18000 以上,为所欲为

【参考代码】

/**
【题目需求】
1. 如果月薪小于 4000 回家看小电影
2. 如果月薪在 4000-7000 出去下馆子
3. 如果月薪 7000-12000 约女朋友出去逛吃逛吃
4. 如果月薪 12000-18000 出去蹦迪
5. 如果月薪 18000 以上,为所欲为

**/

#include <stdio.h>

int main(){

	int salary = 0;
	printf("请输入月薪:");
	scanf("%d",&salary);
	// 在if语句中,如果要实现多个条件同时满足,可以使用 &&,表示并且
	// 如果要实现多个条件满足其中一个,可以使用|| ,表示或者
	// if(salary<4000){
	// 	printf("回家看小电影\n");
	// }else if(4000<=salary && salary<7000){
	// 	printf("出去下个馆子\n");
	// }else if(7000<=salary && salary<12000){
	// 	printf("约女朋友出去逛吃逛吃\n");
	// }else if(12000<=salary && salary<18000){
	// 	printf("出去蹦迪\n");
	// }else{
	// 	printf("为所欲为,我与赌毒不共戴天\n");
	// }

	if(salary<4000){
		printf("回家看小电影\n");
	}else if(salary<7000){
		printf("出去下个馆子\n");
	}else if(salary<12000){
		printf("约女朋友出去逛吃逛吃\n");
	}else if(salary<18000){
		printf("出去蹦迪\n");
	}else{
		printf("为所欲为,我与赌毒不共戴天\n");
	}


	return 0;
}

我知道你小子在想什么,O(∩_∩)O哈哈~ 

【练习 2】使用 if 语句完成菜单功能:

/**
【练习 2】使用 if 语句完成菜单功能:
**/

#include <stdio.h>

int main(){



	printf("*******************************************\n");
	printf("*****        欢迎来到王者峡谷         ****\n");
	printf("*******************************************\n");
	printf("* 1.注册账号  2.登录游戏 3.充值 4.观看直播 *\n");
	printf("*******************************************\n");
	printf("请选择:");

	int con = 0;
	scanf("%d",&con); // 选择的内容,存到con中

	if(con==1){ // 如果输入1
		printf("进入注册账号的功能\n");
	}else if(con==2){
		printf("登录游戏功能\n");
	}else if(con==3){
		printf("充值功能\n");
	}else if(con==4){
		printf("观看直播的功能");
	}else{
		printf("沙雕!只能输入1-4\n");
	}


	return 0;
}

5.1.4 if 语句的嵌套

if 语句中可以嵌套 if 语句,通常用来对条件做进一步的判断。

比如:当年龄大于 18 岁,并且口袋里面至少有 20 元的时候才能上网。

/**比如:当年龄大于 18 岁,并且口袋里面至少有 20 元的时候才能上网。**/


#include <stdio.h>

int main(){
	// 定义年龄变量
	int age = 0;

	// 定义钱的变量
	int money = 0;

	printf("请输入年龄:\n");
	scanf("%d",&age);
	// 判断年龄是否大于等于18
	if(age>=18){
		// 如果成年了,再问有多少钱
		printf("请输入金钱:");
		scanf("%d",&money);
		if(money<20){
			printf("滚~穷逼!\n");
		}else{
			printf("大爷,里面请!\n");
		}

	}else{// 小于18
        printf("滚回家写作业!\n");
	}



	return 0;
}

【练习案例】判断某年某月一共有多少天

【题目需求】

  1. 输入年份和月份
  2. 输出 XX 年 XX 月一共有 XX 天

比如:年份输入 2024 月份输入 2 ,输出:2024 年 2 月一共有 29 天

提示: 闰年判断公式 : year%4==0&&year%100!=0||year%400==0

【参考代码】

/**

【题目需求】
1. 输入年份和月份
2. 输出 XX 年 XX 月一共有 XX 天
比如:年份输入 2024  月份输入 2  ,输出:2024 年 2 月一共有 29 天
提示: 闰年判断公式 : year%4==0&&year%100!=0||year%400==0
**/

#include <stdio.h>

int main(){

	// 1.输入年份和月份
	int year=0,month=0;
	printf("请输入年份和月份:\n");
	scanf("%d %d",&year,&month);


	// 2.先判断月份
	// 月份:1,3,5,7,8,10,12  一共有31天
	if(month==1||month==3 || month==5 || month==7 
			||month==8 || month==10 ||month==12){
		printf("%d年%d月一共有31天\n",year,month);

	}else if(month==4||month==6||month==9||month==11){
		// 月份:4,6,9,11  一共有30天
		printf("%d年%d月一共有30天\n",year,month);
	}else if(month==2){
		// 月份:2   进一步判断闰年还是平年
		//		闰年:2月份有29天
		//	    平年:2月份有28天
		if(year%4==0&&year%100!=0||year%400==0){
			printf("%d年%d月一共有29天\n",year,month);
		}else{
			printf("%d年%d月一共有28天\n",year,month);
		}

	}else{
		printf("月份输入有误,请重新输入\n");
	}
	

	return 0;
}

【练习案例】输入三个数,找出 3 个数中的最大值

1. 使用3目运算符
2. 使用if语句

【参考代码】

/**
练习案例】输入三个数,找出 3 个数中的最大值
**/

#include <stdio.h>

int main(){

	int a,b,c;
	printf("请输入三个数:");
	scanf("%d %d %d", &a,&b,&c);

	// 最大值
	int max = 0; 
	if(a>b){
		// 如果能进入到这个if语句中,说明a>b,b不可能是最大值,不考虑b
		// 此时只需要拿a和c进行比较
		if(a>c){
			max = a; // 设置最大值
		}else{
			max = c; // 实则之最大值
		}
	}else if(b>c){ // 能进入到这个判断语句,那必定是a>b不成立,此时的a必定小于或者等于b
		max = b;

	}else{ 
		// 能进入到这个里面来,说明 a<=b,b<=c  此时说明c是最大值
		max = c;
	}
	printf("最大值是%d\n",max);

	// 三目运算符的方式
	// 1. 假如 a>b 成立的,b不可能为最大值,
	//    此时比较a和c 此时就会选择a>c?a:c
	// 2. 如果 a>b 不成立,a不可能为最大值,
	//    此时比较b和c 此时就会选择b>c?b:c
	max =  a>b?(a>c?a:c):(b>c?b:c);
	printf("最大值是%d\n",max);


	return 0;
}

打完收工,把关注和赞留下,你可以走了!去享受你幸福美满的生活吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听潮阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值