文档库 最新最全的文档下载
当前位置:文档库 › 第4章 选择结构程序设计

第4章 选择结构程序设计

第4章 选择结构程序设计
第4章 选择结构程序设计

第4章选择结构程序设计

4.1 if语句

【学习目标】

(1)掌握if语句的语句格式与应用

(2)掌握复合if语句的语句格式与应用

(3)掌握条件运算符的用法

实例13 if语句——根据条件确定公司是否已经为司机投保

【实例任务】

如果司机满足下列条件之一,公司则为他们投保。这三个条件是:(1)司机已婚。(2)司机为30岁以上的未婚男性。(3)司机为25岁以上的未婚女性。如果以上条件一个也不满足,则公司不为司机投保。请编写一个程序,根据用户输入司机的婚姻状态、性别和年龄,判断该司机是否已投保。运行结果如图4-1所示。

图4-1运行结果

【相关知识】

1.选择结构程序设计

选择结构又称分支结构,有二分支或多分支结构。这种结构根据条件判断结果,选择执行不同的程序分支。选择结构是程序的基本结构之一,几乎所有程序都包含选择结构。C语言中可以用两种控制语句来实现程序的分支控制,即if语句和switch语句。用它们均可构成选择结构。

2.单分支选择if语句

单分支选择if语句的形式为:

if(表达式)语句;

执行过程,先判断表达式的值,如果成立,则行后面的语句。否则什么也不执行。3.双分支选择if语句

双分支选择if语句的形式为:

if(表达式)语句l;else 语句2;

这个条件语句的执行过程,先判断表达式的值,如果成立,执行语句1,如果不成立,执行语句2。

4.多分支选择if语句

多分支选择if语句的形式为:

if(表达式1)语句1;

else if(表达式2)语句2;

else if(表达式3)语句3;

………

else if(表达式n)语句n;

else 语句n+1;

其语句是,依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。然后继续执行后续程序。

实际上第三种if语句是第二种语句的嵌套形式。我们可以把第一个判断的else部分看成是一个内嵌语句,它本身是一个语句,而且可以依次类推,即可写成:

if(表达式1)语句1;

else{if(表达式2)语句2;

else{if (表达式3)语句3;

………

else{if (表达式n)语句n;

else 语句n+1;}…}}

关于这三种形式的语句的使用,有几点请注意:

(1)if之后的条件,必须以“(表达式)”的形式出现,即括号不可少,而表达式可为任意表达式,可以是关系表达式或逻辑表达式,也可以为其他表达式。

(2)在后两种if语句中,有多个内嵌语句,每个内嵌语句都必须以“;”结束。

(3)三种形式的if语句中内嵌语句处只能有一个语句。如果要用n个语句,则必须使用{}将它们组成一个复合语句。

5. if语句的嵌套

在if语句中又内嵌if语句则称为语句的嵌套。前面已说明,多分支选择if语句本身就可看成为if语句的嵌套形式。其一般形式为:

if ()

if () 语句1;/*内嵌if语句*/

else 语句2;

else

if 语句3;/*内嵌if语句*/

else 语句4;

在使用内嵌if语句时,要注意if和else的配对,因为if语句的第一种形式中只有if没有else。C语言在编译源程序时总是将else与它前面最近的if配对。

6.条件表达式构成的选择结构

C语言另外还提供了一个特殊的运算符——条件运算符,由此构成的表达式也可以形成简单的选择结构,这种选择结构能以表达式的形式内嵌在允许出现表达式的地方,使得可以根据不同的条件使用不同的数据参与运算。它的运算符符号是“?:”。这使C语言提供的唯一的三目运算符,即要求有三个运算对象。它的表达式形式如下:

表达式1?表达式2:表达式3

条件表达式的运算功能,当“表达式1”的值为非零时,“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,“表达式3”的值作为整个条件表达式的值。此运算符优先于赋值运算符,但低于关系运算符与算术运算符。例如有如下表达式:

y=x>10?100:200

首先要求出条件表达式的值,然后赋给y。在条件表达式中,要先求出x>10的值。若x 大于10,取100作为表达式的值并赋予变量y;若x小于或等于10,则取200作为表达式的值并赋予变量y。

【课堂精练】

1.输入三个实数,按从小到大顺序输出。程序运行结果如图4-2所示。

图4-2 程序的运行结果

根据程序的运行结果,请将下面程序补充完整并调试。

#include "stdio.h"

main()

{ float a,b,c,t;

printf("请输入三个数a,b and c:\n");

scanf ("%f%f%f",&a,&b,&c);

printf("输入的三个数为:");

printf ("%6.2f,%6.2f,%6.2f\n",a,b,c);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

___________________________________

if(b>c)

{t=b;b=c;c=t;}

printf("排序后的三个数为:");

printf ("%6.2f,%6.2f,%6.2f\n",a,b,c);

getch(); }

