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

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

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

    BeautifulMan

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      16 隨筆 :: 0 文章 :: 0 評論 :: 0 Trackbacks
    復(fù)習(xí)題
    1、再次運(yùn)行程序清單4.1,但是在要求您輸入名字時(shí),請輸入您的名字和姓氏。發(fā)生了什么?為什么?
    答:
     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是一個(gè)有40個(gè)字符的數(shù)組
     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 }
    如果輸入名字和姓氏,會(huì)輸出如下結(jié)果:
    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.
    原因:(參考課后答案)程序不能正常工作。第一個(gè)scanf()語句只是讀入您的名而沒有讀入您的姓,您的姓依然存儲(chǔ)在輸入“緩沖區(qū)”(緩沖區(qū)只是一塊用來存放輸入的臨時(shí)存儲(chǔ)區(qū)域)中。當(dāng)下一個(gè)scanf()語句想要讀入您的體重時(shí),它從上次讀入結(jié)束的地方開始,這樣就試圖把您的姓作為體重來讀取。這會(huì)使scanf()失敗。一方面,如果您對姓名請求做出像Li 123這樣的響應(yīng),程序會(huì)使用123作為您的體重,雖然您是在程序請求體重之前輸入123的。
    2、假定下列每個(gè)示例都是某個(gè)完整程序的一部分。它們的打印結(jié)果分別是什么?
    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. (注意,與課后答案不一樣,是因?yàn)榧?xì)看題目的話,此句末尾有一個(gè)空格,strlen()函數(shù)輸出字符串中字符(包括空格和標(biāo)點(diǎn)符號)的準(zhǔn)確數(shù)目)
       has 43 characters.
    d.Is 1.20e+003 the same as 1201.00?
    3、在問題2c中,應(yīng)進(jìn)行哪些修改以使字符串Q引在雙引號中輸出?
    答:
    使用\"。示例如下:
    printf("\"%s\"\nhas %d characters.\n", Q, strlen(Q));
    4、找出下列程序中的錯(cuò)誤。
     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 }
    答:
    下面是一個(gè)正確的版本:
     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、假設(shè)一個(gè)程序這樣開始:
    1 #define BOOK "War and Peace"
    2 int main(void)
    3 {
    4     float cost = 12.99;
    5     float precent = 80.0;
    請構(gòu)造一個(gè)printf()語句,使用BOOK、cost和percent打印下列內(nèi)容:
    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、您會(huì)使用什么轉(zhuǎn)換說明來打印下列各項(xiàng)內(nèi)容?
    a.一個(gè)字段寬度等于數(shù)字位數(shù)的十進(jìn)制整數(shù)。
    b.一個(gè)形如8A、字段寬度為4的十六進(jìn)制整數(shù)。
    c.一個(gè)形如232.346、字段寬度為10的浮點(diǎn)數(shù)。
    d.一個(gè)形如2.33e+002、字段寬度為12的浮點(diǎn)數(shù)。
    e.一個(gè)字段寬度為30、左對齊的字符串。
    答:
    a.%d
    b.%4X
    c.%10.3f
    d.%12.2e
    e.%-30s
    對于浮點(diǎn)數(shù)來說,字段寬度包含了小數(shù)點(diǎn)右邊的數(shù)字的數(shù)目
    7、您會(huì)使用哪個(gè)轉(zhuǎn)換說明來打印下列各項(xiàng)內(nèi)容?
    a.一個(gè)字段寬度為15的unsigned long整數(shù)
    b.一個(gè)形如0x8a、字段寬度為4的十六進(jìn)制整數(shù)
    c.一個(gè)形如2.33E+02、字段寬度為12、左對齊的浮點(diǎn)數(shù)
    d.一個(gè)形如+232.346、字段寬度為10的浮點(diǎn)數(shù)
    e.一個(gè)字符串的前8個(gè)字符,字段寬度為8字符
    答:
    a.%15lu
    b.%#4x(字段寬度應(yīng)放在#和x之間)
    c.%-12.2E("-"修飾符使浮點(diǎn)數(shù)左對齊輸出)
    d.%+10.3f
    e.%-8.8s("-"修飾符使文本左對齊輸出)
    8、您會(huì)使用什么轉(zhuǎn)換說明來打印下列各項(xiàng)內(nèi)容?
    a.一個(gè)字段寬度為6、最少有4位數(shù)字的十進(jìn)制整數(shù)
    b.一個(gè)字段寬度在參數(shù)列表中給定的八進(jìn)制整數(shù)
    c.一個(gè)字段寬度為2的字符
    d.一個(gè)形如+3.13、字段寬度等于數(shù)字中字符個(gè)數(shù)的浮點(diǎn)數(shù)
    e.一個(gè)字符串的前5個(gè)字符,字段寬度為7、左對齊
    答:
    a.%6.4d
    b.%*o(此處為小寫字母o,而不是數(shù)字0)
    c.%2c
    d.%+.2f
    e.%-7.5s
    9、為下列每個(gè)輸入行提供一個(gè)對其進(jìn)行讀取的scanf()語句,并聲明語句中用到的所有變量或數(shù)組。
    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使用空白字符分隔各個(gè)語言符號;scanf()使用空白字符分隔相鄰的輸入項(xiàng)。
    11、假設(shè)您想在程序中使用圓括號代替花括號。以下方法可以嗎?
    #define ( {
    #define ) }
    答:
    會(huì)發(fā)生替換。但不幸的是,預(yù)處理器不能區(qū)別哪些圓括號應(yīng)該被替換成花括號,哪些圓括號不應(yīng)該被替換成花括號。因此:
    1 #include <stdio.h>
    2 #define ( {
    3 #define ) }
    4 int main(void)
    5 (
    6     printf("Hello World!\n");
    7     return 0;
    8 )
    會(huì)變?yōu)椋?br />
    1 #include <stdio.h>
    2 int main{void}
    3 {
    4     printf{"Hello World!\n"};
    5     return 0;
    6 }
    所有圓括號都要替換為花括號。
    編程練習(xí)
    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     /* 以厘米為單位輸入身高,并以米為單位進(jìn)行顯示 */
     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 }
    結(jié)果為:(看起來有一點(diǎn)怪?。。。。?br />
    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、(定義浮點(diǎn)類型的時(shí)候是使用float,還是double好???)
     1 #include <stdio.h>
     2 #define LITRE 3.785
     3 #define KM 1.609
     4 int main(void)
     5 {
     6     float mile; // 英里數(shù)
     7     float gallon; // 加侖數(shù)
     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 復(fù)習(xí)題與編程練習(xí)
    主站蜘蛛池模板: 亚洲AV无码久久寂寞少妇| 亚洲中文字幕在线无码一区二区| 三年在线观看免费观看完整版中文| 久久精品国产亚洲综合色 | 国内精品免费麻豆网站91麻豆| 亚洲日韩精品国产3区| 国产成人精品日本亚洲专区| 久久国产色AV免费看| 久久亚洲色WWW成人欧美| 黑人精品videos亚洲人| 成人超污免费网站在线看| 一级毛片a女人刺激视频免费| 亚洲图片激情小说| 亚洲人成网站18禁止一区| 四虎在线最新永久免费| 一级日本高清视频免费观看| 亚洲六月丁香六月婷婷色伊人 | 国产亚洲?V无码?V男人的天堂 | 精品成人免费自拍视频| 亚洲综合在线一区二区三区| 亚洲中久无码永久在线观看同| 91免费资源网站入口| 免费人成激情视频在线观看冫| 亚洲AV无码男人的天堂 | 国产免费区在线观看十分钟| 亚洲中文字幕人成乱码 | 一级毛片a免费播放王色| 亚洲中文字幕在线无码一区二区| 国产成人A亚洲精V品无码| 希望影院高清免费观看视频| 两个人的视频www免费| 亚洲AV无码一区二区三区电影 | 亚洲伊人色欲综合网| 日本免费人成视频播放| 国产在线观看麻豆91精品免费| 国产免费久久精品丫丫| 99亚洲乱人伦aⅴ精品| 亚洲xxxx视频| 亚洲美女一区二区三区| 亚洲成AV人片一区二区| 亚洲高清偷拍一区二区三区|