程式設計 第三章 習題
問答題
1.除了列舉型態之外,請說明 C 語言中的其他五種基本資料型態?
Ans:整數(int),單精準度浮點數(float),雙精準度浮點數(double),字元(char),空型態 (void)
2.哪些修飾字會對 int 資料型態產生改變?
Ans:short , long , unsinged , signed
3.假設在 32 位元的環境中,請計算 int、long、short 的數位範圍?
Ans:int:-2147483648~+2147483647 long:4bytes short:-34768~+32767。
4.請將下列數位以科學記號來表示。
[1]1234567.89 [2]0.1234567 [3]0.0123456 [4]-567.89
Ans:(1) 1.23456789e+06 (2) 1.234567e-01 (3) 1.234566e-02 (4) -5.6789e+02
5.unsignend 修飾字有何用途?試舉例說明之。
Ans:unsigned 是用來強迫資料型態為正值,由於 unsigned 並不會影響資料所佔用的位元,
因此,可表達的數字範圍可以增加1倍。
6.下列敘述中,是否出現變數與常數?
Int unmber =10;
[1]只有常數 [2]只有變數 [3]有常數也有變數 [4]沒有常數也沒有變數 Ans:(2)只有變數
7.如果您想要在程式中宣告變數用來表達下列數值,您會使用哪些變數名稱呢?
[1]兩端的距離 [2]班級人數 [3]全班平均分數 [4]今日氣溫 [5]幸運字母 [6]幸運數字 Ans:(1) D (2) Class_Num (3) Score_Avg (3) Tpt_TD
(4) Lucky_Letter (6)Lucky_Num
8.呈上題,您會希望將上述變數宣告為哪些基本資料型態呢?
Ans:(1) int (2) int (3) float (4) float (5) char (6) int 9.變數被宣告為 char 資料型態時,存入英文字母會存入哪一種編碼數值?
Ans:ASCLL
10.每一個字元需要佔用一個位元組,那麼在 C 語言中要保存字串常數〝How are you?〞需要 使用幾個位組?
Ans:13 個 byte
11.請問在 C 語言中,下列兩個敘述是否合法?若合法,其意義又為何?
Int unml,num2;
Numl = num2 =5;
Ans:第一行合法,意義是宣告兩個形態為 int 的變數。
第二行不合法,無法連續指定。
12.下列哪些變數名稱是不法的,請說明原因。
[1]AloHa97 [2]_GAME [3]4D_Word [4]3.le-3
Ans:(3)、(4) 不可使用數字開頭 (5) 不可包含+號
13.下列數值,哪一些應該使用浮點數資料型態?
[1]50 [2]50.1 [3]18.01 [4]3.le-3 Ans:(2)、(3)、(4)
14.在 C 語言中,宣告 long x;與下列何者意義相同?
[1]int long [2]double long [3]long int [4]long double Ans:(3) long int
15.使用 Dev-C+ +(GCC)編譯 C 程式時,下列哪一項不是合法的變數宣告?
[1]float x; [2]float doublex; [3]long float x; [4]long double a; [5]unsigned long x;
Ans:(2)、(3)
16.C 語言採用 2 捕數來存放負整數值,請問當宣告 int x;(假設 sizeof(x)為 4),並執行下 列兩種敘述後,x 的記憶體內容為何?請使用 16 進制來表達記憶體內容。
[1]x =1; [2]x =-1;
Ans:(1) 0x00000001 (2) 0xfffffffe
17.經由下列運算,length 的整數值應該為多少?
int length;
char a = ‘e’;
char b = ‘o’;
length = b – a;
(1) 11 (2) 12 (3) 13 (4) 14 (5) 15 Ans:無解,答案應為 10
18.經由下列運算,請問 result1、result2 的值為多少?
float a=100,b=30,c=20,result1,result2;
result1=a+b+c;
result2=a/b/c;
Ans:
result1=150.000000 result2=0.166667
19.經由下列運算,請問 result 的值為多少?
int a=25,b=4;
int result=a/b;
Ans:result = 6
20.下列何者為真?
a = sizeof(int);
b = sizeof(unsigned short int);
c = sizeof(double);
d = sizeof(char);
(1) a > b > c > d (2) d > c > b > a (3) c > a > b > d (4) c > a = b > d (5) c > a > b = d
Ans:(5) c > a > b = d
實作題
1.假設 x,y,z 的初始值為 1,請預測下列運算式執行之後的變數 x,y,z 的值,並撰寫 程式證明您的預測是對的。
z = ++x-y++;
z = z + x++ + ++y;
2.撰寫程式,求出下列 result 的值。
int x;
float y;
float result;
x = 15;
y = 7.125;
result = (float) x/y;
3.撰寫程式,求出下列 result 的值。
int x;
float y;
float result;
x = 15;
y = 7.125;
result = (float) x/y;
4.請先利用筆或計算機計算右列公式,求出 x 之值,然後再撰寫程式,求出右列數學 公式 x 之值(請宣告適當的資料型態)。若發現兩者有所不同,則請修正運算式或資料 型態。
a=2 b=6 c=4 d=5 e=6
x = {(b^2 – 4*a*c)/[d+[1/(2*e)]]}
5.下列是關於前置後置運算子的練習,請修正程式(改變其中一個運算子),使其符合 執行結果。
6.下列是關於字元編碼資料的程式,請修改其數值,使之符合執行結果。
7.下列是關於 overflow 的示範程式,亦即當資料型態不足以存放資料時會產生非預期 的效果。請修改資料型態的宣告,使之符合執行結果。
8.下列是 underflow 的示範程式,亦即當精確度不足,將導致喪失完整的資料,請修 改資料型態的宣告,使之符合執行結果。
9.下列是資料型態轉換的範例,請修改程式碼,使之符合執行結果。
10.下列是資料型態轉換的範例,請修改程式碼,使之符合執行結果。