2.编程实现:根据性别sex和身高tall给某数据分类,如果sex为‘F’,当tall>=150时,输出A,否则输出B;若sex不为‘F’,当tall>=172时,输出A,否则输出B。程序的运行结果如图4-3所示。

图4-3 程序运行结果

根据程序运行结果,请将下面程序补充完整并调试。

#include "stdio.h"

main()

{ int tall;

char sex;

printf(" 请输入性别和身高:");

scanf("%c%d",&sex,&tall);

if (sex=='F')

{ if(tall>=150) /*内嵌if-else语句*/

_________________________________________

else printf("B"); }

else

{ if(tall>=172)

printf("A");

else printf("B"); }

getch(); }

4.2 switch语句

【学习目标】

(1)掌握switch语句的语句格式与应用

(2)掌握switch语句中break语句的用法

实例14 switch语句——计算长方形、圆形、和三角形的面积

【实例任务】

编写一个程序,用于计算长方形、圆形和三角形的面积。根据用户的选择要能计算相应形状的面积。程序的运行结果如图4-4所示。

图4-4程序运行结果

【程序代码】

【相关知识】

1.switch语句以及用switch语句和break语句构成的选择结构

switch语句是一种多分支选择结构,语句形式如下:

switch(表达式)

{ case 常量表达式1:语句1;

case 常量表达式2:语句2;

……

case 常量表达式n:语句n;

default :语句n+1;}

switch语句是C语言的关键字,switch后面用花括号括起来的部分称为switch语句体。紧跟在switch 后一对圆括号中的表达式可以是整型表达式及后面将要学习的字符型表达式。表达式两边的一对括号不能省略。

case 也是关键字,与其后面的常量表达式合称case 语句标号。常量表达式的类型必须与switch 后面圆括号中的表达式类型相同,各case 语句标号的值应该互不相同。case语句标号后的语句1,语句2等,可以使一条语句,也可以是若干语句。必要时,case语句标号后的语句可以省略不写。

default 也是关键字,起标号的作用,代表所有case 标号之外的那些标号。default 标

号可以出现在语句体中任何标号位置上。在switch语句中也可以没有default 标号。

在关键字case 和常量表达式之间一定要有空格,例如case 10:不能写成case10:。2.switch语句的执行过程

当执行switch语句时,首先计算紧跟其后一对括号中的表达式的值,然后在switch语句体内寻找与该值吻合的case 标号。如果有与该值相等的标号,则执行该标号后开始的各语句,包括在其后的所有case 和default 中的语句,直到switch语句体结束;如果没有与该值相等标号,并且存在default 标号,则从default 标号后的语句开始执行,直到switch 语句体结束;如果没有与该值相等的标号,同时又没有default 标号,则跳过switch语句体,执行之后的语句。

【课堂精练】

1.根据输入的成绩段,输出成绩的等级。程序运行结果如图4-5所示。

图4-5 程序运行结果

根据程序运行结果,请将下面程序补充完整并调试。

#include "stdio.h"

main()

{ int g;

printf ("请输入成绩为:");

scanf("%d",&g); /* g中存放学生的成绩*/

printf("成绩为:%d ",g);

switch (g/10) /*g/10为整除*/

{ case 10 :

case 9 : printf ("\n成绩等级为:A\n");break;

case 8 : printf ("\n成绩等级为:B\n"); break;

case 7 : printf ("\n成绩等级为:C\n"); break;

case 6 : printf ("\n成绩等级为:D\n"); break;

___________________________________________ }

getch(); }

2.由键盘输入三个整数a、b、c,输出三个数中最大的一个。程序运行结果如图4-6所示。

图4-6 程序的运行结果

根据程序运行结果,请将下面程序补充完整并调试。

#include "stdio.h"

main()

{int a,b,c,max;

printf("请输入三个整数:\n");

scanf("%d,%d,%d",&a,&b,&c);

______________________

______________________

else

______________________

if(c>max)

______________________

printf("三个数中最大的数是:%d",max);

getch();

}

4.3 课后习题

4.3.1 项目练习

一.练习目的

1.进一步巩固选择结构程序设计语句的使用

2.进一步巩固break语句的使用方法

3.提高编程和调试程序的能力

二.练习内容

1.接受用户输入的三种商品的价格。如果购买的三种商品中至少有一种商品的价格大于50 或者三种商品的总额大于100,则折扣率为15%,否则折扣率为0,计算并显示用户应付的钱数。

2.判断所输入的一个年份是否为闰年。

3.利用if结构编写程序,输入x值,求解以下分段函数的y值。当x<1时,y=x+1;当1≤x<10,y=2x+5;当x≥10时,y=x2+8。

4.编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。成绩大于等于90分输出“优”;成绩大于等于80分小于90分输出“良”;成绩大于等于60分小于80分输出“中”;成绩小于60分输出“差”。

5.利用switch语句编写一个计算器程序,用户输入四则运算表达式,输出计算结果。P65

