實驗2 6 字元型資料的輸入輸出

2021-06-03 10:11:53 字數 2652 閱讀 3850

實驗目的:

1.掌握double型浮點數與float型浮點數的區別

2.與整型資料相比,浮點型資料會出現誤差,只要使用浮點型資料就一定會出現誤差嗎?

實驗步驟:

1. 填表並分析

double型

fafb

fcfd

值2.3

-0.0023

2.3e5

0.00023e-2

以%f格式預期的輸出為

以%e格式預期的輸出為

以%e格式預期的輸出為

以%f格式實際的輸出為

以%e格式實際的輸出為

以%e格式實際的輸出為

#include

void main()

double fa, fb, fc, fd;

fa = 2.3;

fb = -0.0023;

fc = 2.3e5;

fd = 0.00023e-2;

printf("%f,%e,%e\n", fa, fa, fa);

printf("%f,%e,%e\n", fb, fb, fb);

printf("%f,%e,%e\n", fc, fc, fc);

printf("%f,%e,%e\n", fd, fd, fd); 

分析:1)與實驗2-4中的第一步相比,輸出有何不同?

2)double型變數與float型變數相比有何不同?

2. 填表並程式設計驗證

double型

fafb

fcfd

值2.3

-0.0023

2.3e5

0.00023e-2

以%13.2f格式輸出為

以%3.0f格式輸出為

以%-13.2f格式輸出為

以%.15f格式輸出為

分析:1)與實驗2-4中的第三步相比,輸出有何不同?

2)double型變數與float型變數相比有何不同?

3. 填表並分析

變數為double型

scanf("…", &fa, &fb, &fc, &fd)

以%f格式輸入

2.3 -0.0023 2.3e5 0.00023e-2

以%e格式輸入

2.3 -0.0023 2.3e5 0.00023e-2

以%e格式輸入

2.3 -0.0023 2.3e5 0.00023e-2

給出每次輸入後每個變數以%f格式的預期輸出,並通過下面程式驗證。

#include

void main()

double fa, fb, fc, fd;

scanf("%f%f%f%f", &fa, &fb, &fc, &fd);

printf("%f,%f, %f,%f\n", fa, fb, fc, fd);

scanf("%e%e%e%e", &fa, &fb, &fc, &fd);

printf("%f,%f, %f,%f\n", fa, fb, fc, fd);

scanf("%e%e%e%e", &fa, &fb, &fc, &fd);

printf("%f,%f, %f,%f\n", fa, fb, fc, fd);

分析:1)與實驗2-4中的第二步相比,輸出有何不同?可以得出乙個什麼結論?

切記:輸出時格式字元f,e,e對double型變數和float型變數通用,但在輸入時double型變數所對應的格式字元前必須加長度修飾符l。

2)除了double型變數所對應的格式字元前須加長度修飾符l之外,其與float型變數在輸入時還有區別嗎?

4.給出程式的輸出並分析。

#include

void main()

float fb = 0.1;

printf("%.15f\n", fb);

printf("%.15f\n", fb+fb+fb+fb+fb+fb+fb+fb+fb+fb);

printf("%.15f\n", 1.0);  

分析:變數fb加十次等於1嗎?為什麼?

5. 浮點型變數的誤差。

5.1填表並程式設計驗證。

float型

fafb

fcfd

值0.125

0.00125

0.125e-3

-0.125

用二進位制的指數形式表示為

以%.18f格式的輸出為

double型

fafb

fcfd

值0.125

0.00125

0.125e-3

-0.125

以%.18f格式的輸出為

分析:1)當變數為float型時,變數fa為何沒有誤差?

2)當變數為float型時,變數fb的輸出是:0.001249999972060323,這與float型浮點數只能精確到小數點後的6至7位矛盾嗎?

3)浮點型資料什麼情況沒有誤差?

5.2填表並程式設計驗證

float型fa值

125125125.125e2

用二進位制的指數形式表示為

以%.18f格式的輸出為

double型fa值

125125125.125e2

用二進位制的指數形式表示為

以%.18f格式的輸出為

分析:浮點型資料在什麼情況下沒有誤差?

實驗2 4 浮點型資料的輸入輸出

實驗目的 比照整型資料輸入輸出的 方式,研究浮點型資料的輸入輸出,在加深理解的基礎上能熟練使用浮點型資料。實驗步驟 分數22 7小數點後有幾位?如果用它表示圓周率可以精確到哪一位?1.填表並分析 float型 fafb fcfd 值2.3 0.0023 2.3e5 0.00023e 2 以 f格式預...

double型資料輸入輸出

double a scanf f a 應該使用scanf lf a 執行上面語句時,發現double型別的輸入不能使用 f進行輸入,得用 lf才能正常得到a的值。而在輸出double型別時卻可以用 f,這是因為printf只認識雙精度,遇到 f自動將float型的引數轉換成double型。但是因為s...

字元資料的輸入輸出

輸入 scanf函式 getchar 函式 gets 函式。輸出 printf函式 putchar 函式 puts 函式。相互的區別和作用 這裡只以輸入函式舉例 一 scanf函式 scanf可以用來輸入乙個字元 scanf c a scanf可以用來輸入多個字元 scanf s a 二 getch...