<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    BeautifulMan

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      16 隨筆 :: 0 文章 :: 0 評論 :: 0 Trackbacks
    復習題
    1、再次運行程序清單4.1,但是在要求您輸入名字時,請輸入您的名字和姓氏。發生了什么?為什么?
    答:
     1 #include <stdio.h>
     2 #include <string.h>
     3 #define DENSITY 62.4
     4 int main(void)
     5 {
     6     float weight, volume;
     7     int size, letters;
     8     char name[40]; // name是一個有40個字符的數組
     9 
    10     printf("Hi! What's your first name?\n");
    11     scanf("%s", name);
    12     printf("%s, what's your weight in pounds?\n", name);
    13     scanf("%f", &weight);
    14     size = sizeof(name);
    15     letters = strlen(name);
    16     volume = weight / DENSITY;
    17     printf("Well, %s, your volume is %2.2f cubic feet.\n", name, volume);
    18     printf("Also, your first name has %d letters, \n", letters);
    19     printf("and we have %d bytes to store it in.\n", size);
    20     return 0;
    21 }
    如果輸入名字和姓氏,會輸出如下結果:
    Hi! What's your first name?
    Li Ayun
    Li, what's your weight in pounds?
    Well, Li, your volume is 0.00 cubic feet.
    Also, your first name has 2 letters,
    and we have 40 bytes to store it in.
    原因:(參考課后答案)程序不能正常工作。第一個scanf()語句只是讀入您的名而沒有讀入您的姓,您的姓依然存儲在輸入“緩沖區”(緩沖區只是一塊用來存放輸入的臨時存儲區域)中。當下一個scanf()語句想要讀入您的體重時,它從上次讀入結束的地方開始,這樣就試圖把您的姓作為體重來讀取。這會使scanf()失敗。一方面,如果您對姓名請求做出像Li 123這樣的響應,程序會使用123作為您的體重,雖然您是在程序請求體重之前輸入123的。
    2、假定下列每個示例都是某個完整程序的一部分。它們的打印結果分別是什么?
    a.printf("He sold the painting for $%2.2f.\n", 2.345e2);
    b.printf("%c%c%c\n", 'H', 105, '\41');
    c.#define Q "His Hamlet was funny without being vulgar. "
             printf("%s\nhas %d characters.\n", Q, strlen(Q));
    d.printf("Is %2.2e the same as %2.2f?\n", 1201.0, 1201.0);
    答:
    a.He sold the painting for $234.50.
    b.Hi!
    c.His Hamlet was funny without being vulgar. (注意,與課后答案不一樣,是因為細看題目的話,此句末尾有一個空格,strlen()函數輸出字符串中字符(包括空格和標點符號)的準確數目)
       has 43 characters.
    d.Is 1.20e+003 the same as 1201.00?
    3、在問題2c中,應進行哪些修改以使字符串Q引在雙引號中輸出?
    答:
    使用\"。示例如下:
    printf("\"%s\"\nhas %d characters.\n", Q, strlen(Q));
    4、找出下列程序中的錯誤。
     1 define B booboo
     2 define X 10
     3 main(int)
     4 {
     5     int age;
     6     char name;
     7 
     8     printf("Please enter your first name. ");
     9     scanf("%s", name);
    10     printf("All right, %c, what's your age?\n", name);
    11     scanf("%f", age);
    12     xp = age + X;
    13     printf("That's a %s! You must be at least %d.\n", B, xp);
    14     rerun 0;
    15 }
    答:
    下面是一個正確的版本:
     1 #include <stdio.h>
     2 #include <string.h>
     3 #define B "booboo"
     4 #define X 10
     5 int main(void)
     6 {
     7     int age;
     8     int xp;
     9 
    10     char name[40];
    11 
    12     printf("Please enter your first name. \n");
    13     scanf("%s", name);
    14     printf("All right, %s, what's your age?\n", name);
    15     scanf("%d", &age);
    16     xp = age + X;
    17     printf("That's a %s! You must be at least %d.\n", B, xp);
    18     return 0;
    19 }
    5、假設一個程序這樣開始:
    1 #define BOOK "War and Peace"
    2 int main(void)
    3 {
    4     float cost = 12.99;
    5     float precent = 80.0;
    請構造一個printf()語句,使用BOOK、cost和percent打印下列內容:
    This copy of "War and Peace" sells for $12.99.
    That is 80% of list.
    答:
    printf("This copy of \"%s\" sells for $%.2f.\nThat is %.0f%% of list.", BOOK, cost, percent);
    6、您會使用什么轉換說明來打印下列各項內容?
    a.一個字段寬度等于數字位數的十進制整數。
    b.一個形如8A、字段寬度為4的十六進制整數。
    c.一個形如232.346、字段寬度為10的浮點數。
    d.一個形如2.33e+002、字段寬度為12的浮點數。
    e.一個字段寬度為30、左對齊的字符串。
    答:
    a.%d
    b.%4X
    c.%10.3f
    d.%12.2e
    e.%-30s
    對于浮點數來說,字段寬度包含了小數點右邊的數字的數目
    7、您會使用哪個轉換說明來打印下列各項內容?
    a.一個字段寬度為15的unsigned long整數
    b.一個形如0x8a、字段寬度為4的十六進制整數
    c.一個形如2.33E+02、字段寬度為12、左對齊的浮點數
    d.一個形如+232.346、字段寬度為10的浮點數
    e.一個字符串的前8個字符,字段寬度為8字符
    答:
    a.%15lu
    b.%#4x(字段寬度應放在#和x之間)
    c.%-12.2E("-"修飾符使浮點數左對齊輸出)
    d.%+10.3f
    e.%-8.8s("-"修飾符使文本左對齊輸出)
    8、您會使用什么轉換說明來打印下列各項內容?
    a.一個字段寬度為6、最少有4位數字的十進制整數
    b.一個字段寬度在參數列表中給定的八進制整數
    c.一個字段寬度為2的字符
    d.一個形如+3.13、字段寬度等于數字中字符個數的浮點數
    e.一個字符串的前5個字符,字段寬度為7、左對齊
    答:
    a.%6.4d
    b.%*o(此處為小寫字母o,而不是數字0)
    c.%2c
    d.%+.2f
    e.%-7.5s
    9、為下列每個輸入行提供一個對其進行讀取的scanf()語句,并聲明語句中用到的所有變量或數組。
    a.101
    b.22.32 8.34E-09
    c.linguini
    d.catch 22
    e.catch 22(但是跳過catch)
    答:
    a.
    1 int num;
    2 scanf("%d", &num);
    b.
    1 float kgs, share;
    2 scanf("%f%f", &kgs, &share);
    c.
    1 char str[40];
    2 scanf("%s", str);
    d.
    1 char str[40];
    2 int number;
    3 scanf("%s %d", str,&number);
    e.
    1 char str[40];
    2 int number;
    3 scanf("%s %d", str, &number);
    10、什么是空白字符?
    答:
    空白字符包括空格、制表符和換行符。C使用空白字符分隔各個語言符號;scanf()使用空白字符分隔相鄰的輸入項。
    11、假設您想在程序中使用圓括號代替花括號。以下方法可以嗎?
    #define ( {
    #define ) }
    答:
    會發生替換。但不幸的是,預處理器不能區別哪些圓括號應該被替換成花括號,哪些圓括號不應該被替換成花括號。因此:
    1 #include <stdio.h>
    2 #define ( {
    3 #define ) }
    4 int main(void)
    5 (
    6     printf("Hello World!\n");
    7     return 0;
    8 )
    會變為:
    1 #include <stdio.h>
    2 int main{void}
    3 {
    4     printf{"Hello World!\n"};
    5     return 0;
    6 }
    所有圓括號都要替換為花括號。
    編程練習
    1、
     1 #include <stdio.h>
     2 int main(void)
     3 {
     4     char name[40]; // 名字
     5     char surname[40]; // 姓氏
     6 
     7     printf("Please enter your name and surname: \n");
     8     scanf("%s%s", name, surname);
     9     printf("%s,%s", surname, name);
    10     return 0;
    11 }
    2、
     1 #include <stdio.h>
     2 #include <string.h>
     3 int main(void)
     4 {
     5     char name[40]; // 名字
     6 
     7     printf("Please enter your name: \n");
     8     scanf("%s", name);
     9     printf("\"%s\"\n", name);
    10     printf("\"%20s\"\n", name);
    11     printf("\"%-20s\"\n", name);
    12     printf("%*s\n", strlen(name)+3, name);
    13     return 0;
    14 }
    3、
     1 #include <stdio.h>
     2 int main(void)
     3 {
     4     float number;
     5 
     6     printf("Please enter a float number: \n");
     7     scanf("%f", &number);
     8     printf("The input is %.1f or %.1e\n", number, number);
     9     printf("The input is %+.3f or %.3E\n", number, number);
    10     return 0;
    11 }
    4、
     1 #include <stdio.h>
     2 int main(void)
     3 {
     4     /* 以厘米為單位輸入身高,并以米為單位進行顯示 */
     5     float weight;
     6     char name[40];
     7 
     8     printf("Please enter your weight(cm): \n");
     9     scanf("%f", &weight);
    10     printf("Please enter your name: \n");
    11     scanf("%s", name);
    12     printf("%s, you are %.2f meter tall\n", name, weight/100);
    13     return 0;
    14 }
    5、
     1 #include <stdio.h>
     2 #include <string.h>
     3 int main(void)
     4 {
     5     char name[40]; // 名字
     6     char surname[40]; // 姓氏
     7 
     8     printf("Please enter your name: \n");
     9     scanf("%s", name);
    10     printf("Please enter your surname: \n");
    11     scanf("%s", surname);
    12     printf("%10s %10s\n", surname, name);
    13     printf("%10d %10d\n", strlen(surname), strlen(name));
    14     printf("%-10s %-10s\n", surname, name);
    15     printf("%-10d %-10d\n", strlen(surname), strlen(name));
    16     return 0;
    17 }
    結果為:(看起來有一點怪啊!!!)
    Please enter your name:
    Ayun
    Please enter your surname:
    li
            li       Ayun
             2           4
    li         Ayun
    2         4
    6、
     1 #include <stdio.h>
     2 #include <float.h>
     3 int main(void)
     4 {
     5     double dblnum = 1.0/3.0;
     6     float fltnum = 1.0/3.0;
     7 
     8     printf("%.4f\n", dblnum);
     9     printf("%.12f\n", dblnum);
    10     printf("%.16f\n", dblnum);
    11     printf("%.4f\n", fltnum);
    12     printf("%.12f\n", fltnum);
    13     printf("%.16f\n", fltnum);
    14     printf("double precision = %d digits\n", DBL_DIG);
    15     printf("float precision = %d digits\n", FLT_DIG);
    16     return 0;
    17 }
    7、(定義浮點類型的時候是使用float,還是double好???)
     1 #include <stdio.h>
     2 #define LITRE 3.785
     3 #define KM 1.609
     4 int main(void)
     5 {
     6     float mile; // 英里數
     7     float gallon; // 加侖數
     8 
     9     printf("Please enter your mile: \n");
    10     scanf("%f", &mile);
    11     printf("Please enter your gallon: \n");
    12     scanf("%f", &gallon);
    13     printf("Miles per gallon of gasoline: %.1f\n", mile/gallon);
    14     printf("Liters per 100 kilometers: %.1f\n", gallon*LITRE*100/(mile*KM));
    15     return 0;
    16 }
    posted on 2015-11-14 02:01 李阿昀 閱讀(818) 評論(0)  編輯  收藏 所屬分類: C Primer Plus 復習題與編程練習
    主站蜘蛛池模板: 免费在线观看黄色毛片| 婷婷亚洲综合五月天小说在线 | 亚洲人成中文字幕在线观看| 亚洲成在人线电影天堂色| 亚洲AV无码乱码在线观看| 毛片A级毛片免费播放| 亚洲AV综合色区无码一二三区| 免费鲁丝片一级观看| 在线成人爽a毛片免费软件| 亚洲一区二区三区免费视频| 国产成人在线观看免费网站| 91免费人成网站在线观看18| a在线免费观看视频| igao激情在线视频免费| 国产精品亚洲一区二区无码| 亚洲中文字幕在线第六区| 亚洲成人免费电影| 麻豆69堂免费视频| 亚洲高清国产拍精品熟女| tom影院亚洲国产一区二区| 亚洲熟妇无码爱v在线观看| 亚洲av日韩综合一区在线观看| 亚洲中文字幕无码久久综合网| 亚洲成年看片在线观看| 日韩精品亚洲专区在线观看| 精品熟女少妇a∨免费久久| 免费看成人AA片无码视频吃奶| 久久久久免费视频| 精品一区二区三区免费观看| 新最免费影视大全在线播放| 亚洲国产精品xo在线观看| 久久综合亚洲鲁鲁五月天| 亚洲国产婷婷香蕉久久久久久| 国产精品成人免费综合| 成人永久免费高清| 国产一精品一aⅴ一免费| 免费日本黄色网址| 亚洲精品动漫人成3d在线 | 亚洲美女视频一区二区三区| 亚洲黄色高清视频| 亚洲五月丁香综合视频|