4.3.2 练习题

一.选择题

1.在if语句的嵌套中,else总是与__________配对;

(A)它前面未配对的if (B)它前面最近的未配对的if

(C)它上面书写在同一列的if (D)它在同一行的if

2. 判断char型变量ch是否为大写字母的正确表达式是__________。

(A)‘A’<=ch<=‘Z’ (B)(ch>=‘A’)&(ch<=‘Z’)

(C)(ch>=‘A’)&&(ch<=‘Z’) (D)(‘A’<= ch)AND(‘Z’>= ch)

3.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是__________。

if(x>y) z=x; x=y; y=z;

(A)x=10, y=20, z=30 (B)x=20, y=30, z=30

(C)x=20, y=30, z=10 (D)x=20, y=30, z=20

4.请阅读以下程序:

main( )

{ int a=5 , b=0 , c=0;

if(a=b+c) pri ntf(“***\n”);

else printf(“$$$\n”);

getch() ;

}

以上程序_______。

(A)有语法错不能通过编译(B)可以通过编译但不能通过连接(C)输出*** (D)输出$$$

5.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是_______。

if(a

if(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

(A)1 (B)2 (C)3 (D)6

6.若w=1,x=2,y=3,z=4,则条件表达式w

(A)4 (B)3 (C)2 (D)1

二.填空题

1.以下程序运行后的输出结果是__________。

main()

{int x=10,y=20,t=0;

if(x==y) t=x; x=y; y=t;

printf("%d,%d\n",x,y); getch() ; }

2.以下程序运行后的输出结果是__________。

main()

{ int k=2,i=2,m;

m=k+=i*=k;

printf("%d,%d\n",m,i); getch(); }

3.以下程序运行后的输出结果是__________。

main( )

{int m=5;

if (--m>5) printf(“%d\n”,m);

else printf(“%d\n”,m--); getch(); }

4.设有变量定义:int a=10 , c=9;

则表达式(--a!=c++)?—a:++c的值是_______。

5.若运行时输:3 5 /<回车>,则以下程序的运行结果是_______。

#include "stdio.h"

main( )

{ float x,y;

char o;

double r;

scanf(“%f%f%c”,&x,&y,&o);

switch (o)

{ case ‘+’ : r=x+y ; break;

case ‘-’ : r=x-y ; break;

case ‘*’ : r=x*y ; break;

case ‘/’ : r=x/y ; break; }

printf(“%f”,r);

getch(); }

c语言第五章 选择结构程序设计(习题册答案)

第五章选择结构程序设计 基础练习(A) 一、填空题 1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。 2、逻辑运算符!是单目运算符,其结合性是由右结合性。 3、C语言提供的三种逻辑运算符是&&、|| 、!。其中优先级最高的为!,优先级最低的为| | 。 4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以0 和非0 来判定它们属于“真”或“假”。 5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。 6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x2&&x<3。 8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。 9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。 10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。 11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是0。 12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。 13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。 14、有int x,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。 !(x>y)+(y!=z)||(x+y)&&(y-z) 15、有int a=3,b=4,c=5,x,y;,则以下表达式的值为0。 !(x=a)&&(y=b)&&0 16、if (!k) a=3;语句中的!k可以改写为k= =0,使其功能不变。 二、选择题 1、逻辑运算符两侧运算对象的数据类型(D)。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 2、以下关于运算符优先顺序的描述中正确的是(C)。 A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 3、下列运算符中优先级最高的是(B)。 A)< B)+ C)&& D)!= 4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式(D)。 A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122) C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122) 5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表 达式是(C)。 A) (x>=1)&&(x<=100)&&(x>=200)&&(x<=300) B) (x>=1)||(x<=100)||(x>=200)||(x<=300) C) (x>=1)&&(x<=100)||(x>=200)&&(x<=300)

matlab选择结构程序设计答案讲解学习

m a t l a b选择结构程序 设计答案

实验三选择结构程序设计 一、实验目的 1、掌握建立和执行M文件的方法。 2、掌握利用if语句实现选择结构的方法。 3、掌握利用switch语句实现多分支选择结构的方法。 4、掌握try语句的使用。 二、实验内容 1、求分段函数的值。用if语句实现,分别输出x=-5.0,3.0,1.0,2.0,2.5,3.0,5.0时 的y值。 ①x=input('please input the value of x'); if x<0&x~=-3 y=x*x+x-6; elseif x>=0&x<5&x~=2&x~=3 y=x*x-5*x+6; else y=x*x-x-1; end y ②please input the value of x-5.0 y = 14 >> aaaaa please input the value of x-3.0

y = 11 >> aaaaa please input the value of x1.0 y = 2 >> aaaaa please input the value of x2.0 y = 1 >> aaaaa please input the value of x2.5 y = -0.2500 >> aaaaa please input the value of x3.0 y =

