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"); } }