Bootstrap

【第六天打卡】一月速通C语言。流程控制语句(一)。

第六天

  • 流程控制语句
    • 顺序结构
    • 分支机构
    • if语句
    • switch语句

昨天学习了运算符和操作符,今天主要学习流程控制语句。

流程控制语句

分为三类:顺序结构,分支结构,循环结构

顺序结构

顺序结构是程序默认的执行流程,从上往下依次执行。

分支机构

if语句

判断语句,满足条件才执行

#include<stdio.h>
//需求:体温过高输出发烧了,体温正常输出体温正常。
int main()
{
	double temperature = 36.1;
	if (temperature >= 37.0)
	{
		printf("发烧了\n");
		}
	printf("体温正常\n");
	return 0;
	}

练习:游戏角色初始血量200,受到80伤害,技能恢复100血量,当前血量多少。

#include<stdio.h>
int main()
{
	int blood = 200;
	int damage = 80;
	int restore = 100;
//受到伤害时判断血量是否为0;
	if (blood > damage)
	{
		blood -= damege;
		printf("当前血量为%d.\n",blood);
	}
	else
	{
		damage = 0;
		printf("当前血量为0。游戏结束\n");
		break
	}
//恢复时判断血量是否超出初始血量;
	blood += restore;
	if (blood >= 200)
	{
		blood = 200;
		printf("当前血量为%d\n",blood);
	}
	else
	{
		printf("当前血量为%d\n",blood);
	}
	return 0;
}

在C语言中如果判断的结果是个数字,非0表示条件成立,0表示条件不成立。
如果大括号中语句体只有一行,那么大括号可以省略不写
示例:

#include<stdio.h>
int main()
{
	if (1)
	printf("执行了\n");
	if (0)
	printf("这句话执行不了\n");
	return 0;
}

需求:小明和小红去看电影,如果在同一排且连着坐,那么开心的看电影,如果不再同一排且没有连着坐那么会开心的打游戏。

#include<stdio.h>
int main()
{
	int rowA = 5;
	int colA = 6;

	int rowB = 5;
	int colB = 5;

	if(rowA == rowB && (colA - colB ==1 || colB -colA == 1)
	{
		printf("小明开心的看电影\n");
		}
	else
		printf("小明开心的打游戏\n");

	return 0;
}

需求vip等级对应不同的服务;
VIP1(0-99):每消费1元1积分;
VIP2(100-199):每消费1元1.2积分;
VIP3(200-499):每消费1元1.4积分;
VIP4(500-999):每消费1元1.6积分;
VIP5(1000-1999):每消费1元2积分;
VIP6(2000-4999):每消费1元2.5积分;
VIP7(5000-9999):每消费1元3积分;
VIP8(10000+):解锁积分商城;

#include<stdio.h>
int main()
{
	int score;
	int money;
	printf("请输入您的VIP积分:\n");
	scanf("%d",&score);
	printf("请输入您的充值金额:\n");
	scanf("%d",&money);
	if(score >=0 && score < 100)
	{
		printf("您是VIP1用户,每消费1元1积分。\n");
		score = score + money *1;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else if(score >= 100 && score < 200)
	{
		printf("您是VIP2用户,每消费1元1.2积分。\n");
		score = score + money *1.2;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else if(score >=200 && score < 500)
	{
		printf("您是VIP3用户,每消费1元1.4积分。\n");
		score = score + money *1.4;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else if(score >=500 && score <1000)
	{
		printf("您是VIP4用户,每消费1元1.6积分。\n");
		score = score + money *1.6;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else if(score >=1000 && score < 2000)
	{
		printf("您是VIP5用户,每消费1元2积分。\n");
		score = score +money *2;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else if(score >=2000 && score < 5000)
	{
		printf("您是VIP6用户,每消费1元2.5积分。\n");
		score = score + money *2.5;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else if(score >=5000 && score < 10000)
	{
		printf("您是VIP7用户,每消费1元3积分。\n");
		score = score + money *3;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else if(score >=10000)
	{
		printf("您是VIP8用户,每消费1元3积分,并解锁积分商场。\n");
		score = score + money*3;
		printf("您现在拥有的积分是:%d\n",score);
	}
	else
		printf("输入错误\n");
	return 0;
}
	

switch语句

把所用的选项列举出来,根据不同的条件任选其一。
执行流程:

  • 首先计算表达式的值。
  • 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行过程中遇到break就会结束。
  • 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。
    示例:
    一周菜单。
#include<stdio.h>
int main()
{
	int week = 1switch(week)
	{
		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");
			break;
		}
	}

注意事项:
- 表达式计算值只能为字符或者整数。
- case值只能是字符整数的字面量,不能是变量。
- case值不允许重复。
- break表示中断结束switch,没有的话所有case语句会依次执行。
- default所有情况都不匹配执行该语句。

  • default可以省略。default可以放在任何位置,只有所有条件不匹配时才会执行。
  • case穿透,根据条件去匹配执行语句,要是没有遇到break会依次执行case下面的语句,直到遇到break或者所有语句执行完成才会结束。case穿透只会往下穿,不会往上穿。

示例:根据月份不同输出对应的季节。

#include<stdio.h>
int main()
{
	int month;
	printf("请输入月份:\n");
	scanf("%d",&month);
	switch(month)
	{
//12,1,2为冬季,利用case穿透。
		case 12:
		case 1:
		case 2:
			printf("当前季节为冬季\n");
			break;
//3,4,5为春季。
		case 3:
		case 4:
		case 5:
			printf("当前季节为春季\n");
			break;
//6,7,8为夏季。
		case 6:
		case 7:
		case 8:
			printf("当前季节为夏季\n");
			break;
//9,10,11为秋季。
		case 9:
		case 10:
		case 11:
			printf("当前季节为秋季\n");
			break;
//输入错误的情况
		default:
			printf("输入错误,没有此季节\n");
			break;
		}
		return 0;
}

机票预定系统在既定的条件下选择可以用switch
1,机票查询。2,机票预定。3,机票改签。4,退出服务。其他按键也是退出服务。

#include<stdio.h>
int main()
{
	int num;
	printf("请输入交易选项:\n 1,机票查询。2,机票预定。3,机票改签。4,退出服务。\n");
	scanf("%d",&num);
	switch(num)
	{
		case 1:
			printf("机票查询\n");
			break;
		case 2:
			printf("机票预定\n");
			break;
		case 3:
			printf("机票改签\n");
			break;
		case 4:
			printf("退出服务\n");
			break;
		default:
			printf("退出服务\n");
			break;
	}
	return 0;
}
;