- C程序設計語言
- 魏東平 朱連章 于廣斌編著
- 972字
- 2018-12-29 14:37:42
3.4 順序程序設計
到目前為止,已經學習了數據的輸入、處理和輸出的一般方法,也就具備了編寫簡單程序的基本條件。下面結合實例,學習簡單的程序設計。
所謂簡單的程序設計,就是在進行程序設計時,只使用表達式語句和函數調用語句,不涉及復合語句和控制語句等。這樣的程序稱為“順序程序”,這是結構最為簡單、也是最基本的一類程序,程序中的語句按照排列的先后順序依次執行。
【例3.6】 輸入一個大寫字母,轉化為小寫字母輸出。
分析:單字母的輸入、輸出可以用getchar、putchar函數,也可以用scanf、printf函數。
在字符編碼集中,大寫字母和小寫字母的編碼相差32,因此,小寫字母=大寫字母+32。
算法用N-S圖表示,如圖3.3所示。

圖3.3 將大寫字母轉化為小寫字母
程序如下:
1 #include <stdio.h> 2 void main() 3 { char c; 4 printf("輸入一個大寫字母:"); /* 輸入提示 */ 5 c=getchar(); 6 c=c+32; /* 大寫字母轉化為小寫字母 */ 7 printf("對應的小寫字母為:"); 8 putchar(c); 9 }
試試看,如果輸入的不是大寫字母,結果是不是很可笑呢?能不能對輸入數據進行限制:如果輸入的不是大寫字母,就不執行轉換和輸出呢?答案當然是肯定的,不過需要引入選擇結構,詳見第4章。
【例3.7】 輸入a、b、c的值,設b2-4ac>0且a≠0,輸出一元二次方程ax2+bx+c=0的實根。
分析:對于一元二次方程ax2+bx+c=0,如果b2-4ac>0且a≠0,則方程有兩個實根:

因此,只要輸入的系數滿足要求,就可以求得該一元二次方程的兩個不同的實根。當然,在求根公式中,需要進行求平方根的運算,可以使用數學函數庫中的平方根函數sqrt來完成。
N-S圖如圖3.4所示。

圖3.4 求一元二次方程的根
程序如下:
1 #include "stdio.h" 2 #include "math.h" 3 void main() 4 { float a,b,c,disc,x1,x2,p,q,a2; 5 printf("Please Input a、b、c:"); /* 輸入提示 */ 6 scanf("%f%f%f",&a,&b,&c); /*輸入系數a、b、c*/ 7 disc=b*b-4*a*c; 8 a2=2*a; 9 p=-b/a2; 10 q=sqrt(disc)/a2; 11 x1=p+q; 12 x2=p-q; 13 printf("Roots of equation%.1f*x^2+%.1f*x+%.1f are:\n",a,b,c); 14 printf("x1=%.3f\nx2=%.3f\n",x1,x2); 15 }
運行結果為:
Please Input a、b、c:1 5 4↙ Roots of equation 1.0*x^2+ 5.0*x+4.0 are: x1=-1.000 x2=-4.000
【例3.8】 已知三角形的兩條邊及其夾角,求其第三邊長度。
分析:根據題目給定的條件,數學上利用余弦定理求第三邊的長度。方法是:若給定的兩條邊是a和b,夾角為α,則第三邊的長度c為:

程序中,α用標識符alpha代表。
N-S圖如圖3.5所示。

圖3.5 利用三角形的兩條邊及其夾角求其第三邊長度
程序如下:
1 #define PI 3.14 /* 定義符號常量PI */ 2 #include "stdio.h" 3 #include "math.h" 4 void main() 5 { float a,b,c,x,y; 6 float alpha; 7 printf("Input a、b、alpha:"); /* 輸入提示 */ 8 scanf("%f,%f,%f",&a,&b,&alpha); /* 輸入三角形的兩條邊及夾角 */ 9 x=alpha*PI/180; /* 將alpha由度轉換成弧度 */ 10 y=a*a+b*b-2*a*b*cos(x); /*利用余弦定理求第三邊的長度 */ 11 c=sqrt(y); 12 printf("c=%7.3f\n",c); 13 }
運行情況為:
Input a、b、alpha:3,4,90↙ (注:按程序要求,采用逗號分隔數據) c=4.998