第05节课 选择结构程序设计

第05节课 选择结构程序设计

if

if 基本选择结构

基本形态

if(条件)

{

​ 条件满足执行这部分内容

}

if 理解为“如果”

  1. 基本if语句

    if("我很帅")
    {
    	printf("我是帅哥\n");
    }
    
  2. 不带大括号的时候,只能管if下面的一条语句

    if("你很丑")
    	printf("好像是个事实\n");
    printf("我声音不好听!\n");
    
  3. 不正常的条件描述

    非零值表示成立,只有0或者空,\0,表示不成立

    int iNumber = 0;
    if(iNumber)
    {
    	printf("iNumber=0\n");
    }
    if(iNumber = 3)		//赋值表达式最终的值就是你给的值
    {
    	printf("iNumber\n");
    }
    
  4. 正常情况下,条件一般是用条件表达式以及逻辑表达式去描述条件

    案例1:判断输入的数字是不是偶数

    printf("Input Num:");
    scanf_s("%d",&iNumber);
    if(iNumber % 2 == 0)
    {
    	printf("iNumber是偶数");
    }
    if(iNumber % 2 != 0)
    {
    	printf("iNumber是奇数\n");
    }
    
互补形态
if(条件)
{
		成立
}
else
{
		不成立处理
}

注意:else不能单独存在,必须和if一起出现

上面代码等同于下面的写法:

if(iNumber % 2 == 0)
{
	printf("iNumber是偶数\n");
}
else
{
	printf("iNumber是奇数\n");
}
条件的细致化过程

案例2:评分等级

A 90

B 80-89

C 60-79

D 0-59

用户输入一个分数:99

​ 打印等级:A

int score = 0;
printf("请输入分数:\n");
scanf_s("%d",&score);
if(score >= 90 && score <= 100)
{
	printf("A\n");
}
if(score >= 80 && score <= 89)
{
	printf("B\n");
}
if(score >= 60 && score <= 79)
{
	printf("C\n");
}
if(score >= 0 && score <= 59)
{
	printf("D\n");
}
if(条件1)
{

}
else if(条件2)
{

}
……
else
{

}
int score = 0;
printf("请输入分数:\n");
scanf_s("%d",&score);
if(score >= 90 && score <= 100)
{
	printf("A\n");
}
else if(score >= 80 )
{
	printf("B\n");
}
else if(score >= 60 )
{
	printf("C\n");
}
else if(score >= 0 )
{
	printf("D\n");
}
else
{
	printf("输入的分数有问题!\n");
}

if 嵌套语句

条件的逐步细化:嵌套描述

案例:

判断当前数字是否能分别被7和5整除

int iNumber = 0;
if(iNumber % 7 == 0 && iNumber % 5 == 0)
{
	printf("OK\n");
}

嵌套是分步骤描述

先描述能被7整除,再描述被5整除

if(iNumber % 7 == 0)
{
	if(iNumber % 5 == 0)
	{
		printf("OK\n");
	}
	else
	{
		printf("NO!\n");
	}
}
else
{
	printf("NO!\n");
}

注意:没有{}的时候的if和else的搭配

​ else只和最近的if搭配

if(iNumber % 7 == 0)
	if(iNumber % 5 == 0)
		printf("OK\n");
	else
		printf("NO!\n");
else
	printf("NO!\n");

下面两个是有区别的:

if(iNumber % 7 == 0)
{
	if(iNumber % 5 == 0)
		printf("OK\n");
	else
		printf("NO!\n");
    if(iNumber % 2 == 0)
        printf("能被2整除\n");
}
else
{
	printf("NO!\n");
}

没有{}的时候的if和else的搭配

if(iNumber % 7 == 0)
	if(iNumber % 5 == 0)
		printf("OK\n");
	else
		printf("NO!\n");
    if(iNumber % 2 == 0)
        printf("能被2整除\n");
else
	printf("NO!\n");

switch

switch的基本用法

swtich(表达式)
{
case 常量1:
	.....
case 常量2:
	.....
....
default:	//上面剩余的情况
	.....
}

注意点:

  • 1.case后面必须是常量,并且不能是字符串 并且case与常量之间一定是有空格
  • 2.switch语句中只会做一次成功的比较,(常量与表达式);
  • 3.一般都是结合break使用,break用来跳出switch语句
int key = 1;
switch (key) 
{
case 0:
	key++;
case 1:
	key++;
case 2:
	key++;
default:
	key++;
}
printf("key=%d\n", key);

稍微改变一下:

key = 1;
switch (key)
{
default:			//switch语句优先从case比较,只有当所有case不满足在去跳转到default
	key++;
case 0:
	key++;
case 2:
	key++;
case 1:
	key++;
}
printf("key=%d\n", key);

稍微改变一下:

key = 1;
switch (key) 
{
case 1:
	key++;
case 0:
	key++;
case 2:
	key++;
default:
	key++;	
}
printf("key=%d\n", key);   			//5

稍微改变一下:

key=1;
switch (key) 
{
	//合起来的写法
case 0:
case 1:
case 2:
	key++;				//满足条件后,剩下的都会执行,从当前位置一直往下执行到}结束跳出switch
default:
	key++;
case 3:
	key++;
}
printf("key=%d\n", key);		//4