5 >> aaaaa please input the value of x5.0 y = 19 2、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分 ~100分为A,80分~89分为B,70分~79分为C,60~69分为D,60分以下为E。要求: (1)分别用if语句和switch语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理性的成绩应输出出错信息。 If语句 ①s=input('please input the score:'); if s>=90&s<=100 rank='A'; elseif s>=80&s<=89 rank='B'; elseif s>=70&s<=79 rank='C'; elseif s>=60&s<=69 rank='D'; elseif s>0&s<=59 rank='E';

第四节选择结构程序设计

第四节选择结构程序设计 4.1选择程序设计举例 在编写程序中,往往要求根据某个指定的条件是否满足来决定执行的内 容?例如,购物在1000元以下的打九五折,1000元及以上的打九折? C++ 提供if语句来实现这种条件选择?如 if amount<1000 tax=0.95; //amount 代表购物总额,tax 代表折扣 else tax=0.9; 〃若amount<1000,条件满足,tax=0.95,否则tax=0.9 pay二amount*tax; //pay 为实付款 流程可以用图4.1表示? lax=0.95 lax=0,9 pay= amount* lax J~ 图4.1 4.2选择结构和if语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假) 决定执行给出的两种操作之一? 4.2.1 if语句的3种形式 1. if (表达式)语句

例如: if(x>y) coutvvxvve ndl; 这种if语句的执行过程见图4.2(a)? 2. if (表达式)语句1 else语句2 例如: if (x>y) cout?x; else coutvvy; 见图 4.2(b)? 语句 rr (a) (b) 图4.2 3. if(表达式1)语句1 else if (表达式2)语句2 elseif(表达式3)语句3 else if (表达式m)语句m else语句n流程图见图4.3? 例如: if (n umber>500) cost=0.15; else if(number>300) cost=0.10;

else if( number>100) cost=0.075; else if( nu mber>50) cost=0.05; 说明: (1)从图4.2和图4.3可以看到:3种形式的if语句都是由一个入口进来,经过对表达式”的判断,分别执行相应的语句,最后归到一个共同的出口?这种形式的程序结构称为选择结构?在C++中if语句是实现选择结构主要的语句? (2)3种形式的if语句中在if后面都有一个用括号括起来的表达式,它 是程序编写者要求程序判断的条件” 一般是逻辑表达式或关系表达式? (3)第2?第3种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号? ⑷ 在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有 多个操作语句,此时用花括号“{} 将”几个语句括起来成为一个复合语

选择结构程序设计题

选择结构程序设计 一、实验目的 1.熟练掌握关系表达式和逻辑表达式的使用。 2.熟练掌握嵌套的if语句和switch语句实现多分支结构程序设计。 3.掌握选择结构程序设计的方法。 4.继续熟悉跟踪调试程序的方法和过程。 二、实验内容及步骤 1.分析程序并上机运行验证结果。 #include void main() { int a,b,t; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); if(a>3,2 3,2>>3,2 } 思考: 从输入数据和运行结果分析程序的功能。 将“{t=a;a=b;b=t;}”改为“t=a,a=b,b=t;”,程序的功能改变了吗?为什么?一样的 将“if(a void main() { int a,b; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); if (b) printf("a/b=%d \n",a/b); //在确保b非零的情况下执行a/b运算 else printf("ERROR:Cannot divide by zero!\n"); } 提示: 程序的功能是实现两个整数相除。程序设计时应避免被零除的错误,所以“if(b)printf("a/b=%d \n",a/b);”就是在确保b非零的情况下执行a/b运算。 if(b)也可以写作if(b!=0)。 3.阅读、分析程序,记录结果,并上机运行验证结果。 #include void main() {

实验4选择结构程序设计

实验4 选择结构程序设计 一、实验目的 1.掌握C语言中逻辑量的表示和使用方法。 2.掌握if语句及switch语句的使用。 3.熟悉各种表达式作为if语句及switch语句的条件。 4.了解Turbo C程序的基本调试方法。 二、实验内容 1.验证性实验 (1)分析程序的运行结果。 ①运行下列程序,输入1-7之间的任意数字,观察程序的运行结果。 #include void main() { int week; printf("Input(1-7):"); scanf("%d",&week); switch(week) { case 1:printf("Mon.\n"); break; case 2:printf("Tue.\n"); break; case 3:printf("Wed.\n"); break; case 4:printf("Tur.\n"); break; case 5:printf("Fri.\n"); break; case 6:printf("Sat.\n"); break; case 7:printf("Sun.\n"); break; default:printf("The input is wrong!\n"); } } ②运行5次下列程序,输入的数据分别是1,2,3,4,5,请观察每次的运行结果,并根据结果分析原因。 #include void main() { int n,a=0,b=0,c=0,d=0,k=0; scanf("%d",&n); switch(n) { case 1:b++;break; case 2:c++; case 3:d++;break; case 4:k++; default:a++; } printf("%d,%d,%d,%d",a,b,c,d,n); } (2)输入x的不同值,以下程序将求一给定“y=f(x)”函数的值。

