实验二  选择结构程序设计
一、实验目的
1. 掌握关系表达式和逻辑表达式的使用。
2. 熟悉选择结构程序设计。
3. 熟练使用if语句进行程序设计。
4. 使用switch语句实现多分支选择结构。
二、实验内容
计算a+|b|  2  判断一个整数是否可以被35整除)
1[目的]掌握判断一个字符型数据是否数字字符的方法,以及数字字符转换为相应整数的方法。
[题目内容]从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。
[输入]一个字符型数据
[输出]整数或出错信息
[提示] 根据字符型数据的ASCII码值是否在‘0’字符与‘9’字符之间进行判断。使用if…else…语句和复合语句。
2[目的]掌握条件表达式的使用
[题目内容] 编写一个程序,其功能为:从键盘输入三个数xyz,判断x+y=z是否成立,若成立输出“x+y=z”的信息,否则输出“x+y!=z”的信息。
[输入] 三个数xyz
[输出] x+y=z”或“x+y!=z
[提示] 条件判断表达式x+y==z
3[目的]掌握求最大值最小值的方法。
[题目内容] 编写一个程序,其功能为:输入三个整数,输出最大数和最小数。
[输入] 三个整数
[输出] 最大值和最小值
[提示] 设置最大值变量max和最小值变量min;首先比较a,b的大小,并把大数存入max 小数存入min;然后最大值变量max和最小值变量min再与c比较,若c大于max,则max取值c,否则保持不变;如果c小于min,则min取值c,否则保持不变。最后输出maxmin的值。使用if…else…语句、if语句以及复合语句。
4[目的]运用已学知识解决实际问题。
[题目内容]如下两个线性方程组的两个未知数为x1x2
ax1+bx2=m
cx1+dx2=n
该方程的唯一解为(ad-cb不等于零时):
             
请编写一个程序,读取abcd的值,计算x1x2的值。如果ad-cd等于零,应给出适当的提示信息。
[输入]方程的系数 abcd的值
[输出] ad-cb不等于零时,输出方程的解x1x2的值;当ad-cb等于零时,输出提示信息。
[提示] if…else…语句和复合语句实现。
三、课后作业(写在实验报告中)
1[目的]运用已学知识解决实际问题。
[题目内容]某产品生产成本c=c1+mc2,其中c1为固定成本,c2为单位产品可变成本。当生产数量m<10000时,c1=20000元,c2=10元;当生产数量m10000时,c1=40000元,c2=5元;编写一个程序,其功能为:分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。
[输入] 生产数量
[输出] 生产数量、总生产成本、单位可变成本
2[目的]掌握分段函数的计算。
[题目内容] 编写一个程序,计算下列函数:
y=
x
x<1
2x-1
1x<10
3x-11
X10
[输入] x
[输出] y
[提示]根据输入的x值的取值,计算y的值并输出。使用if…else if语句以及复合语句。
3[目的]掌握字符型变量的定义与使用,掌握大小写字母转换的算法。
[题目内容] 编写一个程序,其功能为:从键盘输入一个字符,判别该字符的类别,并输出向相应信息。
[输入]一个字符
[输出] 显示“控制字符”、“数字字符”、“大写字母”、“小写字母”、“其它字符”信息。
[提示] 根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。 '0''9'之间的为数字,在'A''Z'之间为大写字母, 'a''z'之间为小写字母,其余则为其它字符。使用if…else if…语句。
4[目的]掌握标准数学函数使用。
[题目内容]编写一个程序,其功能为:从键盘输入一元二次方程ax2+bx+c=0的各项系数abc的值,判断方程实数解的不同情况,分别求解方程,并输出(结果保留两位小数,如无实根给出相应的信息)。
应用如下规则:
(1) ab的值为零,则没有解;
(2) a为零,只有一个实数解;
(3) b2-4ac为负数,则没有实数解;若b2-4ac为正数,有两个实数解;若b2-4ac为零,有两个相等的实数解。
[输入]一元二次方程ax2+bx+c=0的各项系数abc
[输出] 方程的实数解情况
[提示]包含标准数学函数头文件,使用标准数学函数sqrt(x)实现开平方计算,判别式b2-4ac,如果小于0,则输出“方程无实数根”,等于0 ,输出一个实根,结果使用双精度浮点数表示,%lf格式,大于0,输出两个不同的实数根,结果使用双精度浮点数表示,%lf格式
5[目的]运用已学知识解决实际问题。
[题目内容] 编写程序,输入三角形三边 abc,判断abc能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
[输入] 三角形三边 abprintf输出格式lfc
[输出] 不能构成三角形或能构成等腰、等边、直角、一般三角形的信息。
[提示]利用三角形两边之和大于第三边判断是否能够构成三角形,能够成三角形时再以等腰、等边、直角三角形的条件进行判断。
6[目的]运用已学知识解决实际问题。
[题目内容]某个电力公司对其用户的收费规定如下:
用电数量  收费标准
0~200      x*0.5
201~400    100+x-200*0.65
401~600    230+x-400*0.8
601以上    390+x-600*1.0
编写程序,对于一个输入的用电数量,计算用户的缴费额。     
[输入] 用电数量
[输出] 缴费额
[提示] if…else if语句实现。注意输入负数时的处理。
7[目的]运用已学知识解决实际问题。
[题目内容]某个服装展示厅对所卖商品打折规定如下:
------------------------------------------------------------
购买总额              折扣
            -------------------------------------------
            机加工产品  手工产品
0~100        -            5%
101~200      5%            7.5%
201~300      7.5%          10.0%
大于300    10.0%          15.0%
--------------------------------------------------------------
编写程序输入购买总额,计算并输顾客实际应付的货款。
[输入]顾客的购买总额
[输出] 顾客实际应付的货款
[提示]机加工产品与手工产品可以使用类别变量表示,例如,设计类别变量为lb,假设lb=0表示机加工产品,lb=1表示手工产品。
8[目的]switch语句的练习
[题目内容]编程在屏幕上显示一张如下所示的时间表: 
        *******Time*******
1 morning
2 afternoon
3 night
Please enter your choice:
根据用户输入的时间序号显示相应的问候信息,选择1时显示“Good morning, 选择2时显示“Good afternoon, 选择3时显示“Good night,对于其他选择显示“Selection error!”。
[输入] 序号
[输出] 问候语或其他信息
[提示] switch语句实现
9[目的]运用已学知识解决实际问题。
[题目内容]编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
          操作数运算符op  操作数2
计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/)
[输入]
Please enter the expression22.12+12.10
[输出]
22.12+12.10=34.22     
[提示] 分别用ifswitch语句实现
10输入某学生的成绩,经处理后给出学生的等级,等级分类如下:
      90分以上(包括90): A
      8090分(包括80):B
      7080分(包括70):C
      6070分(包括60):D
      60分以下:          E
方法一:(if语句的嵌套)
方法二:用switch语句