C语言,if 语句 系列

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的, 主要有三大流程控制语句。

1) 顺序控制
2)分支控制 (有很多,这篇文章主写if语句 ,switch放在后面写)
3)循环控制 (for,while,do…while ,后面文章写)

顺序控制介绍

程序从上到下逐行地执行,中间没有任何判断和跳转。
在这里插入图片描述

顺序控制举例和注意事项

Java,C 中定义变量时采用合法的前向引用的原则。如:

void main() { 
	int num1 = 12; 
	int num2 = num1 + 2; 
}

错误形式:

void main() { 
	int num2 = num1 + 2; 
	int num1 = 12; 
}

分支控制 if-else

让程序有选择的的执行,分支控制有三种:
1) 单分支
2) 双分支
3) 多分支

单分支

基本语法

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

说明:当条件表达式为真 (非 0) 时,就会执行 { } 的代码,返回假(0) 时,不会执行{ } 的代码。

案例说明: 编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 “你年龄大于 18,要对自己的行为负责!”

#include<stdio.h>
void main(){
	
	int age = 0;
	printf("请输入年龄");
	scanf("%d",&age);
	
	if(age > 18){
		printf("\n 你年龄大于 18,要对自己的行为负责!");
	}
	printf("\n爱干啥干啥吧"); 
}

双分支

基本语法

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

说明:当条件表达式成立(为真),执行代码块 1,否则执行代码块 2

案例演示 : 编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 “你年龄大于 18,要对 自己的行为负责!”。否则 ,输出”你年龄太小,放过你了.”

#include<stdio.h>
void main(){
	
	int age = 0;
	printf(" 请输入年龄");
	scanf("%d",&age);
	
	if(age > 18){
		printf("\n 你年龄大于 18,要对自己的行为负责!");
	}else{
		printf("\n 你年龄太小,放过你了");
	}
	
	printf("\n爱干啥干啥吧"); 
	
}

练习题

判断一个年份是否是闰年,闰年的条件是符合下面二者之一:
(1)年份能被 4 整除,但不能被 100 整除;
(2) 能被 400 整除;

#include<stdio.h>
void main(){
	
	int year = 0;
	printf("请输入年份");
	scanf("%d",&year);
	
	if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ){
		printf("%d 是闰年",year);
	}else{
		printf("%d 是平年",year);
	}
		
}

多分支

基本语法

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

说明:
1) 当条件表达式 1 成立时,即执行代码块 1
2) 如果表达式 1 不成立,才去判断表达式 2 是否 成立,
3)如果表达式 2 成立,就执行代码块 2
4)以此类推如果所有的表达式都不成立

案例演示

佟欢参加 心理咨询师 考试,她和昊哥达成承诺: 如果: 成绩为 100 分时,奖励一部手机; 成绩为(80,99]时,奖励一支钢笔; 当成绩为[60,80]时,奖励一个保温杯; 成绩为其它时,给大嘴巴子。 请从键盘输入佟欢的 心理咨询师 考试,并加以判断, 输出提示

#include<stdio.h>
void main() {

	int score = 0;
	printf("请输入佟欢的成绩:");
	scanf("%d",&score);

	if(score == 100) {
		printf("奖励一部手机");
	} else if(score > 80 && score <=99) {
		printf("奖励一支钢笔");
	} else if(score >= 60 && score <= 80) {
		printf("奖励一个保温杯");
	} else {
		printf("大嘴巴子伺候");
	}

}

在这里插入图片描述

嵌套分支

基本介绍

在一个分支结构中又完整的嵌套了另一个分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层 分支。嵌套分支不适合过多,最多不要超过 3 层

基本语法

if(){ 
	if(){ //被包含的可以是单分支,双分支,多分支
		.....
	}else{
		......
	}
}else{
	......
}

应用案例 1

参加百米运动会,如果用时 8 秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。输入成绩和性别,进行判断。

#include<stdio.h>
void main() {

	//参加百米运动会,如果用时 8 秒以内进入决赛,否则提示淘汰。
	//并且根据性别提示进入男子组或女子组。输入成绩和性别,进行判断。

	int second = 0;
	printf("请输入秒数");
	scanf("%d",&second);

	char gender = ' ';

	if(second <= 8) {
		printf("请输入性别(m/f)");
		scanf("%c",&gender);
		scanf("%c",&gender);
		
		if(gender == 'm') {
			printf("请进入男子组");
		} else if(gender == 'f') {
			printf("请进入女子组");
		} else {
			printf("你不男不女是个什么东西?");
		}
	} else {
		printf("你已经被淘汰了,继续努力");
	}
}

应用案例 2

出票系统:根据淡旺季的月份和年龄,打印票价
4_10 旺季:成人(18-60):60 儿童(<18):半价 老人(>60):1/3
淡季:成人:40 其他:20

#include<stdio.h>

//出票系统:根据淡旺季的月份和年龄,打印票价 [考虑学生先做] 4_10 旺季:
//成人(18-60):60 儿童(<18):半价 老人(>60):1/3 淡季:成人:40 其他:20

void main() {

	int season = 0;//定义季节
	int age = 0; //定义年龄
	double price = 60 ;//定义票价

	printf("请输入季节来判断旺季or淡季");
	scanf("%d",&season);

	if(season >= 4 && season <= 10) {
		printf("你已经进入旺季时刻,请让我看看你年龄");
		scanf("%d",&age);
		if(age > 0 && age < 18) {
			printf("根据你的年龄,你的票价是 %.2f",price / 2 );
		} else if(age >= 18 && age < 60) {
			printf("根据你的年龄,你的票价是 %.2f",price);
		} else if(age >= 60){
			printf("根据你的年龄,你的票价是 %.2f",price / 3);
		}else{
			printf("活这么大第一次看到这个年龄啊!!");
		}
	} else if ((season > 10 && season < 13) || (season >=1 && season < 4 )) {
		printf("你已经进入淡季时刻,请让我看看你年龄");
		scanf("%d",&age);
		price = 40;
		if(age >= 18 && age < 60) {
			printf("根据你的年龄,你的票价是 %.2f",price);
		} else if((age > 0 && age < 18) || (age >= 60)){
			printf("根据你的年龄,你的票价是 %.2f",price / 2);
		}else{
			printf("活这么大第一次看到这个年龄啊!!");
		}

	} else {
		printf("你输入的数字有问题,本景点不会向你售票");
	}
}

编译时一定要反复检查,要细心。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值