选择结构程序设计

第四章择路而行---选择结构程序设计 第一节路口诀择----条件语句 一、教学目标 1、掌握选择结构程序中常用的Qbasic语句。 2、掌握选择结构程序设计方法。 3、能利用选择结构程序设计解决简单的实际问题。 二、教学重点: 1.选择结构的语句及功能 2.选择结构中程序设计方法。 三、教学方法:讲授法,对比法,分组讨论法。 四、教学时间:2课时 五、教学教程: (一)引入新课:前面我们学习了顺序结构程序设计,利用顺序结构只能设计一些较简单的程序,如果要处理复杂的问题,就需要采用另外两种基本结构:选择结构和循环结构。选择结构,是一种常用的主要基本结构,是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特性是:无论分支多寡,必择其一;纵然分支众多,仅选其一。 (二)讲述新课 l 单行条件选择语句IF 1、单行结构条件语句IF…THEN…ELSE 格式:IF <条件> THEN <语句1> [ELSE <语句2>] 功能:最简单的条件选择语句,用来进行条件判断,使语句有条件的执行。 说明: 1)当<条件>为真(非零数)时,则执行<语句1>。 2)ELSE语句可以省略。 3)当<条件>为假(零)时,而且语句中有ELSE语句则执行<语句2>。 4)IF、THEN、ELSE必须在同一行上。 2、示例A、输入x的值,计算y的值。 REM 程序名为:eg1.bas INPUT “请输入x的值:”,x IF x>=0 THEN Y=1+X ELSE Y=1-2*X PRINT "Y=";Y END 例:求一元二次方程Ax2+Bx+C=0(A<>0)的实数根。 分析:写写出程序的流程图,参考流程图来写程序。 程序清单如下: INPUT A,B,C D=B*B-4*A*C IF D<0 THEN then X1=(-B+SQR(D))/(2*A) X2=(-B-SQR(D))/(2*A) PRINT “X1=”;X1, “X2=”;X2 ELSE PRINT “此方程无实根” END

实验四 答案 选择结构程序设计

实验四选择结构程序设计答案 实验时间:年月日 【实验步骤】 一、程序调试练习 1、写出下列程序的运行结果: (1)ex4_1.c #include void main() { char ch; printf("input a character:"); ch=getchar(); if(ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch); } 具体要求: ①从键盘上输入a,分析程序运行的结果。 ②从键盘上输入A,分析程序运行的结果。 ③从键盘上输入5,分析程序运行的结果。 程序运行结果: ①a ②a ③5 (2)ex4_2.c #include void main() { int x,y,z; printf("input x,y,z"); scanf("%d,%d,%d",&x,&y,&z); if(x

②从键盘上给x、y、z分别输入3,5,2,分析程序运行的结果。 ③从键盘上给x、y、z分别输入-5,-3,2,分析程序运行的结果。 程序运行结果: ①z=2 ②z=3 ③z=0 (3)ex4_3.c #include main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d\n",a,b); } 程序运行结果: a=2,b=1 (4)ex4_4.c #include void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf("a=%d,b=%d\n",a,b); } 具体要求:

c语言第4章 选择结构程序设计习题答案

第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max

程序的选择结构教学设计

程序的选择结构 教案编写教师:付虹杨 实际授课教师: ___________________ 实际授课日期:

Then End if Else The n Then Else Else End if 教学过程教师活动学生活动设计意图格式2:又叫块If I f 条件Then Else 2> End I 语句组1> 语句组说明: 新课讲授 (1)条件可以是算术表达式、关系表达式或逻辑表达式等。表达式都会 得到两种可能:非真即假,True或False。 (2)格式2中的if与end if 必须成对出现,缺一不可。 (3)在书写时,格式1中的<语句组>可以有多条语句,如 果有多条语句则必须写在一行,而且语句之间用冒号“:” 分隔开。格式2中的<语句组>中的多条语句,则需分行书写。 (4)将If、Else和End If 语句左对齐,而<语句组1>和<语 句组2>向右缩进若干空格,以使程序结构更加清楚,便 于阅读和查错。 4、条件语句的执行过程 当条件成立时,执行Then后面的语句组1, 否则执行语句组2 选择结构的流程图如下所示: 5、下面我们共同运用选择结构来解决问题:例1、选择题 将鼠标价钱大竞猜的程序补充完整。 Dim a As Si ngle a=I nputBox(“请输入您猜的价钱”) ____ a=20_Print"猜对了"__Print “猜错了” 学生边看课 件,边听教师 讲解选择结构 的基本格式。 注意事项,及 程序的执行过 程。 学生运用选择 结构将鼠标价 钱大竞猜程序 补充完整。 进一步理解 选择结构的 用法、格式、 功能。 让学生熟练 掌握双分支 选择结构的 两种基本格 式及相互转 换。

