(不好意思小宣傳一下我的繪圖 希望大家喜歡)

 

 

\\

這是我的海苔貓粉專

www.facebook.com/norinekocat/

 

海苔貓IG

海苔貓Instagram

 

謝謝大家:))

 

裡面有許多繪圖作品~ 

希望大家支持我會繼續努力

 

請多多指教哦

 


 

 

 

【C語言教學手冊(四版)-練習題解答】第三章 基本資料型態

C語言教學手冊(四版)-博客來網址

----第2題, 試修改 prog3_1,使得第 9 行與第 10 行可分別印出 num1 與 num2 的平方值。第 9 行 與第 10 行的輸出結果應如下所示:

#include <stdio.h>

#include <stdlib.h>

int main()

{

int num1=12400;

double num2=5.234;

printf("num1 的平方為 %d\n",num1*num1);

printf("num2 的平方為 %f\n",num2*num2);

}

 

----第3題,下列何者是錯誤的函數

  1. 134.45L
  2. 10km24
  3. a2048
  4. 1.3453F
  1. ,L 代表 long 不能使用浮點數,只能使用於整數。
  2. ,常數不能有字母。
  3. ,常數不能有字母。
  4. ,F 代表浮點常數 1.3453 使用 4 bytes 的空間 (否則編譯器會預設為 8 bytes)

 

----第4題, 試指出下列常數各是屬於哪一種型態: (a) 124.23 (b) 3.23E12F (c) 2.436F (d) 311980L (e) 1024

  1. 124.23 double 型態, 8 bytes
  2. 3.23E12F 是指數科學符號的 float 型態, 4 bytes
  3. 若寫成 3.23E12 則是指數科學符號的double 型態, 8 bytes)
  4. 2.436F float 型態, 4 bytes
  5. 311980L 是長整數型態, 4 bytes(在目前的機器長整數與一般整數都是佔 4 bytes, 311980是整數型態, 4 bytes)
  6. 1024 是整數型態, 4 bytes

 

----第5題, 試將下列各數以 C 語言的指數寫法來表示: (a) –96.43 (b) 1974.56 (c) 0.01234 (d) 0.000432

(a) – 9.643000e+001

(b) 1.974560e+003

(c) 1.234000e-002

(d) 4.320000e-004

 

----第6題, 試將下列各指數改寫成 C 語言的浮點數表示方式: (a) –9.5e-4 (b) 3.78e+5 (c) 5.12e-2 (d) 6.1732e+12

(a) -0.000950

(b) 378000.000000

(c) 0.051200

(d) 6173200000000.000000

 

----第7題 試說明下列字元的意義。 (a) \b (b) \n (c) \t (d) \a

\b     (a) 後退一格

\n     (b) 跳一行 

\t      (c) 跳格 (tab)

\a     (d) 警告聲 (嗶一聲)

 

----第8題, int、char、float 與 double 資料型態的變數,各佔有多少個位元組?它們能夠表示的數 值範圍是多少?

int 4 bytes, 數值範圍 -2147483648 2147483647

char 1 byte, 數值範圍 0 255

float 4 bytes, 數值範圍 1.2e-38 3.4e38

double 8 bytes, 數值範圍 2.2e-308 1.8e308

 

----第9題, unsigned 型態適用在何種資料型態?它有什麼特點?

unsigned 是沒有負值的正整數,例如:short int 2 bytes,範圍 -32768 32767,但加入 unsigned後變成 unsigned short int,範圍變成 0 65535,能儲存的數值範圍是原來的兩倍。

 

----第12題, 試寫一程式,利用設定字元變數 ch 為 ASCII 碼的方式,讓電腦發出一個警告音(警告 音的 ascii 碼為 7)。

#include <stdio.h>

int main(){

char ch=7;

printf("%c", ch);

}

 

----第13題, 下面的兩行敘述是程式碼的片斷:

 char ch=312;

 printf("%c\n",ch);

(a) 試問第一行代表什麼意義?

(b) 試說明第 2 行所得的結果,並說明為什麼會得到這個結果?

(a) 宣告變數 ch 為字元的資料型態,其值為 312

(b) 由於 char 1 byte, 數值範圍是 0 255,312 發生溢位只取後面之值,故為 312 -256 = 56。而 ASCII code 56 是數字 8,所以會印出 8

 

----第14題, 請參閱下面的程式碼,然後回答接續的問題: ​​​​​​​

  1. 因為 short ( short int) 只佔 2 bytes,unsigned 的範圍是 0 65535, 80000 超出範圍發生溢位只取後面之值,會得到 80000 65536 = 14464
  2. 將第七行的 short 改為 int

----第15題, 請參閱下面的程式碼,然後回答接續的問題: ​​​​​​​

01 /* hw3_15.c */

02 #include

03 #include

04 int main(void)

05 {

06 float num1=30000.1F;

07 float num2=0.0004F;

08 printf("%f\n",num1+num2);

09

10 system("pause");

11 return 0;

12 }

(a) 試執行此程式碼,您會得到什麼結果?

(b) 於數學上,30000.1+0.0004=30000.1004,試說明執行此程式碼後,為什麼 得不到這個結果?

(c) 如果想讓本題的執行結果恰好為 30000.1004,應如何改進?試撰寫一個完整的程 式碼來改進之。 ​​​​​​​

  1. 30000.100009
  2. 發生誤差現象。因為 float 只有 4 bytes,精確度只有 7-8 位數,而整數部分已有 5 位數,故小數只有 2-3 位數是精確的。
  3. 改為 double num1 = 30000.1;

double num2 = 0.0004;

  • f\n, num1 + num2); 會印出 30000.100400

若寫成 printf(.4f\n, num1+num2); 規定小數後只有 4 ,則印出 30000.1004

 

----第16題, 試撰寫一程式,利用 sizeof 關鍵字查詢下列各種資料型態所佔的位元組:

 

#include <stdio.h>

int main(){

printf(unsigned int 佔用 %d bytes\n, sizeof(unsigned int));

printf(double 佔用 %d bytes\n, sizeof(double));

printf(unsigned short int 佔用 %d bytes\n, sizeof(unsigned short int));

}

----第17題, 試撰寫一程式,利用 sizeof 關鍵字查詢下列各常數所佔的位元組: (a) 578 (b) 784000000 (c) 6.78f (d) 718.26 (e) 6.42e127 ​​​​​​​

(a) 4 (b) 4 (c) 4 (d) 8 (e) 8

 

----第18題, 假設浮點數變數 num1 與 num2 的值分別為 123.39f 與 3.8e5f,試撰寫一程式,將這兩個變數值轉換成整數。

#include <stdio.h>

int main(){

float num1=123.39f;

float num2=3.8e5f;

printf("num1 的整數值 %d\n", (int)num1);

printf("num2 的整數值為 %d\n", (int)num2);

}

 

 

 


 

ps

新的貼圖終於出來了

可愛的海苔貓-第三代

 


海苔貓繪圖作品\\

海苔貓 norineko

 

海苔貓 norineko

 

海苔貓 norineko

 

海苔貓 norineko

 

 

海苔貓 norineko海苔貓 norineko

    

海苔貓 norineko海苔貓 norineko

 

海苔貓 norineko

 

希望大家支持~~

 

 

海苔貓粉專

www.facebook.com/norinekocat/

 

海苔貓IG

海苔貓Instagram

 

海苔貓 norineko

 

arrow
arrow
    創作者介紹
    創作者 海苔貓Nori 的頭像
    海苔貓Nori

    海苔貓。繪圖與生活小日記 https://norineko.carrd.co/

    海苔貓Nori 發表在 痞客邦 留言(0) 人氣()