第4章 选择结构 本章学习目标 C语言提供了可以进行逻辑判断的选择语句, 由选择语句构成的选择结构将根据逻辑判断的结 果决定程序的不同流程。选择结构是结构化程序 设计的三种基本结构之一。本章将详细介绍如何 在C程序中实现选择结构。通过本章的学习,读者 应该掌握以下内容: ◆if语句和用if语句构成的选择结构 ◆ switch语句以及用switch语句和break语句 构 成的选择结构
第4章 选择结构 本章学习目标 C语言提供了可以进行逻辑判断的选择语句, 由选择语句构成的选择结构将根据逻辑判断的结 果决定程序的不同流程。选择结构是结构化程序 设计的三种基本结构之一。本章将详细介绍如何 在C程序中实现选择结构。通过本章的学习,读者 应该掌握以下内容: ◆ if语句和用if语句构成的选择结构 ◆ switch语句以及用switch语句和break语句 构 成的选择结构
4.1f语句和用f语句构成的选择结 构 4.1.1相关知识 C语言的f语句的根本特点是先计算所给定的选择条 件的值,若值为真则执行为真的分支,否则执行为假的 分支。 4.1.2程序范例 1。范例 程序4-1:输入两个数,分别放入x和y中,若两数不 相等,则输出其中的大数;若两数 相等,则输出字符串“x=y”和x的值
4.1 if语句和用if语句构成的选择结 构 4.1.1 相关知识 C语言的if语句的根本特点是先计算所给定的选择条 件的值,若值为真则执行为真的分支,否则执行为假的 分支。 4.1.2 程序范例 1.范例一 程序4-1:输入两个数,分别放入x和y中,若两数不 相等,则输出其中的大数;若两数 相等,则输出字符串“x=y”和x的值
main() int x,y; printf("Enter x y:\n"); scanf("%d%d",&x,&y);printf("x,y :%d %dIn",x,y); if(x>y)printf("x=%dIn",x); if(y>x)printf("y=%d\n",y); if(x==y)printf("x==y%d:In",x);
main() { int x,y; printf("Enter x & y:\n"); scanf("%d%d",&x,&y); printf("x,y :%d %d\n",x,y); if(x>y) printf("x=%d\n",x); if(y>x) printf("y=%d\n",y); if(x==y) printf("x==y%d:\n",x); }
本题是一个应用语句的简单程序,其执行过程如下: (I)printfi语句在屏幕上显示了提示信息:Enter x &y:之后,scanfi语句等待用户给变量x、y输入两个整 数。然后把输入的两个数显示在屏幕上。 (2)执行第5行的if语句。计算表达式x>y的值;如 果大于y,表达式的值为1,则调用printfi函数输出x的 值;否则,如果x小于或者等于y,表达式的值为0,则 跳过此输出语句继续执行步骤(3)
本题是一个应用if语句的简单程序,其执行过程如下: (1)printf语句在屏幕上显示了提示信息:Enter x & y:之后,scanf语句等待用户给变量x、y输入两个整 数。然后把输入的两个数显示在屏幕上。 (2)执行第5行的if语句。计算表达式x>y的值;如 果x大于y,表达式的值为1,则调用printf函数输出x的 值;否则,如果x小于或者等于y,表达式的值为0,则 跳过此输出语句继续执行步骤(3)
(3)执行第6行的if语句。计算表达式y>x的值;如 果y大于x,则调用printf函数,输出y的值;否则跳过些 输出语句继续执行步骤(4)。 (4)执行第7行的if语句。计算表达式x==y的值; 如果x等于y,则调用printf函数输出x的值;否则跳过些 输出语句继续执行步骤(5) (5)结束程序
(3)执行第6行的if语句。计算表达式y>x的值;如 果y大于x,则调用printf函数,输出y的值;否则跳过些 输出语句继续执行步骤(4)。 (4)执行第7行的if语句。计算表达式x==y的值; 如果x等于y,则调用printf函数输出x的值;否则跳过些 输出语句继续执行步骤(5)。 (5)结束程序
2.范例二 程序4-2:输入三个整数,分别放在变量a、b、c中, 程序把输入的数据重新按由小到大的顺序放在变量a、b、 c中,最后输出a、b、c的值。 main() int a,b,c,t; printf("input a,b,c:") scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%dIn",a,b,c); if(a>b) *如果a比b大, 则进行交换,把小的数放入a中*1 {t=a;a=b;b=t;
2.范例二 程序4-2:输入三个整数,分别放在变量a、b、c中, 程序把输入的数据重新按由小到大的顺序放在变量a、b、 c中,最后输出a、b、c的值。 main() { int a,b,c,t; printf("input a,b,c: "); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d, c=%d\n",a,b,c); if(a>b) /*如果a比b大, 则进行交换,把小的数放入a 中*/ {t=a; a=b; b=t; }
if(a>c) 如果a比c大,则进行 交换,把小的数放入a中* {t=a;a=c; c=t;} *至此a、b、c中 最小的数已放入a中*! if(b>c) *如果b比c大, 则进行交换,把小的数放入b中! ft=b;b=c;c=t; *至此a、 b、c中的数已按由小到大的顺序放好*! printf("%d,%d,%din",a,b,c); } 以上程序无论给a、b、c输入什么数,最后总是把 最小数放在a中,把最大数放在c中
if(a>c) /*如果a比c大,则进行 交换,把小的数放入a 中*/ {t=a; a=c; c=t; } /*至此a、b、c中 最小的数已放入a 中*/ if(b>c) /*如果b比c大, 则进行交换,把小的数放入b 中*/ {t=b; b=c; c=t; } /*至此a、 b、c中的数已按由小到大的顺序放好*/ printf("%d,%d,%d\n",a,b,c); } 以上程序无论给a、b、c输入什么数,最后总是把 最小数放在a中,把最大数放在c中
3.范例三 程序4-3:输入两个不等的整数分别给x和y,输出其 中的大数。 main() int x,y; printf("Enter x&y:") scanf("%d %d",&x,&y); printf("x,y:%d%dln",x,y); if(x>y) printf("max=x=%d\n",x); else
3.范例三 程序4-3:输入两个不等的整数分别给x和y,输出其 中的大数。 main() { int x,y; printf("Enter x&y: "); scanf("%d %d",&x,&y); printf("x,y:%d%d\n",x,y); if(x>y) printf("max=x=%d\n",x); else
printf("max=y=%d\n",y); printf("**end**In"); 当执行以上程序时,若把5输入给变量x,把3输入 给变量y;则f后表达式x>y的值为1,因此,将执行if子 句,输出x的值;然后调用最后一行中的printf函数,输 出字符串:*end*。 如果给x输入3,给y输入5,这时if语句中表达式x>y 的值为0,因此将跳过if子句,直接执行else分支中的 else子句,输出y的值;然后执行最后一行中的语句, 输出字符串:*end*
printf("max=y=%d\n",y); printf("**end**\n"); } 当执行以上程序时,若把5输入给变量x,把3输入 给变量y;则if后表达式x>y的值为1,因此,将执行if子 句,输出x的值;然后调用最后一行中的printf函数,输 出字符串:**end**。 如果给x输入3,给y输入5,这时if语句中表达式x>y 的值为0,因此将跳过if子句,直接执行else分支中的 else子句,输出y的值;然后执行最后一行中的语句, 输出字符串:**end**
4.范例四 程序4-4:根据输入的学生成绩给出相应的等级。90分以 上的等级为A,60分以下的等级为E,其余每10分为一 个等级。 main() int g; printf("Enter g:") scanf("%d",&g); printf("g=%d:",g); if(g>=90)
4.范例四 程序4-4:根据输入的学生成绩给出相应的等级。90分以 上的等级为A,60分以下的等级为E,其余每10分为一 个等级。 main() { int g; printf("Enter g: "); scanf("%d",&g); printf("g=%d:",g); if(g>=90)