实验四-答案--选择结构程序设计讲课讲稿

实验四-答案--选择结构程序设计

实验四选择结构程序设计答案 实验时间:年月日【实验步骤】 一、程序调试练习 1、写出下列程序的运行结果: (1)ex4_1.c #include void main() { char ch; printf("input a character:"); ch=getchar(); if(ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch); } 具体要求: ①从键盘上输入a,分析程序运行的结果。 ②从键盘上输入A,分析程序运行的结果。 ③从键盘上输入5,分析程序运行的结果。 程序运行结果: ①a ②a ③5 (2)ex4_2.c #include void main() { int x,y,z; printf("input x,y,z"); scanf("%d,%d,%d",&x,&y,&z); if(x

①从键盘上给x、y、z分别输入2,-1,2,分析程序运行的结果。 ②从键盘上给x、y、z分别输入3,5,2,分析程序运行的结果。 ③从键盘上给x、y、z分别输入-5,-3,2,分析程序运行的结果。 程序运行结果: ①z=2 ②z=3 ③z=0 (3)ex4_3.c #include main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d\n",a,b); } 程序运行结果: a=2,b=1 (4)ex4_4.c #include void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++;

选择结构程序设计练习题

选择结构程序设计练习题 1.逻辑运算符两侧运算对象的数据类型( ) A.只能是0和1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 2.下列运算符中优先级最高的是( ) A.< B.+ C.&& D.!= 3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是( ) A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)||(x>=200)||(x<=210) C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)

