<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
    第3章  數據和C
    復習題
    1、對下面的各種數據使用合適的數據類型:
         a.East Simpleton的人口
         b.DVD影碟的價格
         c.本章出現次數最多的字母
         d.這個字母出現的次數
    答:a.int類型,可以是short、unsigned或unsigned short;人口數是一個整數。
          b.float類型;價格不太可能正好是一個整數(您也可以使用double,但實際上并不需要那么高的精度)。
          c.char類型。
          d.int類型,可以是unsigned。
    2、需要用long類型變量代替int類型變量的原因是什么?
    答:一個原因是在您的系統中long可以容納比int類型更大的數;一個原因是如果您確實需要處理更大的值,那么使用一種在所有系統上都能保證至少是32位的類型會使程序的可移植性更好。
    3、獲得一個32位的有符號整數,可以使用哪些可移植的數據類型?每種選擇的原因是什么?
    答:要獲得正好是32位的數,您可以使用int32_t(如果在您的系統上有這一定義的話)。要獲得可存儲至少32位的最小類型,可以使用int_least32_t。如果要在32位的類型中獲得提供最快計算速度的類型,可以選擇int_fast32_t。(參考
    3.4.5  可移植的類型:inttypes.h,理解的不是很清楚!!!)
    4、指出下列常量的類型和意義(如果有的話):
         a.'\b'
         b.1066
         c.99.44
         d.0XAA
         e.2.0e30
    答:a.char常量(但以int類型存儲)
          b.int常量
          c.double常量
          d.unsigned int常量,十六進制格式
          e.double常量
    5、Dottie Cawm寫的下面這個程序中有很多錯誤,找出這些錯誤。
    1 include <stdio.h>
    2 main
    3 (
    4     float g; h;
    5     float tax, rate;
    6 
    7     g = e21;
    8     tax = rate * g;
    9 )
    答:第1行:應該是#include <stdio.h>
          第2行:應該是int main(void)
          第3行:使用{,而不是(
          第4行:在g和h之間應該是逗號而不是分號
          第5行:無錯誤
          第6行:(空行)無錯誤
          第7行:在e之前應該至少有一個數字,.1e21或1.e21都是正確的,盡管這個數有點大。
          第8行:無錯誤,至少在語法上沒有
          第9行:使用},而不是)
    缺少的行:首先,rate沒有被賦值。其次,變量h從來沒有被使用。而且程序永遠不會把它的計算結果通知給您。這些錯誤都不會阻止程序的運行(盡管可能會向您出示一個警告以說明變量沒有被使用),但是它們確實減弱了程序本來就不多的功能。而且在結尾處應該有一個return語句。
       下面是正確版本之一:  
     
     1 #include <stdio.h>
     2
     int main(void)
     3 {
     4     float g, h;
     5     float tax, rate;
     6     rate = 0.08;
     7     g = 1.0e5;
     8 
     9     tax = rate * g;
    10     h = g + tax;
    11     printf("You owe $%f plus $%f in taxes for a total of $%f.\n", g, tax, h);
    12     return 0;
    13 }
    6、指出下表中各常量的數據類型(在聲明語句中使用的數據類型)及其在printf()中的格式說明符。
              常量         類型        說明符     

    12

    0x3
      'C'  
      2.34E07  
     '\040'   
     7.0   
     6L   
     6.0f   













    答:
              常量           類型           說明符     

    12int%d

    0x3unsigned int%#x
      'C'char %c 
      2.34E07double  %f
     '\040' char  %c
     7.0 double  %f
     6L long  %ld
     6.0f float %e 












    7、
    指出下表中各常量的數據類型(在聲明語句中使用的數據類型)及其在printf()中的格式說明符,假設int類型為16位長。
              常量         類型        說明符     

    012

    2.9e05L
      's'  
      100000  
     '\n'   
     20.0f   
     0x44   
















    答:
              常量           類型           說明符     

    012int%#0

    2.9e05Llong double%Le
      's'char %c 
      100000long %ld 
     '\n' char%c 
     20.0f float %f 
     0x44 unsigned int %#x 
















    8、假設一個程序開始處有如下的聲明:
    1 int imate = 2;
    2 long shot = 53456;
    3 char grade = 'A';
    4 float log = 2.71828;
    在下面printf()語句中添上合適的類型說明符:
    1 printf("The odds against the %___ were %___ to 1.\n", imate, shot);
    2 printf("A score of %___ is not an %___ grade.\n", log, grade);
    答:
    1 printf("The odds against the %d were %ld to 1.\n", imate, shot);
    2 printf("A score of %f is not an %c grade.\n", log, grade);
    9、假設ch為char類型變量。使用轉義序列、十進制值、八進制字符常量以及十六進制字符常量等方法將其賦值為回車符(假設使用ASCII編碼)。
    答:
    1 char ch = '\r';
    2 char ch = 13;
    3 char ch = '\015';
    4 char ch = '\xd';
    10、改正下面程序(在C中/表示除法)。
    1 void main(int) / this progarm is perfect /
    2 {
    3    cows, legs integer;
    4    printf("How many cow legs did you count?\n);
    5    scanf("%c", legs);
    6    cows = legs / 4;
    7    printf("That implies there are %f cows.\n", cows)
    8 }
    答:
     1 #include <stdio.h>
     2 int main(void/* this progarm is perfect */
     3 {
     4    int cows, legs;
     5    printf("How many cow legs did you count?\n");
     6    scanf("%d", &legs);
     7    cows = legs / 4;
     8    printf("That implies there are %d cows.\n", cows);
     9    return 0;
    10 }
    11、指出下列轉義字符的含義:
    1 a.\n
    2 b.\\
    3 c.\"
    4 d.\t
    答:a.換行字符
          b.反斜線字符
          c.雙引號字符
          d.制表字符
    編程練習(如有錯誤,希望指正!!!)
    1、
     1 /* 整數上溢*/
     2 #include <stdio.h>
     3 int main(void)
     4 {
     5     int i = 2147483647;
     6     unsigned int j = 4294967295;
     7 
     8     /*
     9         無符號整數j像一個汽車里程指示表(形容的太好了,可參考《計算機科學導論》第3章 數據存儲,有圖),
    10        當達到最大值時,它將溢出到起始點。整數i也是同樣。它們的主要區別是unsigned int變量j的起始點是0(正像里程
    11        指示表那樣),而int變量i的起始點則是-2147483648。——參考《C Primer Plus》
    12     */
    13     printf("%d %d %d\n", i, i+1, i+2);
    14     printf("%u %u %u\n", j, j+1, j+2);
    15     return 0;
    16 }
    運行結果:
    2147483647 -2147483648 -2147483647
    4294967295 0 1
    浮點數的上溢和下溢???(理解的不是很清楚,回頭再來寫)
    2、
    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     int asc;
    5     printf("Please enter an ASCII value: ");
    6     scanf("%d", &asc);
    7     printf("The code is %c.\n", asc);
    8     return 0;
    9 }
    3、
    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     printf("\aStartled by the sudden sound, Sally shouted, ");
    5     printf("\"By the Great Pumpkin,what was that!\"\n");
    6     return 0;
    7 }
    4、
    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     float number;
    5     printf("Please enter a float value: ");
    6     scanf("%f", &number);
    7     printf("The input is %f or %e", number, number);
    8     return 0;
    9 }
    5、
    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     int age;
    5     printf("Please enter your age: ");
    6     scanf("%d", &age);
    7     printf("Your age has %e s", age*3.156e7);
    8     return 0;
    9 }
    6、
    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     int num; // 夸脫數應該為整數吧!!
    5     printf("Please enter water: ");
    6     scanf("%d", &num);
    7     printf("The water has %e ", num*950/3.0e-23);
    8     return 0;
    9 }
    7、
    1 #include <stdio.h>
    2 int main(void)
    3 {
    4     float height;
    5     printf("Please enter your height: ");
    6     scanf("%f", &height);
    7     printf("Your height is %.2f cm.\n", height*2.54);
    8     return 0;
    9 }
    posted on 2015-10-31 22:22 李阿昀 閱讀(1421) 評論(0)  編輯  收藏 所屬分類: C Primer Plus 復習題與編程練習
    主站蜘蛛池模板: 国产成人精品日本亚洲专区| 永久黄网站色视频免费观看| 久久精品无码专区免费东京热| 一级毛片aaaaaa免费看| 四虎www免费人成| 亚洲AV无码国产精品色午友在线 | 亚洲精品福利视频| 老牛精品亚洲成av人片| 久久久久久国产精品免费无码| 亚洲国产精品乱码一区二区 | 亚洲AV人无码综合在线观看| 精品国产亚洲AV麻豆| 一本久到久久亚洲综合| 国产精品亚洲精品| 99re在线精品视频免费| 中文字幕第一页亚洲| 国产精品亚洲一区二区三区在线观看| 91成人在线免费观看| 亚洲一级毛片免费在线观看| 一区二区三区观看免费中文视频在线播放 | 亚洲日本在线电影| 18女人毛片水真多免费| 人人狠狠综合久久亚洲88| 99久久99热精品免费观看国产| 亚洲性色高清完整版在线观看| 久久精品一区二区免费看| 亚洲中文字幕第一页在线| h视频在线观看免费| 免费a级毛片无码av| 亚洲av无一区二区三区| 在线看片无码永久免费aⅴ| 亚洲AV色欲色欲WWW| 亚洲一级片免费看| 巨波霸乳在线永久免费视频| 亚洲国产一区二区三区在线观看| 精品国产sm捆绑最大网免费站| 亚洲日韩乱码久久久久久| 亚洲av再在线观看| 国产精品hd免费观看| 亚洲精品免费在线视频| 日本免费网址大全在线观看|