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


    ()练习

    问题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);

    }

  • 相关阅读:
    csrf攻击 xss区别
    同源策略
    JavaScript中数组的排序——sort()
    箭头函数
    bind(),call(),apply()
    异步操作
    slice(), splice(),split(),indexOf(),join(),replace()
    04-Linux系统编程-第01天(文件IO、阻塞非阻塞)
    03-Linux命令基础-第03天(makefile、静态库、动态库、gdb调试工具)
    02-Linux命令基础-第02天(压缩包管理、服务器搭建与使用、vim)
  • 原文地址:https://www.cnblogs.com/shihao/p/1493048.html
Copyright © 2020-2023  润新知