Bootstrap

C语言、分支结构

1、程序执行的三大流程

● 顺序 : 从上向下, 顺序执行代码 默认就是顺序结构

● 分支 : 根据条件判断, 决定执行代码的分支

● 循环 : 让特定代码重复的执行

2、分支结构 

分支结构分为:单分支、双分支和多分支

2.1 单分支(简单的if语句)

简单的if语句基本结构如下:

if(表达式)

{

执行代码块

}

语义:如果表达式结果为真,执行其后的语句,否则不执行

之一:if()后面没有分号

2.2、双分支

1、 if-else语句

if-else语句的基本结构如下:

IF(表达式)

执行代码块1;

ELSE

执行代码块2;

语义:如果表达式的值为真,则执行代码块1,否则执行代码块2

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
//1.案例需求:定义个变量 年龄 用户输入年龄  如果年龄大于18,则允许进网吧
	/*int age;
	printf("请输入用户的年龄:");
	scanf("%d", &age);

	if (age > 18) {
		printf("允许进网吧\n");
	}
	printf("end\n");*/


	/*定义一个年龄变量,如果年龄大于18岁,则允许进网吧,否则,回家写作业*/

	/*int age;
	printf("请输入用户的年龄:");
	scanf("%d", &age);
	if (age > 18) {
		printf("允许进网吧\n");
	}
	else {
		printf("回家写作业\n");
	}
	printf("end\n");*/

	//比较三个数大小,输出最大值
	//int a, b, c;
	//printf("请输入三个数:");
	//scanf("%d %d %d", &a, &b, &c);
	//int max = a;//假设a是最大值
 //  if (max < b) {
	//	max = b;
	//}
	//if (max < c) {
	//	max = c;
	//}
	// 这个编写是不正确的
	//if (max < b) {
	//	max = b;
	//}else {
	//	max = c;
	//}

	/*printf("max=%d\n", max);*/

	/*案例需求:*/
		//天猫双十一,推出优惠活动:
		//○ 购物满 50 元,打 9 折;
		//○ 购物满 100 元,打 8 折;
		//○ 购物满 200 元,打 7 折;
		//○ 购物满 300 元,打 6 折;
		//编程计算当购物满 s 元时,实际付费多少?
	double  s,payMoney;
	printf("请输入您购物的钱数:");
	scanf("%lf", &s);
	//s >= 50&&s<100正确         50<=s<100 错误
	/*if (s >= 50&&s<100) {

	}*/
	if (s >= 300) {
		payMoney = s * 0.6;
	}
	else if (s >= 200) {
		payMoney = s * 0.7;
	}
	else if (s >= 100) {
		payMoney = s * 0.8;
	}
	else if (s >= 50) {
		payMoney = s * 0.9;
	}
	else {
		payMoney = s;
	}
	printf("payMoney=%.2lf\n", payMoney);

	return 0;
}
/*
流程控制: 控制程的执行顺序
  三大类:
      (1)顺序结构
	  (2)分支结构***
	          单分支
			    if(条件判断){
				    条件成立: 执行此代码块
				}

			双分支
			 if(条件判断){
			  条件成立: 代码块1
			 }else{
			  条件不成立: 代码块2
			 }

			 if       if                if...else

        多分支
		 if(条件1){
		   条件1成立: 代码块1
		 }else if(条件2){
		   条件1不成立,但是条件2成立: 执行代码块2
		 }else if(条件3){
		   条件1 2都不成立,但是条件3成立: 执行代码块3
		 }
		 ...

		 else{
		   以上条件都不成立,执行才代码
		 }
	    

	   (3)循环结构

*/

 

2.3、三目运算符(双分支结构的一种)

三目运算符的结构:

表达式1?表达式2:表达式3;

执行过程:先判断表达式1是否为真,如果为真,执行表达式2,否则执行表达式3;

//三目运算符
//案例修改:使用三目运算符,请输入两个数,然后输出两个数的较大者
int a, b;
printf("请输入两个数:");
scanf("%d %d", &a, &b);
a > b ? printf("%d\n", a) : printf("%d\n", b);

return 0;

2.4、多分支

2.4.1、多重if-else语句

多重if-else语法结构如下:

IF(表达式1)

执行代码块1;

IF(表达式M)

ELSE

执行代码块M;

ELSE

执行代码块N;

语义:依次执行表达式的值,当出现某个值为真时,则执行对应的代码块,否则执行代码块n

注意:当某一条件为真时,就不会向下执行该分支结构的其他语句

2.4.2、switch多分支语句

●测试一个表达式是否等于一些可能的值,并根据表达式的值执行相应的代码块,可以使用switch语言实现

● switch可以支持数据类型:

○ int

○ 枚举类型

○ char类型

● switch和if区别:

○ 需要根据布尔条件来执行不同的代码块,则应使用if语句

○需要根据表达式的值来执行不同的代码块,则应使用switch语句

switch的语法格式:

/*switch多分支:

switch(表达式的值){

case value1:

代码块1;

break;

case value2:

代码块2;

break;

......

deafult:

以上代码都不成立执行 代码块n

}

注意:switch 仅用于检查变量与一组常量值是否相等 ,switch 语句不能直接用于范围比较(如 score > 90)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	//案例需求:输入不同的int类型数,返回星期数
	//	● 输入int类型的数据, 根据结果输出不同的内容
	//	○ 输入1:输出Monday
	//	○ 输入2:输出Tuesday
	//	○ 输入3:输出Wednesday
	//	○ 输入4:输出Thursday
	//	○ 输入5:输出Friday
	//	○ 输入6:输出Saturday
	//	○ 输入7:输出Sunday
	//	○ 输入其它:输出error
	int num;
	printf("请输入1~7的数字:");
	scanf("%d", &num);
	switch (num) {
	case 1:
		printf("Monday");
		break;
	case 2:
		printf("Tuesday");
		break;
	case 3:
		printf("Wednesday");
		break;
	case 4:
		printf("Thursday");
		break;
	case 5:
		printf("Friday");
		break;
	case 6:
		printf("Saturday");
		break;
	case 7:
		printf("Sunday");
		break;
	default:
		printf("error,请重新输入1~7");
		break;
	}

	return 0;
}

/*
switch分支         可以和 if  else if  else if    else  互转的

比较大小 (区间性质的  建议用  if  elseif)

有固定的值的 建议用switch

//变量 是最基本的表达式      res=    a+b      大部分放一个变量
// 等于         千万不能忘记 break
switch(表达式){
    case  值1:
	     代码块1;
		 break;
	 case  值2:
		 代码块2;
		 break;
		.....
	default:
	   以上条件都不成立,才执行
	   [break];
}


case 1:  case 2:  case 3:
 代码块
*/

;