4.表示图中坐标轴上阴影部分的正确表达式是( ) A.(x<=a)&&(x>=b)&&(x<=c) B.(x<=a)||(b<=x<=c) C.(x<=a)||(x>=b)&&(x<=c) D.(x<=a)&&(b<=x<=c 5.判断char型量ch是否为大写字母的正确表达式是() A.‘A’<=ch<=‘Z’ B.(ch>=‘A’)&(ch<=‘Z’) C.(ch>=‘A’)&&(ch<=‘Z’) D.(‘A’<=ch)AND(‘Z’>=ch) 6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 () A.‘x’&&‘y’ B.x<=y C.x||y+z&&!y D.!(x

7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是() A.0 B.语法错误 C.1 D.“假” 8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是() A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 9.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为() A.1 B.2 C.3 D.4 10.下列运算符中优先级最低的是( )优先级最高的是( ) A.? B.&& C.+ D.!=

C语言选择结构程序设计编程题.doc

实验2 选择结构程序设计 一.实验目的: 1.掌握选择控制语句的使用方法; 2.了解C程序语句的执行过程。 二.实验内容: 1.编写程序:输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数odd-奇数,请记住这两个单词)。 2.从键盘输入的正整数,判断是否能被5和7同时整除,若是,则输出Yes;否则输出No。 3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字母,则把它变为大写字母;若是其它字符则不变。 4.编写程序,对于给定的一个百分比制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E’(用if…else…与switch 语句两种方法实现)。 5. 企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万元到40万元之间时,高于20万元的部分,可提5%;40万元到60万元之间时,高于40万元的部分,可提成3%;60万元到100万元之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求发放奖金总数。 6. 输入某年某月某日,判断这一天是这一年的第几天。 7. 输入一个字符,请判断是字母、数字还是特殊字符。 8. 身高预测: 男性成人身高=(父亲身高+母亲身高)*0.54cm 女性成人身高=(父亲身高*0.923+母亲身高)/2cm 如果喜爱体育锻炼,那么身高可增加2%;如果有良好的饮食习惯,可增加身高1.5%。键盘输入性别、父母身高、是否爱好体育锻炼、是否有良好的饮食习惯,利用给定身高预测方法对你的身高进行预测。 9. 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式。 操作数1 运算符op 操作数2 计算表达式的值。指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 在此基础上,增加如下要求: (1)如果要求程序能进行浮点数运算,程序应该如何修改?如何比较实型变量和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改? (3)如果要求连续多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么程序如何进行修改?

C语言 选择结构程序设计练习题

第四章选择结构程序设计 一、填空 1.在C语言中,表示逻辑“真”值用_________。 2.得到整型变量a的十位数字的表达式为_________。 3.表达式:(6>5>4)+(float)(3/2)的值是_________。 4.表达式:a=3,a-1‖--a,2*a的值是_________。(a是整型变量) 5.表达式:(a=2.5-2.0)+(int)2.0/3的值是_________。(a是整型变量)6.C语言编译系统在给出逻辑运算结果时,以数值_________代表“真”,以 _________代表“假”;但在判断一个量是否为“真”时,以_________代表“假”,以_________代表真。 7.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为_________,m的值为_________。 8.若有int x,y,z;且x=3,y=-4,z=5,则表达式:!(x>y)+(y!=z)||(x+y)&&(y-z)的值为_________。 二、编程: 1.企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数? 2.输入三个整数x,y,z,请把这三个数由小到大输出。 3.输入某年某月某日,判断这一天是这一年的第几天? 4.本程序演示从键盘输入x的值,计算并打印下列分段函数的值。 y=0(x<60) y=1(60<=x<70) y=2(70<=x<80) y=3(80<=x<90)

第4章选择结构程序设计

第4章选择结构程序设计 通过本章实验作业应达目标 1.练习并熟练掌握if、switch语句使用,实现二路与多路选择结构; 本章必须上交作业 程序4_2.c、4_3.c、4_4.c、4_5.c上传至http://121.251.227.27:8080/c 实验一大小写转换 【实验目的】 熟悉关系与逻辑运算,了解if-else的顺序与嵌套层次关系。 【实验内容】 下面程序希望完成大小写字母转换功能。若输入一个大写字母,则转化为小写输出;若输入小写字母则转化为大写输出;对其他字母则原样不变输出。程序以4_1.c命名,运行程序,分别输入一次大写、一次小写字母、一次‘#’进行验证。如果程序有错,请改正。 #include void main() {char ch; ch=getchar(); if('a'<=ch<='z') ch-=32; if('A'<=ch<='Z') ch+=32; putchar(ch);putchar('\n'); } 实验二算术运算 【实验目的】 学习if~else、switch语句的使用。 【实验内容】 键盘输入一个算术的运算式子,输出运算结果。这里我们规定可以接收五个算术运算的符号:+、-、*、/、^(乘方)。输入这五个符号以外的运算符号则提醒出错。程序以4_2.c命名并上交。 下图是输入输出的示意图: 输入一个加法的算术式: 输入一个除法的算术式: 输入一个乘方的算术式:

求3的平方根: 【实验提示】 本程序需要从键盘接收一个表达式,根据表达式中的运算符号实现相应的运算并将结果保存下来并输出。 C语言本身是没有乘方运算符的,可以调用数学函数pow(x,y)求x的y次方。注意一定要包含。【思考】 输入的表达式实质是按多个不同类型的数据来获取数据的。程序中需要定义多个变量来接收表达式中包含的数据与运算符,并设计相应的输入/输出函数实现。 实验三金额计算 【实验目的】 学习分析与解决实际问题的能力,综合嵌套使用if~else或switch语句。 【实验内容】 某服装店经营套服。以50套为限,若购买数量不少于50套,每套80元;不足50套时每套90元;只买上衣每件60元;只买裤子每条45元。编写程序实现:读入所买上衣c和裤子t的数量,计算应付款总量。程序以4_3.c命名并上交。 实验四成绩转换 【实验目的】 使用if~else、switch语句的嵌套完成程序。 【实验内容】 【实验提示】 本程序需要从键盘接收两个字符,先判断第一个字符,再判断第二个字符以确定其对应的百分制数。例如:输入4+,第一个字符等于'4',则应再判断第二个字符,如果是'+'则输出80,如果是回车符则输出75,如果是'-'则输出70。 【思考】 对于5+、4-这类输入的数据,程序中应采用什么数据类型与数据结构接收保存? 实验五判断天数 【实验目的】 熟练使用switch语句,并设计精巧程序。 【实验内容】

实验三 选择结构程序设计(解答)

实验三选择结构程序设计 (解答) 1.改错题 (1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy3_1.c存盘。 #include main() { char ch,c1,c2; printf("Enter a character:"); ch=getchar(); if((ch>='a')||(ch<='z')) // if((ch>='a')&&(ch<='z')) ch-=32; c1=ch-1; c2=ch+1; if(ch='A') // if(ch=='A') c1=ch+25; else if(ch='Z') // else if(ch=='Z') c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar('\n'); } 改正后的程序: #include main() { char ch,c1,c2; printf("Enter a character:"); ch=getchar(); if((ch>='a')&&(ch<='z')) ch-=32; c1=ch-1; c2=ch+1; if(ch=='A') c1=ch+25;

else if(ch=='Z') c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar('\n'); } (2)下列程序的功能为:输入3个整数后,输出其中最大值。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy3_2.c存盘。 #include "stdio.h" main() { int a,b,c,max; printf ("请输入3个整数:\n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (b>a) max=c;} /* c>b>a */ else /* b>c */ {if (c>a) max=b;} /* b>c>a */ printf("3个数中最大者为:%d\n",max); } 改正后的程序:(方法1) #include "stdio.h" main() { int a,b,c,max; printf ("请输入3个整数:\n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (c>a) max=c;} else {if (b>a)max=b;} printf("3个数中最大者为:%d\n",max); } 改正后的程序:(方法2) #include "stdio.h" main()

选择结构程序设计(精)

实验七选择结构程序设计 一、实验目的 1、掌握应用双生选择结构设计程序解决一般的单分支问题。 2、掌握应用多重选择结构设计程序解决一般多分支问题 二、实验要求 1、对单分支和多分支的语句格式深入了解 2、利用单分支和多分支结构解决较复杂的问题 三、实验内容与步骤 计算机的判断功能是通过结构实现的。选择结构又称为分支结构,是程序设计中应用中较多的程序结构,其特点是由分支中的条件是否成立来决定程序执行的不同走向。 选择结构分为双重选择(IF-ELSE-ENDIF)和多重选择(DO CASE –ENDCASE)两种。 1、设计双重选择结构程序 计算电费:不超过50度,每度0.8元;超过50度时,超出部分每度1.20元. 解:电费DF显然为电量DL的一个分段函数: 0.8*DL (DL<=50) DF= 0.8*50+1.20*(DL-50) (DL>50) 应用选择结构完成电费DF的计算. 设计1: YY1.PRG SET TALK OFF CLEAR INPUT “请输入电量(度):” DL IF DL<=50 DF=0.8*DL ELSE DF=0.8*50+1.20*(DL-50) ENDIF ?”应缴电费:”,DF SET TALK ON RETU 设计2: *YY2.PRG SET TALK OFF CLEAR INPUT “请输入电量(度):” DL DF= 0.8*DL IF DL>50 DF=0.8*50+1.20*(DL-50) ENDIF ?”应缴电费:”,DF SET TALK ON

RETU 2、设计多重选择结构程序 设计程序处理商场推出让利用促销问题:凡购物金额超过500元未超过1000元者,返回20元,超过1000元,返回5%;超过2000元,返回7%,超过4000元,返回10%。输入购物金额,输出应交款数。 解:设购物金额为X,让利金额为Y,则应交款为X-Y。 根据输入的X,采用多重选择结构分5种情形计算Y,输出X-Y。程序为: *YY4.PRG CLEAR SET TALK OFF INPUT “请输入购物金额:”TO X Y=0 DO CASE CASE X〈500 Y=0 CASE X〈1000 Y=20 CASE X〈2000 Y=X*0.05 CASE X<4000 Y=X*0.07 OTHE Y=X*0.1 ENDCASE ?”应交款”,X-Y SET TALK ON RETURN 运行程序:DO YY4.PRG 请输入购物金额:3000 应交款:2790.00元 四、实验习题与思考 1、选择结构分哪几种?有哪几种方法实现多重选择? 2、双多重选择结构中,有ELSE与没有ELSE在功能上有什么区别? 3、在多重选择结构中,OTHERWISE子句的意义是什么?如果不要该子句,如何修改程 序? 4、从永州到长沙铁路托运行李的运费标准为:40千克及以下,每千克0.24元;超过40千克, 超出部分每千克0.42元.设计程序,输入行李重量,输出运费. 5、从键盘输入一个正整数X:若X为奇数,输出X+3,若为偶数,输出X/2。 6、设计多分支选择结构程序,输入一个考试得分F:若F大于或等于90分,显示“优秀”; 若F大于或等于80,显示“良好”;若F大于或等于70,显示“中等”;若F大于或等于60,显示“及格”;若F少于60,显示“补考”。

选择结构程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 (2)学会正确使用逻辑运算符和逻辑表达式。 (3)熟练掌握if语句的使用(包括if语句的嵌套)。 (4)熟练掌握多分支选择语句—switch语句。 (5)结合程序掌握一些简单的算法。 (6)进一步学习调试程序的方法。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时 改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提 示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正 确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容: 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 (1)有一函数: () () ()? ? ? ? ? ≥ - < ≤ - < = 10 x 11 3 10 x 1 1 2 1 x x x x y

五选择结构编程练习

实验五选择结构编程练习 题目: 1身高预测 每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。 设faHeight为其父身高,moHeight为其母身高,身高预测公式为: 男性成人时身高= (faHeight + moHeight) * 0.54(cm) 女性成人时身高= (faHeight * 0.923 + moHeight) / 2(cm) 此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。 编程从键盘输入你的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M 表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示喜爱,输入字符N表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。 实验授课提示: 通过这个实际例子熟悉选择结构程序设计的方法,以及if语句,进一步熟悉TC集成环境的程序编辑、编译、链接、运行和调试方法。 2 简单的计算器程序 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 本实验程序是在例4.8基础上,增加如下要求: (1)如果要求程序能进行浮点数的算术运算,程序应该如何修改?如何比较实型变量data2和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多空白符,那么程序如何修改? (3)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:Do you want to continue(Y/N or y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么,程序如何修改? 实验授课提示: 通过这个实际例子熟悉选择结构程序设计的方法,以及switch语句,进一步熟悉TC集成环境的程序编辑、编译、链接、运行和调试方法。 对于第(3)题,可利用%1s格式符输入用户回答,利用do-while语句实现反复运算直到用户键入N或n。

相关文档
相关文档 最新文档