版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p> 第四章 最簡單的C程序設計――順序程序設計</p><p> §4.1 C語句概述 </p><p> 一個C程序應由兩部分組成,即數(shù)據(jù)描述和數(shù)據(jù)操作。</p><p> 數(shù)據(jù)描述:用來定義數(shù)據(jù)結(jié)構(gòu)和預置數(shù)據(jù)初值,由聲明部分實現(xiàn)。如:int a=3;</p><p> 數(shù)據(jù)操作:對已提供的數(shù)據(jù)進行加工,
2、由語句來實現(xiàn)。所以,語句是C程序的主體。</p><p> C語句可以分為5大類。</p><p> 4.1.1 程序控制語句</p><p> if() ~ else ~for() ~</p><p> while() ~do ~ while()</p><p> continue
3、break</p><p> switchgotoreturn</p><p> 其中:()表示一個條件。</p><p> ~ 表示內(nèi)嵌的語句。如:if(x>y) z=x;else z=y;</p><p> 4.1.2 函數(shù)調(diào)用語句</p><p> 由函數(shù)加上一個分號構(gòu)
4、成。如:printf(“hellow”);</p><p> 4.1.3 表達式語句</p><p> 表達式加上一個分號即可組成一個表達式語句。如:i=1;x=sin(y);等。</p><p><b> 4.1.4 空語句</b></p><p> 一個分號就是一個空語句,表示什么都不做。</p>
5、<p> 4.1.5 復合語句</p><p> 用{}括起的一個語句序列。</p><p> 如: {z=x+y;</p><p><b> t=z/100;</b></p><p> printf(“%f”,t);}</p><p> 4.1.6 賦值語句<
6、/p><p> 構(gòu)成:賦值語句由賦值表達式加上一個分號構(gòu)成。如a=b;。</p><p><b> 說明</b></p><p> C語言中的賦值號是一個運算符,這是與其它高級語言相區(qū)別的。</p><p> 賦值表達式作為表達式可以出現(xiàn)在其它任何表達式中,而作為語句則不能。</p><p>
7、 如:if((a=b)>0)t=a;,表示先將b賦給a,且如果a>0則將a賦給t。</p><p> 但:if((a=b;)>0)t=a;,則是錯誤的。</p><p> §4.2 數(shù)據(jù)輸入輸出的概念及在C中的應用</p><p> 4.2.1 數(shù)據(jù)輸入輸出的概念</p><p> 輸入:相對于計算機主機
8、而言,從外設讀入數(shù)據(jù)。如:鍵盤、磁盤、光盤等。</p><p> 輸出:相對于計算機主機而言,向外設輸出數(shù)據(jù)。如:顯示器、磁盤、打印機。</p><p> 4.2.2 數(shù)據(jù)輸入輸出的實現(xiàn)</p><p> C本身并不提供輸入輸出語句,輸入輸出操作是由函數(shù)來實現(xiàn)的。函數(shù)已編譯成OBJ文件以庫的形式存放在系統(tǒng)中,在源程序編譯后由連接程序?qū)⑺蛶爝M行連接生成可執(zhí)行文
9、件。</p><p> 在使用輸入輸出函數(shù)之前,在程序的開頭應加上包含了與標準I/O庫有關的變量定義和宏定義的頭文件。格式為:</p><p> #include “stdio.h”或#include <stdio.h></p><p> 但標準的輸入輸出操作scanf和printf由于使用頻繁,可以不加#include命令。</p>
10、;<p> §4.3 字符數(shù)據(jù)的輸入輸出</p><p> 4.3.1 單個字符的輸出</p><p><b> 格式</b></p><p> putchar(字符型數(shù)據(jù));</p><p><b> 功能</b></p><p> 向標
11、準輸出設備輸出一個字符。</p><p><b> 說明</b></p><p> 也可以輸出整型數(shù)據(jù),此時,該數(shù)據(jù)作為字符的ASCII碼值。</p><p> 該函數(shù)使用前需用#include “stdio.h”或#include <stdio.h>。</p><p><b> 例1:
12、 </b></p><p> #include<stdio.h></p><p><b> main()</b></p><p> {char c; /*定義字符變量*/ </p><p> c='B'; /*給字符
13、變量賦值*/ </p><p> putchar(c); /*輸出該字符*/ </p><p> putchar('\x42'); /*輸出字母B*/ </p><p> putchar(0x42); /*直接用ASCII碼值輸出字母B*/ </p><p><b> }<
14、;/b></p><p> 4.3.2 單個字符的輸入</p><p><b> 格式</b></p><p> getchar();</p><p><b> 功能</b></p><p> 等待從鍵盤上讀入字符, 直到按回車結(jié)束, 回車前的所有輸入字符都會
15、逐個顯示在屏幕上,但只有第一個字符作為函數(shù)的返回值。</p><p><b> 說明</b></p><p> 該函數(shù)的返回值可以賦給整型或字符型變量,也可作為表達式的一部分。</p><p> 如:putchar(getchar());</p><p> 該函數(shù)使用前需用#include “stdio.h”或
16、#include <stdio.h>。</p><p><b> 例2: </b></p><p> #include<stdio.h> </p><p><b> main() </b></p><p><b> {char c; </b>&
17、lt;/p><p> c=getchar(); /*從鍵盤讀入字符直到回車結(jié)束*/ </p><p> putchar(c); /*顯示輸入的第一個字符*/ </p><p><b> }</b></p><p> §4.4 格式輸入與輸出</p><p> Turb
18、o C2.0標準庫提供了兩個控制臺格式化輸入、輸出函數(shù)printf()和scanf(), 這兩個函數(shù)可以在標準輸入輸出設備上以各種不同的格式讀寫數(shù)據(jù)。printf()函數(shù)用來向標準輸出設備(屏幕)寫數(shù)據(jù);scanf()函數(shù)用來從標準輸入設備(鍵盤)上讀數(shù)據(jù)。下面詳細介紹這兩個函數(shù)的用法。 </p><p> 4.4.1 格式輸出函數(shù)</p><p><b> 格式</b
19、></p><p> printf("<格式控制>", <輸出表列>);</p><p> 其中:格式控制包括兩部分內(nèi)容: 一部分是正常字符, 這些字符將按原樣輸出;另一部分是格式化控制字符, 以"%"開始, 后跟一個或幾個規(guī)定字符,用來確定輸出內(nèi)容格式。</p><p> 輸出表列是需要輸
20、出的一系列參數(shù), 其參數(shù)必須與格式化字符串所說明的輸出參數(shù)個數(shù)一樣多, 各參數(shù)之間用","分開, 且順序一一對應, 否則將會出現(xiàn)錯誤。</p><p><b> 功能</b></p><p> 以指定的格式向顯示器輸出“輸出表列”的內(nèi)容,“輸出表列”可以是任意類型的數(shù)據(jù)。</p><p><b> 討論&l
21、t;/b></p><p><b> 格式化控制符</b></p><p> Turbo C2.0提供的格式化規(guī)定符如下: </p><p> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p><p> 符號 作用 </p>&
22、lt;p> ────────────────────────────────────</p><p> %d,%i 帶符號十進制形式輸出整數(shù)(正號不輸出)</p><p> %u 無符號十進制形式輸出整數(shù)</p><p> %f 小數(shù)形式輸出單、雙精度數(shù),隱含6位小數(shù)</p&g
23、t;<p> %s 輸出字符串</p><p> %c 輸出單個字符</p><p> %e,%E 指數(shù)形式輸出單、雙精度數(shù),隱含6位小數(shù)</p><p> %x, %X 無符號十六進制形式輸出整數(shù)(不輸出前導符“0”)</p><p&g
24、t; %x:小寫輸出a-f;%X:大寫輸出A-F</p><p> %o 無符號八進制形式輸出整數(shù)(不輸出前導符“0”)</p><p> %g,%G 選擇%f、%e中輸出寬度較短的格式,不輸出無意義的“0”</p><p> 用%G時,若以指數(shù)形式輸出,則指數(shù)大寫表示</p><p>
25、━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p><p><b> 特殊規(guī)定字符</b></p><p> ━━━━━━━━━━━━━━━━━━━━━━━━━━ </p><p> 字符 作用 </p><p> ────────
26、────────────────── </p><p> \n 換行</p><p> \f 清屏并換頁</p><p> \r 回車</p><p> \t Tab符</p>
27、<p> \ddd 八進制表示的ASCII碼</p><p> \xhh 十六進制表示的ASCII碼</p><p> ━━━━━━━━━━━━━━━━━━━━━━━━━━ </p><p><b> 說明</b></p><p> 在&
28、quot;%"和字母之間可以插進數(shù)字表示最大場寬。</p><p> 例如: %3d――表示輸出3位整型數(shù), 不夠3位右對齊。 </p><p> %9.2f――表示輸出9位實數(shù), 其中小數(shù)2位,整數(shù)6位,小數(shù)點1</p><p> 位, 不夠9位右對齊。</p><p> %8s――表示輸出8個字符的字符串, 不夠8個字
29、符右對齊。</p><p> 如果字符串的長度、或整型數(shù)位數(shù)超過說明的場寬, 將按其實際長度輸出。但對實數(shù), 若整數(shù)部分位數(shù)超過了說明的整數(shù)位寬度, 將按實際整數(shù)位輸出;若小數(shù)部分位數(shù)超過了說明的小數(shù)位寬度, 則按說明的寬度以四舍五入輸出。</p><p> 另外, 若想在輸出值前加一些0, 就應在場寬項前加一個0。 </p><p> 例如: %04d表示在
30、輸出一個小于4位的數(shù)值時, 將在前面補0使其總寬度為4位。 </p><p> 如果用實數(shù)表示字符或整型量的輸出格式, 小數(shù)點后的數(shù)字代表最大寬度, 小數(shù)點前的數(shù)字代表最小寬度。</p><p> 例如: %6.9s表示顯示一個長度不小于6且不大于9的字符串。若大于9, 則第9個字符以后的內(nèi)容將被刪除。 </p><p> 可以在"%"和
31、字母之間加小寫字母l, 表示輸出的是長型數(shù)。</p><p> 例如: %ld――表示輸出long整數(shù)</p><p> %lf――表示輸出double實數(shù) </p><p> 輸出默認為右對齊,但如果在"%"和字母之間加入一個"-" 號則輸出為左對齊。</p><p> 例如: %-7
32、d――表示輸出7位整數(shù)左對齊</p><p> %-10s――表示輸出10個字符左對齊</p><p><b> 例子</b></p><p> #include<stdio.h></p><p> #include<string.h></p><p> int
33、main()</p><p> {char c, s[]="Hello, Comrade";</p><p> int a=1234;</p><p> float f=3.141592653589;</p><p> double x=0.12345678987654321;</p><p&g
34、t;<b> c='\x41';</b></p><p> printf("a=%d\n", a); /*結(jié)果輸出十進制整數(shù)a=1234*/ </p><p> printf("a=%6d\n", a); /*結(jié)果輸出6位十進制數(shù)a= 1234*/ </p><p&g
35、t; printf("a=%06d\n", a); /*結(jié)果輸出6位十進制數(shù)a=001234*/ </p><p> printf("a=%2d\n", a); /*a超過2位, 按實際值輸出a=1234*/ </p><p> printf("*i=%4d\n", *i); /*輸出4位十進制整數(shù)*i=1
36、2*/ </p><p> printf("f=%f\n", f); /*輸出浮點數(shù)f=3.141593*/ </p><p> printf("f=6.4f\n", f); /*輸出6位其中小數(shù)點后4位的浮點數(shù)f=3.1416*/</p><p> printf("x=%lf\n",
37、 x); /*輸出長浮點數(shù)x=0.123457*/ </p><p> printf("x=%18.16lf\n", x);/*輸出18位其中小數(shù)點后16位的長數(shù)</p><p> x=0.1234567898765432*/ </p><p> printf("c=%c\n", c); /*輸出字符c
38、=A*/ </p><p> printf("c=%x\n", c); /*輸出字符的ASCII碼值c=41*/ </p><p> printf("s[]=%s\n", s); /*輸出數(shù)組字符串s[]=Hello, Comrade*/ </p><p> printf("s[]=%6.9s\
39、n", s); /*輸出最多9個字符的字符串s[]=Hello,Co*/ </p><p><b> }</b></p><p> 4.4.2 格式輸入函數(shù)</p><p><b> 格式</b></p><p> scanf("<格式控制>", &
40、lt;地址表>);</p><p> 其中:格式控制包括三部分內(nèi)容: 一部分是格式化控制字符, 以"%"開始, 與printf()的用法基本相同;第二部分是“空格”,其作用是在讀操作時略去輸入數(shù)據(jù)中的一個或多個空格字符;第三部分是非空格字符,其作用是在讀操作時剔除與該字符相同的字符。</p><p> 輸出表列是需要輸出的一系列參數(shù), 其參數(shù)必須與格式化字符串
41、所說明的輸出參數(shù)個數(shù)一樣多, 各參數(shù)之間用","分開, 且順序一一對應, 否則將會出現(xiàn)錯誤。</p><p> 地址表是需要讀入的所有變量的地址, 而不是變量本身。這與printf()函數(shù)完全不同, 要特別注意。各個變量的地址之間同","分開。</p><p><b> 功能</b></p><p>
42、; 以指定的格式從鍵盤讀入數(shù)據(jù),并順序存放到“地址表”指定的存儲單元中,并剔除掉“格式控制”中指定的字符。</p><p><b> 例:main()</b></p><p> {int i, j;</p><p> printf("i, j=?\n");</p><p> scanf(&q
43、uot;%d, %d", &i, &j);</p><p><b> }</b></p><p> 上例中的scanf()函數(shù)先讀一個整型數(shù), 然后把接著輸入的逗號剔除掉, 最后讀入另一個整型數(shù)。如果","這一特定字符沒有找到, scanf()函數(shù)就終止。若參數(shù)之間的分隔符為空格, 則參數(shù)之間必須輸入一個或多個空格。&
44、lt;/p><p><b> 討論</b></p><p> 對于字符串數(shù)組或字符串指針變量, 由于數(shù)組名和指針變量名本身就是地址, 因此使用scanf()函數(shù)時, 不需要在它們前面加上"&"操作符。</p><p><b> mian()</b></p><p>
45、 {char *p, str[20]; </p><p> scanf("%s", p); /*從健盤輸入字符串*/ </p><p> scanf("%s", str); </p><p> printf("%s\n", p); /*向屏幕輸出字符串*/ </p&
46、gt;<p> printf("%s\n", str);</p><p><b> }</b></p><p> 可以在格式化控制字符中的"%"和規(guī)定字符之間加一個整數(shù), 表示讀操作中數(shù)的最大位數(shù)。如:scanf("%10s", p);,程序運行時一旦輸入字符個數(shù)大于10, p就不再繼續(xù)讀
47、入, 而后面的一個輸入函數(shù)即scanf("%s", str)就會從第11個字符開始讀入。</p><p> 實際使用scanf()函數(shù)時存在一個問題, 下面舉例進行說明: </p><p> 當使用多個scanf()函數(shù)連續(xù)給多個字符變量輸入時, 例如: </p><p><b> main() </b></p&
48、gt;<p> {char c1, c2; </p><p> scanf("%c", &c1); </p><p> scanf("%c", &c2); </p><p> printf("c1 is %c, c2 is %c", c2\1, c2); </p&
49、gt;<p><b> }</b></p><p> 運行該程序, 輸入一個字符A后回車 (要完成輸入必須回車), 在執(zhí)行scanf </p><p> ("%c", &c1)時, 給變量c1賦值"A", 但回車符仍然留在緩沖區(qū)內(nèi), 執(zhí)行輸入語句 </p><p> scan
50、f("%c", &c2)時, 變量c2輸出的是一空行, 如果輸入AB后回車, 那么輸出結(jié) </p><p> 果為: c1 is A, c2 is B。 </p><p> 要解決以上問題, 可以在輸入函數(shù)前加入清除函數(shù)fflush()( 這個函數(shù)的使 </p><p> 用方法將在本節(jié)最后講述)。修改以上程序變成: </p&
51、gt;<p> #include<stdio.h> </p><p><b> main() </b></p><p><b> { </b></p><p> char c1, c2; </p><p> scanf("%c", &c
52、1); </p><p> fflush(stdin); </p><p> scanf("%c", &c2); </p><p> printf("c1 is %c, c2 is %c", c1, c2); </p><p><b> } </b></p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論