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為實型量,計算分段函數:
#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");
}
}