4.5 程序举例

【例4.9】 输入3个整数,输出3个数中的最大数和最小数。

分析:本例可以用基本if语句实现。定义5个整型变量a、b、c、max和min,其中a、b、c用于表示从键盘输入的任意3个整数,max表示其中的最大数,min表示其中的最小数。首先假设a是大数,即把a先赋予变量max,再用if语句判断max和b的大小,如果max小于b,则把b赋予max。然后用if语句判断max和c的大小,如果max小于c,则把c赋予max。因此,max中总是较大的数,最后输出max的值。类似的方法可以求出最小值min。

程序代码如下:

            /* 输出3个数中的最大数和最小数 */
            #include"stdio.h"
            main()
            {
              int a,b,c,max,min;
              printf("input three numbers:");
              scanf("%d%d%d",&a,&b,&c);
              max=a;min=a;
              if(max<b)max=b;
              if(min>b)min=b;
              if(max<c)max=c;
              if(min>c)min=c;
              printf("max=%d\nmin=%d\n",max,min);
            }

本例还可这样考虑,首先比较a与b的大小,把大数装入max中, 小数装入min中(可用if-else语句来实现),然后再与c比较,若max小于c,则把c赋予max,如果min大于c,则把c赋予min(可用基本if语句来实现)。因此max内总是最大数,而min内总是最小数。最后输出max和min的值即可。

程序代码如下:

            /* 输出3个数中的最大数和最小数 */
            #include"stdio.h"
            main()
            {
              int a,b,c,max,min;
              printf("input three numbers:");
              scanf("%d%d%d",&a,&b,&c);
              if(a>b)
                {max=a;min=b;}
              else
                {max=b;min=a;}
                    if(max<c)max=c;
                    if(min>c)min=c;
              printf("max=%d\nmin=%d",max,min);
            }

【例4.10】 计算器程序。输入运算数和四则运算符,输出计算结果。

分析:本例实现算术四则运算。定义3个实型变量a、b和s,a和b表示输入的两个运算数,s表示运算结果;定义一个字符变量c,表示输入的运算符,利用switch语句判断运算符的类别,然后输出运算值。当输入的运算符不是“+、-、*和/”时给出错误提示。

            /* 计算器程序 */
            #include"stdio.h"
            main()
            {
              double a,b,s;char c;
              printf("input expression:a+(,*,/)b:\n");
              scanf("%lf%c%lf",&a,&c,&b);
              printf("%lf%c%lf=",a,c,b);
              switch(c)
              {
                case'+':printf("%lf\n",a+b);break;
                case'-':printf("%lf\n",a-b);break;
                case'*':printf("%lf\n",a*b);break;
                case'/':printf("%lf\n",a/b);break;
                default:printf("input error\n");
              }
            }

程序运行结果如下:

            input expression:a+(-,*,/)b:
            输入:1+2<Enter>
            输出:1.000000+2.000000=3.000000

【例4.11】 若x为实型量,计算分段函数:

分析:这是一个4分支问题,可用if-else if-else语句求解,也可用switch语句求解。首先用if语句编程,程序代码如下:

            #include"stdio.h"
            main()
            {
              double x,y;
              printf("Please input the value of x:");
              scanf("%lf",&x);
              if(x<0.5||x>=4.5)
                printf("x error\n");
              else if(x<1.5)
                y=3+2*x;
              else if(x<2.5)
                y=3-2*x;
              else if(x<3.5)
                y=3*2*x;
              else
                y=3/(2*x);
              printf("y=%lf\n",y);
            }

用switch语句编程,程序代码如下:

            #include"stdio.h"
            main()
            {
              float x,y;
              printf("Please input the value of x:");
              scanf(“%d”,&x);
              switch((int)(x+0.5))
              {case 1:y=3+2*x;break;
                case 2:y=3-2*x;break;
                case 3:y=3*2*x;break;
                case 4:y=3/(2*x);break;
                default:printf("x error\n");
              }
              printf("y=%f",y);
            }

显然switch语句使程序更简明易读。在switch的表达式中,将x进行了舍入并取整,使实型量x可以在所在的4个区间分别转换为整型量1、2、3和4,再与case后的常量比较,进行相应的计算。

【例4.12】 编写程序实现屏幕菜单。

要求程序运行后首先在屏幕上显示如下的菜单选项:

            Enter your selection:
            1:Find square of number
            2:Find cube of a number
            Enter number(1 or 2):

通过键盘输入1或2后分别完成求一个数的平方数和立方数。

分析:该题目用switch语句实现比较简单。首先通过C语言的输出函数在屏幕上输出菜单功能,然后设计switch语句的每一个case分支为用户提供一种选择功能,使程序可以按照用户的输入执行不同的程序段以完成不同的任务。

程序代码如下:

            #include"stdio.h"
            main()
            {
              float x;int a;
              printf("Enter your selection:\n");     /* 以下3条输出语句实现屏幕菜单的显示 */
              printf("1:Find square of a number\n");
              printf("2:Find cube of a number\n");
              printf("Enter number(1 or 2):");
              scanf("%d",&a);
              switch(a)                             /* 根据用户的输入进行不同操作 */
              {
                      case 1:printf("Enter a number\n");
                      scanf("%f",&x);
                      printf("The square of %f is %f\n",x,x*x);break;
                case 2:printf("Enter a number\n");
              scanf("%f",&x);
                      printf("The cube of %f is %f\n",x,x*x*x);break;
                default:printf("Invalid selection");
                }
            }