官术网_书友最值得收藏!

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
主站蜘蛛池模板: 五华县| 华蓥市| 彰化县| 胶南市| 天柱县| 海口市| 保德县| 兴山县| 牟定县| 桃园市| 沙湾县| 大连市| 确山县| 马关县| 台南市| 徐水县| 普兰店市| 永康市| 泰安市| 方城县| 湄潭县| 大石桥市| 当涂县| 齐河县| 黑河市| 佛山市| 西平县| 通州市| 长治县| 丘北县| 云霄县| 邯郸县| 县级市| 清流县| 武威市| 博罗县| 淅川县| 精河县| 无锡市| 洮南市| 益阳市|