一般写成程序都是结合break使用

key = 1;
switch (key) 
{
case 0:
	key++;
	break;
case 1:
	key++;
	break;
case 2:
	key++;
	break;
default:
	key++;
	break;
}
printf("key=%d\n", key);

switch C语言中两个常用框架

最简单的循环语句 while死循环
while(1)
{
	printf("1");
	printf("2");
}
菜单描述
#include <stdio.h>
#include <stdlib.h>			//system头文件
int main()
{
	//最简单循环语句 while死循环
	//while (1) 
	//{
	//	printf("1");
	//	printf("2");
	//}
	//1.菜单跳转
	while (1) 
	{
		//菜单描述
		printf("--------------------\n");
		printf("\t0.退出功能\n");
		printf("\t1.录入信息\n");
		printf("\t2.删除信息\n");
		printf("\t3.修改信息\n");
		printf("\t4.查找信息\n");
		printf("--------------------\n");
		printf("请输入(0~5):");
		int userKey = 0;
		scanf_s("%d", &userKey);
		switch (userKey) 
		{
		case 0:
			printf("\t0.退出功能\n");
			break;
		case 1:
			printf("\t1.录入信息\n");
			break;
		case 2:
			printf("\t2.删除信息\n");
			break;
		case 3:
			printf("\t3.修改信息\n");
			break;
		case 4:
			printf("\t4.查找信息\n");
			break;
		}
		if (userKey == 0)
			break;
		system("pause");
		system("cls");
	}
    system("pause");
    return 0;
}
按键交互的控制

不可见输入的函数,不需要回车确认输入结束的函数

  • #include <conio.h> 必须包含

  • getch(); 在vs中需要改为_getch()

    printf("请输入:");
    int userKey = _getch();
    //while (getchar() != '\n');
    //int userKey = getchar();
    printf("输入的数据:%c", userKey);
    
#include <stdio.h>
#include <stdlib.h>			//system头文件
#include <conio.h>
int main()
{
	int role = 100;
	while (1) 
	{
		printf("如花还有1分钟到达战场!请选择逃离方向?\n");
		//小键盘的知识:72 80 75 77
		int userKey = _getch();
		switch (userKey)
		{
		case 'W':
		case 'w':
		case 72:   
			printf("你往上逃逸了!\n");
			break;
		case 's':
		case 'S':
		case 80:
			printf("你往下逃逸了!\n");
			break;
		case 'A':
		case 'a':
		case 75:
			printf("你往左逃逸了!\n");
			break;
		case 'd':
		case 'D':
		case 77:
			printf("你往下逃逸了!\n");
			break;
		case ' ':
			printf("你选择正面硬刚!\n"); 
			role -= 50;
			break;
		}
		if (role <= 0) 
		{
			printf("游戏结束!,你被如花征服了!\n");
			break;
		}
		system("cls");
	}
	system("pause");		//防止闪屏
	return 0;
}

switch 的奇怪的东西

switch只会执行case与default,其他的地方不会执行

#include <stdio.h>
#include <stdlib.h>			//system头文件
int main()
{
	int key = 1;
	int iNumber = 0;
	switch (key)
	{
		if (key == 1)
			printf("IMissyou\n");
	case 0:  //在当前位置定义变量时候报错	
		//int iNumber = 0;				//No.1把变量的声明放到switch上面
		scanf_s("%d", &iNumber);
		printf("1\n");
		break;
	case 1:	//No.2 加个大括号括起来
	{
		int userKey = 0;
		scanf_s("%d", &userKey);
		printf("2\n");
		break;
	}
	default:
		printf("3\n");
		break;
	}
	printf("switch只会执行case与default其他的地方不会执行\n");
	system("pause");		//防止闪屏
	return 0;
}

switch分数分段实现

案例2:评分等级

A 90

B 80-89

C 60-79

D 0-59

用户输入一个分数:99

​ 打印等级:A

#include <stdio.h>
#include <stdlib.h>			//system头文件
int main()
{
	int score = 0;
	scanf_s("%d", &score);
	switch(score/10)		// 90 - 100 9.10
	{
		case 9:
		case 10:
			printf("A\n");
			break;
		case 8:
			printf("B\n");
			break;
		case 6:
		case 7:
			printf("C\n");
			break;
		default:
			printf("D\n");
			break;
	}
	//用户输入年份,和月份,输出当前月天数
	system("pause");		//防止闪屏
	return 0;
}

switch处理数组

#include <stdio.h>
#include <stdlib.h>			//system头文件
int main()
{
	int array[5] = { 1,2,3,4,5 };
	for (int i = 0; i < 5; i++) 
	{
		switch (array[i])
		{
		case 1:
			array[i] <<= 1;
			break;
		case 2:
			array[i] <<= 2;
			break;
		case 3:
			array[i] <<= 3;
			break;
		case 4:
			array[i] <<= 4;
			break;
		case 5:
			array[i] <<= 5;
			break;
		}
	}
	for (int i = 0; i < 5; i++) 
	{
		printf("%d\t", array[i]);
	}
	system("pause");		//防止闪屏
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值