C语言从0到1(07)——条件结构(02)

C语言从0到1(07)——条件结构(02)

一、多重if结构

多重if就是指,选择超过两个以上的情况,比如现实生活中:

成绩在90~100的为A
成绩在70~89的为B
成绩在60~69的为C
成绩在60以下的为D

语法如下:

if (条件表达式1)
{
    //执行的代码块1
}
else if(条件表达式2)
{
    //执行的代码块2
}
else if(条件表达式n)
{
    //执行的代码块n
}
else
{
    //执行的代码块n+1
}

流程图:

Created with Raphaël 2.2.0 开始 条件表达式1 执行代码块1 结束 条件表达式2 执行代码块2 条件表达式3 执行代码块3 条件表达式4 执行代码块4 执行代码块5 yes no yes no yes no yes no
  • 例:学生成绩等级如下表示

成绩在90~100的为A
成绩在70~89的为B
成绩在60~69的为C
成绩在60~40的为D
其他情况为E

int score = 88;
if (score >= 90 && score <= 100)
{
    printf("A");
}
else if (score >= 70)
{
    printf("B");
}
else if (score >= 60)
{
    printf("C");
}
else if (score >= 40)
{
    printf("D");
}
else
{
    printf("E");
}

上面示例输出结果为:B

二、嵌套if

用于多重判断。例如:

活动计划的安排,如果今天是工作日,则去上班,如果今天是周末,则外出游玩;同时,如果周末天气晴朗,则去室外游乐场游玩,否则去室内游乐场游玩。

语法如下:

if (条件表达式1)
{
   if(条件表达式2)
    {
        //执行的代码块1
        //if… 这里也可以嵌套if
    }
    else
    {
        //执行的代码块2
    }
}
else
{
    //if… 这里也可以嵌套if
    //执行的代码块3
}

流程图:

Created with Raphaël 2.2.0 开始 条件表达式1 条件表达式2 执行代码块1 结束 执行代码块2 执行代码块3 yes no yes no
  • 例:给定三条边,判断是否能组成一个三角形以及是否是特殊三角形(等腰,等边)
#include <stdio.h>
int main()
{
	int a = 0, b = 0, c = 0;
	printf("请输入三条边(每条边以回车结束):");
	scanf("%d", &a);
	scanf("%d", &b);
	scanf("%d", &c);
	//判断合法性,都为正数
	if (a > 0 && b > 0 && c > 0)
	{
		//判断任意两条边之和大于第三边
		if (a+b > c && a+c > b && b+c > a)
		{
			if (a == b && a == c)//等边三角形
			{
				printf("等边三角形");
			}
			else if (a == b || a == c || c == b)//等腰三角形
			{
				printf("等腰三角形");
			}
		}
		else
		{
			printf("此三条边不能构成三角形\n");
		}
	}
	else
	{
		printf("输入有误\n");
	}
	return 0;
}

注:scanf 在 高版本的Visual Studio 中,需修改为 scanf_s

三、switch case

语法:

switch(表达式){ 
    case 常量表达式1:  
        语句1;
        break;
    case 常量表达式2:  
        语句2;
        break;case 常量表达式n:  
        语句n;
        break;
    default:  语句n+1;
}

其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,则执行该case后对应的语句。如表达式的值与所有case后的常量表达式的值不匹配,则执行default后的语句

注:
1、表达式类型为,int、char、枚举;不能是为条件表达式。
2、case匹配成功后,如果没有break语句,则会不判断而继续执行后面所有case语句后的代码,直到遇到break跳出,default结束。

  • 例:输入数字,输出对应的星期
int main() 
{
  int a;
  printf("input integer number: ");
  scanf("%d", &a);
  switch (a) {
  case 1:
    printf("Monday\n");
    break;
  case 2:
    printf("Tuesday\n");
    break;
  case 3:
    printf("Wednesday\n");
    break;
  case 4:
    printf("Thursday\n");
    break;
  case 5:
    printf("Friday\n");
    break;
  case 6:
    printf("Saturday\n");
    break;
  case 7:
    printf("Sunday\n");
    break;
  default:
    printf("error\n");
  }
  return 0;
}

注:试着去掉break,看看效果。

四、随机数

程序设计中,难免会用到随机数,比如抽奖。
C语言中获取随机数需要导入两个头文件,一个是 stdlib.h;一个是time.h
具体用到的函数有两个,一个是void srand(unsigned int seek)函数;一个是int rand()
srand的作用是用于初始化随机种子,一个程序中只需要初始化一次。 rand用于获得随机数。

  • 例:随机一个整数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
  srand(time(NULL));//初始化随机种子
  int a  = rand();//获取随机数
  printf("%d\n", a);
}
  • 例:随机一个1~7之间的数(比如,星期)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
  srand(time(NULL));//初始化随机种子
  int a  = rand()%7 + 1;//随机数模7会得到0~6,+1的操作后就会得到 1~7
  printf("%d\n", a);
}

总结:多重if结构、嵌套if结构以及switch case结构都是非常重要的条件结构,在实际编程开发过程中使用频率特别高,希望童鞋们能多加练习,并熟练使用上述结构。
下一章节进入
循环结构

  • 练习:
1.猴子去买桃,如果买3个以下,老板就不送桃,如果买3个到5个就再送一个桃,如果买5个以上就送2个桃,现在要求输入猴子的买桃数,最后输出到底买到了几个桃。

2.我想买车,买什么车决定于我在银行有多少存款。
如果我的存款超过500万,我就买凯迪拉克
否则,如果我的存款超过100万,我就买帕萨特
否则,如果我的存款超过50万,我就买依兰特
否则,如果我的存款超过10万,我就买奥托
否则,我买捷安特

3.综合练习,猜拳游戏:
    人物:电脑、你;电脑随机出拳,你输入出拳(可以用数字表示石头剪刀布),最后判断胜负平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值