选择结构的程序设计(参考程序)

()练习

问题1:某商场为了对苹果进行促销,规定购买2千克以上可以在原价每千克1.5的基础上打8折。请设计一个程序计算购买x千克苹果的应付款。

1)分析问题: 设买苹果的重量为x千克,应付款为y,如果x>=2,y=1.5*x*0.8,否则y=1.5*x

   2)设计算法: ①    输入x的值          如果x>=2,y=1.5*x*0.8

    否则y=1.5*x         输出y的值

3)编写程序: Private sub command1_click()

Dim x as single

x=Inputbox(“请输入购买苹果的重量”)

if x>=2 then

    y=1.5*x*0.8

else

    y=1.5*x

end if

Print “应付款”;y;“元”

                End sub

4)调式程序

(七)多重选择语句

问题2:输入一个成绩,如果90分以上,则输出“优秀”;80-89,则输出“良好”;70-79,则输出“中等”;60-69,则输出“及格”;60分以下则输出“不及格”,请编写程序。

如果这道题使用if语句来编写程序的话,程序如下:

Private sub command_click()

  X=inputbox(“请输入一个分数”)

If X>=90 then print”优秀

If X>=80 and X<89 then print”良好

If X>=70 and X<79 then print”中等

If X>=60 and X<69 then print”及格

If X <60 then print”不及格

End sub

在程序2-4中,使用了5if语句来处理5种情况。这样的程序在可读性和效率方面都是比较差的,如果再多一些情况,它的缺陷就会暴露得更加明显,如何处理这个问题呢?

1)多重选择语句格式: 在VB语言中,设置了一个处理多种情况的语句,称为多重选择语句,它的基本格式为:

    select case 表达式

       case 表达式列表1

          语句组1

case 表达式列表2

   语句组2

……

             Case 表达式列表n

                语句组n

  case else

         语句组n+1

     end select

其中: 1、表达式和表达式列表可以是数值型或字符型,表达式列表还可以是多个用逗号分开的表达式。

2、表达式列表与表达式的类型必须相同。

3、表达式列表又称值域,它有如下三种形式:

    表达式1,表达式2,……

    表达式1 to表达式i(i<=n)

    Is关系表达式

2)多重选择语句的执行过程

  多重选择语句的执行过程是:

      当表达式的值为表达式列表1时,执行语句组1

      当表达式的值为表达式列表2时,执行语句组2

                ……

   当表达式的值为表达式列表n时,执行语句组n

   当表达式的值不是上述值时,执行语句组n+1

有了多重选择语句,对于多种情况的选择问题,就可以利用它来解决。运用多重选择语句编写问题2的程序如下:

 

Private sub command_click()

 X=inputbox(“请输入学生成绩”)

 Select case X

   Case Is>=90

Print”优秀

   Case 80 to 89   

Print”良好

   Case 70 to 79

Print”中等

   Case 60 to 69

Print”及格

   Case else

Print”不及格

End select

End sub

()练习

  问题3:我们把字符作如下的分类:大写字母:AZ;小写字母:az;数字:09;其它字符。编写程序,根据上述分类的方法,输入一个字符,报告该字符所属的类型。

三、编写一个C程序,计算并显示某人根据下列表达式确定的周薪:“如果工作时间小于或等于40小时,那么该职员将得到 8.00 /小时;否则,该职员将在 320.00 元的基础上,对于超过40小时的部分,再加上 12.00 /小时”。你所编写的程序请求输入工作时数,并将得到的薪水作为输出结果显示出来。

/* 程序:Ls05Ex03.c

*/

 

#include <stdio.h>

void main()

{

  int workHours;   //声明工作时数

  float weekPay;   //声明周薪

 

  //接收用户输入的周工作时数

  printf("请输入您周工作的时数:");

  scanf("%d",&workHours);

  //计算周薪

  if(workHours<=40)   //周工作时间在40小时或以下

     weekPay = workHours * 8.0;

  else          //周工作时间在40小时以上

     weekPay = (workHours-40)*12.0 + 320.0;

  //输出周薪

  printf("您的周薪为%.2f\n",weekPay);

}

 

