南京師范大學(xué)C語言第四講_第1頁
南京師范大學(xué)C語言第四講_第2頁
南京師范大學(xué)C語言第四講_第3頁
南京師范大學(xué)C語言第四講_第4頁
南京師范大學(xué)C語言第四講_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第4章 順序程序設(shè)計(jì)4.1 C語句概述 P69 程序包含: 數(shù)據(jù)描述語句序列; 操作語句序列;/編譯后產(chǎn)生機(jī)器指令操作語句分類1. 表達(dá)式語句:表達(dá)式加分號(hào)構(gòu)成。2. 空語句: ;3. 程序控制語句(9種):if( )else switchfor( )while( )dowhile( )continuebreakgotoreturn分支循環(huán)輔助控制如 total=total+limit; a=3; /*(賦值表達(dá)式加分號(hào))*/ func( ); printf(“Hello,world!n”);4. 復(fù)合語句:用 括起來的一組語句l一般形式: 數(shù)據(jù)說明部分; 執(zhí)行語句部分; l說明:u“”后不加

2、分號(hào)u語法上和單一語句相同u復(fù)合語句可嵌套4.2 程序的三種基本結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)v基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(goto)v結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序叫結(jié)構(gòu)化程序v優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率三種基本結(jié)構(gòu)1. 順序結(jié)構(gòu)ABAB流程圖N-S圖PAB真假PBA真假2. 選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki.l二分支選擇結(jié)構(gòu)l多分支選擇結(jié)構(gòu)3. 循環(huán)結(jié)構(gòu)l當(dāng)型循環(huán)結(jié)構(gòu)l直到型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假A直到P為真注:A,B,A1.An可以是一個(gè)簡單語句,也可以是一個(gè)基本結(jié)構(gòu)格式: putchar(

3、 c )參數(shù): c為字符常量、變量或表達(dá)式功能:把字符c輸出到顯示器上返回值:正常,為顯示的代碼值;出錯(cuò),為EOF(-1)4.3 數(shù)據(jù)輸出 5C語言的I/O操作由函數(shù)實(shí)現(xiàn)5 #include 1. 字符輸出函數(shù)(p73)/*ch4_1.c*/#include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); putchar(C); printf(“n%d n”,c);運(yùn)行結(jié)果:A BC 65例4.1格式:printf(“printf(“格式控制串格式控制串”,輸出表,輸出表) )功能:按指定格式向顯示器輸出

4、數(shù)據(jù)功能:按指定格式向顯示器輸出數(shù)據(jù)返值:正常,返回輸出字節(jié)數(shù);出錯(cuò),返回返值:正常,返回輸出字節(jié)數(shù);出錯(cuò),返回EOF(-1)EOF(-1)2. 格式輸出函數(shù)(p75)v輸出表:要輸出的數(shù)據(jù)(可以沒有,多個(gè)時(shí)以“,”分隔)v格式控制串:包含兩種信息l格式說明: %修飾符格式字符 ,用于指定輸出格式l普通字符或轉(zhuǎn)義序列:原樣輸出v格式字符dx,Xoucse,Efg%格式字符:十六進(jìn)制無符號(hào)整數(shù)不帶符號(hào)十進(jìn)制整數(shù)十進(jìn)制整數(shù)指數(shù)形式浮點(diǎn)小數(shù)單一字符字符串八進(jìn)制無符號(hào)整數(shù)小數(shù)形式浮點(diǎn)小數(shù)e和f中較短一種百分號(hào)本身int a=567;printf ( “%d”,a);int a=255;printf(“

5、%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+02567.789000567.789%l說明u格式字符要用小寫u格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng)例 int a=3,b=4;

6、 printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);輸出結(jié)果: 3 4 a=3, b=4v附加格式說明符(修飾符).n對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)對(duì)字符串,指定實(shí)際輸出位數(shù)修飾符功 能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長度m,左補(bǔ)空格;否則按實(shí)際輸出輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊)-指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+)+輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填00在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0 x#在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型ld格式%d, %ld, %md, %-md例 int a=1

7、234; long b=65536; printf(“%8d,%2d,%-8dn”,a,a,a); printf(“%d,%8ldn”,b, b); 運(yùn)行 1234,1234,1234結(jié)果: 0, 65536 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00例 main() unsigned int u=65535; printf(” %d,%o,%x,%un,u,u,u,u); 輸出結(jié)果:-1,177777,ffff,65535o格式,x格式,u格式%o, %x, %uc格式,s格式%c, %s, %ms, %-ms,%m.ns, %-m.ns例

