格式輸入函數

格式輸入函數,就像寫漢字一樣,寫出什麼樣的字體,就會看到什麼樣的字體。
在C語言中,格式輸入使用scanf()函數。該函數的功能是指定固定的格式,並且按照指定的格式接收用戶在鍵盤上輸入的數據,最後將數據存儲在指定的變量中。
scanf()函數的一般格式如下:

scanf(格式控制,地址列表) 

通過scanf()函數的一般格式可以看出,參數位置中的格式控制與printf()函數相同。如“%d”表示十進制的整型,“%c”表示單字符。而在地址列表中,此處應該給出用來接收數據變量的地址。如得到一個整型數據的操作語句如下:

scanf("%d",&iInt);                              /*得到一個整型數據*/ 

在這一行代碼中,“&”符號表示取iInt變量的地址,因此不用關心變量的地址具體是多少,只要在代碼中變量的標識符前加“&”,就表示取變量的地址。
注意:編寫程序時,在scanf()函數參數的地址列表處,一定要使用變量的地址,而不是變量的標識符,否則編譯器會提示出現錯誤。
如表5.3所示列出了scanf()函數中常用的格式字符。
表5.3 scanf()函數的格式字符

格式輸入函數
說明:格式字符“%s”用來輸入字符串。將字符串送到一個字符數組中,在輸入時以非空白字符開始,以第一個空白字符結束。字符串以串結束標誌“\0”作爲最後一個字符。

實例07 計算圓的周長和球的體積

在本實例中,輸入圓的半徑,計算圓的周長和球的體積。利用scanf()函數得到用戶輸入的圓的半徑,因爲scanf()函數只能用於輸入操作,所以需要使用顯示函數將計算的信息顯示在屏幕上。具體代碼如下:

01  #include<stdio.h>
02  
03  int main()
04  {
05          float Pie=3.14f;                            /*定義圓周率*/
06          float fArea;                                /*定義變量*/
07          float fRadius;
08          puts("Enter the radius:");
09          scanf("%f",&fRadius);                       /*輸入圓的半徑*/
10          fArea=2*fRadius*Pie;                        /*計算圓的周長*/
11          printf("The perimeter is: %.2f\n",fArea);   /*輸出計算的結果*/
12          fArea=4/3*(fRadius*fRadius*fRadius*Pie);    /*計算球的體積*/
13          printf("The volume is: %.2f\n",fArea);      /*輸出計算的結果*/
14          return 0;                               /*程序結束*/
15  }

運行程序,顯示結果如圖5.10所示。
格式輸入函數
圖5.10 面積和體積結果

從該實例代碼和運行結果可以看出:
(1)爲了能接收用戶輸入的數據,在程序代碼中定義了一個變量fRadius。因爲scanf()函數只能接收用戶的數據,而不能顯示信息,所以先使用puts函數輸出一段字符表示信息提示。
(2)調用scanf()格式輸入函數,在函數參數中可以看到,在格式控制的位置使用雙引號將格式字符包括,“%f”表示輸入的是float浮點類型數據。在參數中的地址列表位置,使用“&”符號表示變量的地址。此時變量fRadius已經得到了用戶輸入的數據。
(3)利用表達式計算圓的周長和球的體積,調用printf()函數將變量進行輸出。
注意:printf()函數使用的是變量的標識符,而不是變量的地址。scanf()函數使用的是變量的地址,而不是標識符。
說明:在輸入多個數據時,scanf()函數使用空白字符分隔輸入的數據,這些空白字符包括空格、換行、製表符(tab)。例如在本程序中,使用換行作爲空白字符。

練一練:
輸入身高和體重,計算身體質量指數(BMI),計算公式 BMI = 體重/身高2。
實例07只輸入一個數據,scanf()函數也可以輸入多個數據,初學者在設計格式輸入時,最好把每個格式控制符分隔開,例如下面的實例08。

實例08 輸入x和y兩個數值,並輸出交換後的值

在本實例中,利用scanf()函數輸入x和y兩個數值。交換後調用printf()函數輸出。具體代碼如下:

01  #include <stdio.h>                              /*包含頭文件*/
02  int main()                                      /*主函數main*/
03  {
04      int x,y;                                    /*定義變量*/
05      printf("please  enter two numbers:\n");     /*提示信息*/
06      scanf("x=%d,y=%d",&x,&y);                   /*輸入x,y數據*/
07      x=y-x;                                      /*交換x,y的值*/
08      y=y-x;
09      x=y+x;   
10      printf("x=%d,y=%d\n",x,y);                  /*輸出交換後的數據*/
11      return 0;                                   /*程序結束*/
12  }

運行程序,顯示結果如圖5.11所示。
格式輸入函數
圖5.11 交換數值
從該實例代碼和運行結果可以看出:
(1)使用printf()函數顯示一串字符,提示輸入的數據兩個數據,調用scanf()函數使變量x和y得到用戶輸入的數據。
(2)第7~第9行代碼實現x和y兩個數的交換。最後利用printf()函數將輸入得到的數據進行輸出。
練一練:
輸入大寫字母,同時輸出對應的小寫字母。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章