四、编写一个C程序, 求解ax2 + bx + c = 0 方程的根。

提示:如果方程有根(含同根),求解并输出x1,x2,如果方程没根,输出信息“方程无实根!”。

思考并回答:你认为需要运行几次所写的程序才能确认它运行正常?在每次运行程序时,你输入了哪些数据?

参考程序:

/* 程序:Ls05Ex04.c

  求一元二次方程的根

*/

 

#include <stdio.h>    //包括标准输入输出函数头文件

#include <math.h>     //包括数学方法头文件

void main()

{

  //声明变量

  float a,b,c,x1,x2;

 

  printf("请输入a,b,c的值:")

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

  if(b*b-4*a*c>=0) //如果方程有根

  {

     x1 = -b+sqrt(b*b-4*a*c)/(2*a);

     x2 = -b-sqrt(b*b-4*a*c)/(2*a);

     printf("x1=%.2f\nx2=%.2f\n",x1,x2);

  }

  else          //方程无解

     printf("该方程无实根!\n");

}

 

五、根据下表计算一下销售人员的月收入

销售人员的月收入

月销售额

收 入

大于或等于50,000美元

375美元,加上销售额的16%

小于50,000美元,但大于或等于40,000美元

350美元,加上销售额的14%

小于40,000美元,但大于或等于30,000美元

325美元,加上销售额的12%

小于30,000美元,但大于或等于20,000美元

300美元,加上销售额的 9%

小于20,000美元,但大于或等于10,000美元

250美元,加上销售额的 5%

小于10,000美元

200美元,加上销售额的 3%

 要求分别用if-else语句和switch-case语句编写C程序,接受销售人员的月销售额,计算其月收入

[参考程序: if-else 结构]

/* 程序:Ls05Ex05a.c */

 

#include <stdio.h>    //包括标准输入输出头文件

void main()         //主函数

{

   //定义销售额和薪水

   double sale,pay;

  

   //接收用户输入的销售额

   printf("请输入您本月的销售额:");

   scanf("%lf",&sale);

   //计算就付薪水

   if( sale>=50000.00 )     //销售额在 50000.00 以上

      pay = 375.00 + sale*0.16;

   else if( sale>=40000.00 ) //销售额为 [40000.00,50000.00)

      pay = 350.00 + sale*0.14;

   else if( sale>=30000.00 ) //销售额为 [30000.00,40000.00)

      pay = 325 + sale*0.12;

   else if( sale>=20000.00 ) //销售额为 [20000.00,30000.00)

      pay = 300 + sale*0.09;

   else if( sale>=10000.00 ) //销售额为 [10000.00,20000.00)

      pay = 250 + sale*0.05;

   else                //销售额为 10000.00 以下

      pay = 200 + sale*0.03;

   //输出本月应付薪水

   printf("本月薪水为$%.2lf.\n",pay);

}

[参考程序: switch 结构]

/* 程序:Ls05Ex05b.c */

 

#include <stdio.h>    //包括标准输入输出头文件

void main()         //主函数

{

   //定义销售额和薪水

   double sale,pay;

  

   //接收用户输入的销售额

   printf("请输入您本月的销售额:");

   scanf("%lf",&sale);

   //计算就付薪水

   switch((int)(sale/10000.00))   //进行折算

   {

      case 0:          //销售额为 10000.00 以下

           pay = 200 + sale*0.03;

           break;

      case 1:          //销售额为 [10000.00,20000.00)

           pay = 250 + sale*0.05;

           break;

      case 2:          //销售额为 [20000.00,30000.00)

           pay = 300 + sale*0.09;

           break;

      case 3:          //销售额为 [30000.00,40000.00)

           pay = 325 + sale*0.12;

           break;

      case 4:          //销售额为 [40000.00,50000.00)

           pay = 350.00 + sale*0.14;

           break;

      default:      //销售额在 50000.00 以上

           pay = 375.00 + sale*0.16;

   }

   //输出本月应付薪水

   printf("本月薪水为$%.2lf.\n",pay);

}

原文地址:https://www.cnblogs.com/shihao/p/1493048.html