8、 char c=a; int i=97; printf(“%c,%cn”,c,i); printf(“%3s,%7.2s,%.4s,%-5.3sn”, ”CHINA”,”CHINA”,” CHINA”,” CHINA”,” CHINA”); 運(yùn)行 a,a 結(jié)果: CHINA, CH,CHIN,CHI f格式%f, ,%-f, %m.nf, %-m.nf, %e,%g單精度:7位有效,6位小數(shù),四舍五入雙精度:16位有效,6位小數(shù),四舍五入例 float f=123.456; printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f);運(yùn)行結(jié)果: 123.456000

9、,123.456000, 123.5,123.46,1.23e+020,+,#修飾例 int a=1234; float f=123.456; printf(“%08dn”,a); printf(“%010.2fn”,f); printf(“%0+8dn”,a); printf(“0+10.2fn”,f); /00001234例 int a=123; printf(“%o,%#o,%X,%#Xn”,a,a,a,a); /0000123.46/000+1234/000+123.56/173,0173,7B,0X7B格式:getchar( )功能:從鍵盤讀一字符返回值:正常,返回讀取的代碼值;出錯(cuò)

10、,返回EOF(-1)4.4 數(shù)據(jù)輸入1. 字符輸入函數(shù)(p74) 例 4-2 /*ch4_2.c*/#include main() int c; printf(Enter a character:); c=getchar(); printf(%c - hex: %xn,c,c);運(yùn)行結(jié)果:Enter a character:AA - hex: 412. 格式輸入函數(shù)(p82)格式: scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的 存儲(chǔ)單元中存儲(chǔ)單元中, ,并按回車鍵結(jié)束并按回車鍵結(jié)束返值:正常,返回輸入數(shù)據(jù)個(gè)

11、數(shù)返值:正常,返回輸入數(shù)據(jù)個(gè)數(shù)v地址表:變量的地址,常用取地址運(yùn)算符&v格式字符:d,o,x,u,c,s,f,e例 scanf(“%d”,&a); 輸入:10 則 a=10例 scanf(“%x”,&a); 輸入:11 則 a=17v附加格式說明符(修飾符)l修飾符功 能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實(shí)數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束抑制符,指定輸入項(xiàng)讀入后不賦給變量例 scanf(“%4d%2d%2d”,&yy,&mm,&dd);

12、輸入 19991015 則1999yy, 10 mm, 15 dd例 scanf(“%3d%*4d%f”,&k,&f); 輸入 12345678765.43 則123k, 8765.43f例 scanf(“%2d%*3d%2d”,&a,&b); 輸入 1234567 則12a, 67b例 scanf(“%3c%2c”,&c1,&c2); 輸入 abcde 則ac1, d c2v輸入分隔符的指定v一般以空格、TAB或回車鍵作為分隔符v其它字符做分隔符:格式串中兩個(gè)格式符間字符例 scanf(“%d%o%x”,&a,&b,&c

13、); printf(“a=%d,b=%d,c=%dn”,a,b,c); 輸入 123 123 123 輸出 a=123,b=83,c=291例 scanf(“%d:%d:%d”,&h,&m,&s); 輸入 12:30:45 則12 h, 30 m, 45 s例 scanf(“%d,%d”,&a,&b) 輸入 3,4 則3a, 4 b例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 輸入 a=12,b=24,c=36 v說明:l用“%c”格式符時(shí),空格和轉(zhuǎn)義字符作為有效字符輸入如 scanf(“%c%c%c”,

14、&c1,&c2,&c3); 若輸入abc 則ac1, c2, b c3l輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:u遇空格、TAB、或回車u遇寬度結(jié)束u遇非法輸入如 scanf(“%d%c%f”,&a,&b,&c); 若輸入1234a123o.26 則 1234 a, a b, 123 cl輸入函數(shù)留下的“垃圾”:例 int x; char ch; scanf(“%d”,&x); ch=getchar(); printf(“x=%d,ch=%dn”,x,ch);執(zhí)行:123輸出:x=123,ch=10例 int x; char ch; sca

15、nf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%dn”,x,ch);執(zhí)行:123輸出:x=123,ch=10解決方法:(1)用getchar()清除(2)用函數(shù)fflush(stdin)清除全部剩余內(nèi)容 (3) 用格式串中空格或“%*c”來“吃掉”例 int x; char ch; scanf(“%d”,&x); scanf(“ %c”,&ch);或 scanf(“%*c%c”,&ch); main() double f; char ch; scanf(%lf,&f); scanf(%c,&c

16、h); printf(%f,%cn,f,ch); 如何輸入數(shù)據(jù)?如何輸入數(shù)據(jù)? 4.5 程序舉例#include #include main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area);例 4-3 輸入三角形邊長,求面積輸入:3,4,6 輸出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33)()()()(21csbsassareacbas文件包含預(yù)處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)例 4-4 從鍵盤輸入大寫字母,用小寫字母輸出#include stdio.hmain() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);輸入:A 輸出:A,65 a,9704022acbcbxax方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論