CCCCCCC

十月十七日记录。

if的嵌套形式

if(表达式1)

        if(表达式2)        语句块1

        else        语句块2

else        语句块3

         if嵌套形式的意义在于判断条件的细化、判断后可以有更多分支。

        简单说就是经过一个路口选完路线后面还有一个路口可以选择路线。 

条件运算符

        可用“?”简化if的判断表达式。

        例如:

if(a>b)

        {max = a;}

else

        {max = b;}

         简化结果如下:

max = (a>b)?a:b;

        连if都没了...

        “?”可理解为对括弧内部表达式存疑并判断,判断结束后输出结果。

        注意是a“比”b。 

switch语句

        if语句一般只有两个分支可选,实际问题中通常有更多分支需求,若用嵌套的if语句则略显凌乱与冗余,还难阅读。于是switch语句应运而生。

switch(表达式)

{

        case 情况1:

                语句块1;

        case 情况2:

                语句块2;

        case 情况3:

                语句块3;

        .

        .

        .

        case 情况n:

                语句块n;

        default:

                默认情况语句块;        

}

         此处default表示若所有case都不满足,则只运行default。

        注意情况后应加入冒号“:”。

        注意switch不能加入大于号或小于号!

来个错误示范:

//依据分数段评判等级。
#include<stdio.h>
int main()
{
	int grade;
	printf("请输入你的分数:\n");
	scanf("%d",&grade);
	printf("你的评级为:");
	if(0<=grade<=100) 
	{
		switch(grade)
		{
		case grade>=90:
			printf("A\n");
			break;
		case grade>=80:
			printf("B\n");
			break;
		case grade>=60:
			printf("C\n");
			break;
		case grade<60:
			printf("D\n");
			break;
		default:
			printf("这不是我要的内容。\n");
		}
	}
	else
	{
		printf("这不是我要的内容。\n");
	}
	return 0;
	
}

        这里在case内加入了大于号小于号,程序会直接报错。

        注意每个语句块后应加入break以跳出语句,否则电脑会直接执行所有语句。

        若想用switch比较大小,可以转换思路:

多路开关模式的switch语句

        在原有的switch语句中,去除部分break,可达到多种检验结果使用一种解决方式的效果。

//依据分数段评判等级。
#include<stdio.h>
int main()
{
	int grade;
	printf("请输入你的分数:\n");
	scanf("%d",&grade);
	 
	switch(grade)
	{
	case 90:
	case 91:
	case 92:
	case 94:
	case 95:
	case 96:
	case 97:
	case 98:
	case 99:
	case 100:
		printf("你的评级为:A\n"); 
		break;								//后续可添加更多分数值 
	default:
		printf("这不是我要的数值");
	} 
	return 0; 
}

        当然,这种方式太过繁琐,不适用于此种问题。

        也可以if语句和switch语句混用,但过程比较混乱。

//尝试分数转评级 
#include<stdio.h>
int main()
{
	int grade,iSwitch;
	printf("请输入你的分数:\n");
	scanf("%d",&grade); 
	if(0 <= grade && grade<100)			//在分数区间是(0,100]时进入第一部分循环 
	{
		printf("你的评级为:");
		iSwitch = grade % 10;			//通过表达式为switch铺路 
		switch(iSwitch)
		{
			case 10: 
			case 9:
				printf("A");
				break;
			case 8:
				printf("B");
				break;
			case 7:
				printf("C");
				break;
			case 6:
				printf("D");
				break;
			case 5:
			case 4:
			case 3:
			case 2:
			case 0:
				printf("E");
				break;
			default:
				break;
		}
	}
	else if(grade == 100)				//表达式无法解释100就直接新加分支条件 
	{
		printf("你的评级为:A\n");
	}
	else 								//输入内容不对则不进行计算 
	{
		printf("这不是我要的数值。\n");
	}
	return 0; 
}

        代码较长,但思路清晰。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值