C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强

前言:在前面我们学习了选择结构和条件判断,用if语句实现选择结构,关系运算符和关系表达式,逻辑运算符和逻辑表达式等知识。今天我们将接着上一篇未讲完的继续讲解。
鸡汤:种一棵树最好的时间是十年前,其次是现在!加油各位一起努力!

C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第1张图片

目录标题

    • 4.1 选择结构的嵌套
    • 4.2 用switch语句实现多分支选择结构
    • 本章习题与习题讲解

4.1 选择结构的嵌套

在if语句中又包含一个或者多个if语句称为"if语句的嵌套"。
其一般格式如下:

C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第2张图片

我们应当注意if与else的配对关系:
else总是与它上面最近的未配对的if配对。

我们来看一道例题
例题:有一阶跃函数(如下图),编写一程序,输入一个x的值,要求输出对应y的值。
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第3张图片
代码:

int main()
{
	int x = 0;
	int y = 0;
	scanf("%d", &x);
	if (x < 0)
	{
		y = -1;
	}
	else if (x == 0)
	{
		y = 0;
	}
	else
	{
		y = 1;
	}
	printf("%d\n", y);
	return 0;
}

4.2 用switch语句实现多分支选择结构

if 语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(85分以上为A等,70 ~ 84分为B等,60 ~ 69分为C等),人口统计分类(按年龄分为老、中、青、年、少、儿童),工资统计分类,银行存款分类等。当然这些也可以用嵌套的If语句来处理,但如果分支较多,则嵌套的if语句层数较多,程序冗长而且可读性降低。因此我们可以使用C语言提供的switch语句直接处理多分支的选择。switch语句是多分支选择语句

看例题:要求按照考试成绩的等级输出百分制分数段,85分以上为A等,70 ~ 84分为B等,60 ~ 69分为C等,60分以下为D等。成绩等级由键盘输入。

int main()
{
	char grade = 0;
	scanf("%c", &grade);
	printf("请输入你的成绩\n");
	switch (grade)
	{
	case 'A':
		printf("你的成绩是:100 ~ 85\n");
		break;
	case 'B':
		printf("你的成绩是:84 ~ 70\n");
		break;
	case 'C':
		printf("你的成绩是:69 ~ 60\n");
		break;
	case 'D':
		printf("你的成绩是:小于60分\n");
		break;
	default:
		printf("输入错误,请重新输入\n");
		break;
	}
	return 0;
}

运行结果:
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第4张图片
运行流程图:
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第5张图片

我们可以看到,switch语句的作用是根据表达式的值,使跳转流程转到不同的语句,switch语句的一般形式如下:
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第6张图片

我们再来看一个例题:用 switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个’A’或’a’字符,就会执行A操作,输入一个’B’或’b’字符,就会执行B操作。可以按照以下以下思路编写程序。

int sum(int x, int y)
{
	return x + y;
}

int diff(int x, int y)
{
	return x - y;
}

int main()
{
	int a = 0;
	int b = 0;
	char ch = 0;
	printf("请输入三个数,前两个输入整数,后一个表示执行的操作\n");
	scanf("%d %d %c", &a, &b,&ch);
	switch (ch)
	{
	case 'A':
	case 'a':
		printf("sum = %d\n", sum(a, b));
		break;
	case 'B':
	case 'b':
		printf("diff = %d\n", diff(a, b));
		break;
	default:
		printf("输入错误,请重新0入\n");
	}
	return 0;
}

运行结果:
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第7张图片

本章习题与习题讲解

习题1:请写出下面各逻辑表达式的值。设a = 3,b = 4,c = 5
(1) a + b > c && b = = c
题目分析:

a + b > c为真b == c为假,所以整体为假,所以表达式的值为0

(2)a || b + c && b - c
题目分析:

因为a为真 b + c也为真,所以 a || b + c整体为真,又因 b - c整体为真,所以a || b + c && b - c整体为真。故答案为1。

(3) !(a > b) && !c || 1
题目分析:

因为!的优先级在这里的逻辑运算符中是最高的所以优先算!的值,因a > b整体为假所以!(a > b)整体真,又因为c为真,所以!c为假,所以!(a>b) && !c整体为假,又因1为真,所以!(a > b) && !c || 1整体为真,故答案为1。

(4) !(x = a) && (y = b) && 0
题目分析:

x = a为真,所以!(x = a)整体为假,所以!(x = a) && (y = b)这个整体为假,所以可以推出!(x = a) && (y = b) && 0这个整体为假,故而答案为0。

(5) !(a + b) + c - 1 && b + c / 2
题目分析:因为!优先级最高,所以 !(a + b)为假值为0,所以 !(a + b) + c - 1值为4为真,又因为b + c /2值为真,所整体为真。

习题2:给出一位不多于5位的正整数,要求:
(1)求出它是几位数
代码分析:

int digit(int n)
{
	int count = 1;
	while (n /=  10)//任何数最少是一位数
	{
		count++;
	}
	return count;

}
int main()
{
	int num = 0;
	scanf("%d", &num);
	int count = digit(num);
	printf("%d\n", count);
	return 0;
}

运行结果:
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第8张图片

(2)分别输出每一位数字
代码分析:

int digit(int n)
{
	int count = 1;
	while (n /=  10)//任何数最少是一位数
	{
		count++;
	}
	return count;

}
int main()
{
	int num = 0;
	scanf("%d", &num);
	int count = digit(num);//求出位数
	//printf("%d\n", count);
	int e_digit = 0;
	int i = 0;
	for (i = 0; i < count; i++)
	{
		e_digit = num % 10;//将每一位数保存
		printf("每一位数是从低位到高位:%d\n", e_digit);
		num /= 10;
	}
	return 0;
}

运行结果:
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强_第9张图片

(3)按逆序输出各位数字,例如原数321,应输出123。

int digit(int n)
{
	int count = 1;
	while (n /=  10)//任何数最少是一位数
	{
		count++;
	}
	return count;

}
int main()
{
	int num = 0;
	scanf("%d", &num);
	int count = digit(num);//求出位数
	//printf("%d\n", count);
	int e_digit = 0;
	int i = 0;
	printf("逆序输出的结果是:");
	for (i = 0; i < count; i++)
	{
		e_digit = num % 10;
		//printf("每一位数是从低位到高位:%d\n", e_digit);
		printf("%d", e_digit);
		num /= 10;
	}
	return 0;
}

运行结果:
在这里插入图片描述
结尾:好了,今天的内容讲解就到了这里了,如果各位觉得讲的好的话,就给作者一个三连吧,讲的不好的地方也麻烦各位多多指出,作者都会努力改进的,谢谢各位观看。

你可能感兴趣的:(C程序设计谭浩强版本,c语言,开发语言)