W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
生成表格式數(shù)據(jù)是能夠從循環(huán)機制受益的事情之一。舉個例子,在計算機成為常用設備之前,人們必須手工計算對數(shù)、正余弦以及其他常用的數(shù)學函數(shù)。為使這類工作更簡單,產(chǎn)生了一些書,包含了一些長表格,你可以查出不同函數(shù)的值。創(chuàng)建這些表的工作是緩慢而繁瑣的,而且結果容易大量出錯。
當計算機登上了歷史舞臺,人們最初的反應是:“太棒了!我們可以用計算機準確無誤的生成這些表。”這是個(大部分)正確但短視的看法。沒多久,計算機和計算器普及,數(shù)學表就過時了。
好吧,應該說基本上過時了。事實上對于某些運算,計算機使用數(shù)學表得到一個近似的答案,然后執(zhí)行計算去改進這個近似解。有些情況下,計算機背后的數(shù)學表是有誤差的,最著名的就是最初的因特爾奔騰計算浮點除法使用的表。
對數(shù)表已經(jīng)不像以前那么有用了,但它仍然是一個不錯的迭代示例。下面這段程序在左邊一欄輸出一列值,在右邊一欄輸出其對應的一列對數(shù)值:
double x = 1.0;
while (x < 10.0) {
cout << x << "\t" << log(x) << "\n";
x = x + 1.0;
}
字符序列\(zhòng)t表示制表符。字符序列\(zhòng)n表示換行符。這些字符序列可以出現(xiàn)在字符串的任意位置,而在此例中,字符串中只有這類字符序列。
制表符使光標右移至制表結束位置,通常是每8字節(jié)制表一次。稍后我們將看到制表符的用途—使多列文本排列整齊。
換行符的作用與endl完全一樣,即移動光標到下一行。通常情況,如果換行符單獨出現(xiàn),我就用endl;如果作為字符串的一部分出現(xiàn),我就用\n。
上面一段程序的輸出:
1 0
2 0.693147
3 1.09861
4 1.38629
5 1.60944
6 1.79176
7 1.94591
8 2.07944
9 2.19722
要是看著上面這些數(shù)很奇怪,別忘了log函數(shù)是以e為底的。計算機科學中2的冪很重要,因此我們常常要計算以2為底的對數(shù),我們可以通過以下公式實現(xiàn):
輸出語句改為:
cout << x << "\t" << log(x) / log(2.0) << endl;
輸出:
1 0
2 1
3 1.58496
4 2
5 2.32193
6 2.58496
7 2.80735
8 3
9 3.16993
可以看到,第1、2、4、8行為2的整數(shù)次冪。如果想求2的其他整數(shù)次冪,我們可以修改程序如下:
double x = 1.0;
while (x < 100.0) {
cout << x << "\t" << log(x) / log(2.0) << endl;
x = x * 2.0;
}
之前的循環(huán)中,我們用一個數(shù)去加x,輸出一個算術序列;現(xiàn)在我們改用一個數(shù)去乘x,輸出一個幾何級序列。輸出結果是:
1 0
2 1
4 2
8 3
16 4
32 5
64 6
由于我們在列之間使用的是制表符,所以第二列的位置也就不取決于第一列的數(shù)字位數(shù)了。
對數(shù)表也許不再有用,但對于和2的整數(shù)次冪打交道的計算機科學家而言,則是非常有用。下面出一道習題:修改上面這段程序,使之能一直輸出到65536(2^16)。把程序打出來并記住它。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: