第4章最簡單的C程序設計順序程序設計_第1頁
第4章最簡單的C程序設計順序程序設計_第2頁
第4章最簡單的C程序設計順序程序設計_第3頁
第4章最簡單的C程序設計順序程序設計_第4頁
第4章最簡單的C程序設計順序程序設計_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第4 4章章 最簡單的最簡單的C C程序設計程序設計順序程序設計順序程序設計 4.1 C4.1 C語句概述語句概述 4.1.1 C4.1.1 C語言語句分類語言語句分類: :1 、操作運算語句:用于描述計算機要執(zhí)行的操作運算(如算術運算、賦值、輸出等),由于C語言的操作運算用表達式進行,這類語句又叫表達式語句。2、流程控制語句:控制操作運算的執(zhí)行順序(第5、6章介紹)。(1)形成流程控制結構的語句a、選擇結構控制語句:if語句、switch語句b、循環(huán)結構控制語句:while語句、dowhile語句、for語句(2)流程轉向語句a、限定轉向語句:break語句、continue語句、retu

2、rn語句b、自由轉向語句:goto語句4.1.2 C4.1.2 C語言語句一覽表語言語句一覽表: : 賦值表達式語句 簡單表達式語句 函數(shù)調用語句 表達式語句 空語句 逗號表達式(復合表達式)語句 單分支結構:if語句 選擇結構 雙分支結構:ifelse語句 基本語句 形成流程 控制語句 else if嵌套語句 控制結構 多分支結構 switch語句C 的語句 while語句語 循環(huán)結構 dowhile語句言 流程控 控制語句 for語句語 制語句 break語句句 限定轉 continue語句 流程轉 向語句 return語句 向語句 自由轉向語句:goto語句 復合語句(就是用 把一些語句

3、括起來)4.1.3 表達式語句1、賦值語句(1)形成:將賦值表達式加上“;”號就構成了賦值語句;(2)由復合賦值運算符或自增、自減運算符組成的表達式也是賦值表達式。例如有如下一些賦值類表達式語句:a=b+c; a+=b; i+; -j; 等等。2、函數(shù)調用語句(由于表達式中可包含函數(shù)調用,單純函數(shù)調用是表達式特例)形成:函數(shù)調用加“;”號,如scanf(); printf(); 等等。 3、空語句:沒有內容的語句,只有一個“;”。例如:; /* 空語句 */ 作用:空語句不進行任何操作。是程序員為今后增加語句保留位置做的記號。4、逗號表達式語句:由逗號表達式加“;”組成,如: i=3,i+,+

4、i,i+5;其實,在C語言中,所有表達式加“;”都構成表達式語句,只是有些表達式語句(如3;或者a+b*c;)沒有什么實際意義而已。4.1.44.1.4復合語句復合語句(語句塊、分程序)1、構成:在函數(shù)的執(zhí)行部分用一對花括號括起若干語句。如: a+; b*=a; printf(a=%d,b=%dn,a,b);注意:“”之后沒有“;”!2、作用 (1)當作一條語句使用,一般用在只能使用一條語句,卻又必須使用多條語句的地方。例如作為選擇結構的一個分支或作為循環(huán)結構的循環(huán)體。 (2)當作函數(shù)中的一個獨立部分,此時復合語句中除了有可執(zhí)行語句外,在可執(zhí)行語句的前面還可以有說明部分語句(如定義變量等),因

5、此叫做“分程序”。例如:main( )int a=2; int b; b=3; printf(“%dn”,a+b); 分程序注意:復合語句(分程序)中定義的變量只能在分程序中使用。4.2 順序結構程序設計 1、順序結構的組成 (1) 表達式語句 (2) 復合語句2、順序結構與選擇、循環(huán)結構的關系:可相互嵌套。 4.3 4.3 數(shù)據(jù)輸入和輸出及其在數(shù)據(jù)輸入和輸出及其在C C語言中的實現(xiàn)語言中的實現(xiàn)1、C語言輸入和輸出都是通過系統(tǒng)的庫函數(shù)來完成的。2、C輸入、輸出庫函數(shù):(1)輸入、輸出字符函數(shù):getchar()和putchar()(2)格式化輸入、輸出函數(shù):scanf()和printf()(3

6、)輸入、輸出字符串函數(shù):gets()和puts()注:這些庫函數(shù)均是通過標準的輸入和輸出設備(鍵盤和顯示器)輸入和輸出的。都包含在頭文件stdio.h中,故在源文件開頭需要預編譯命令:#include “stdio.h”或#include。4.4 4.4 字符數(shù)據(jù)的輸入輸出函數(shù)字符數(shù)據(jù)的輸入輸出函數(shù)4.4.14.4.1字符輸出函數(shù)字符輸出函數(shù)putcharputchar( )( )1、調用格式:putchar(ch); /*ch是字符變量或字符常量*/2、作用:將字符ch輸出到屏幕上。如:char c1=X; putchar(c1); putchar(Y); 輸出XY。4.4.2 4.4.2

7、字符輸入函數(shù)字符輸入函數(shù)getchargetchar( )( )1、調用的一般格式:ch=getchar( ); /*ch是字符變量*/2、作用:通過鍵盤輸入字符,存入緩沖區(qū),給變量賦值。讀入的字符包括各種字符(含空格、Tab和回車等,因此注意輸入時不要隨意輸入空格,并注意回車的處理,否則變量得不到正確的字符)。注意:如果在一個函數(shù)中要調用如果在一個函數(shù)中要調用putcharputchar( )( )和和getchargetchar( )( ),應該在該函數(shù)的前面(或文本開,應該在該函數(shù)的前面(或文本開頭)加上頭)加上“包含命令包含命令”:#includestdio.h#include #in

8、clude main() int c; printf(Enter a character:); c=getchar(); printf(%c-hex%xn,c,c);運行結果:Enter a character:AA-hex414.5 4.5 格式輸入與輸出格式輸入與輸出4.5.14.5.1格式輸出函數(shù)格式輸出函數(shù)printfprintf()()1、一般調用格式:printf(格式控制字符串,輸出項1,輸出項2,)(1)“格式控制字符串”包括:a、格式說明:以%開頭、格式字符(P32表3-2)結束,控制輸出項的輸出格式 。b、普通字符:ASCII碼字符、漢字,原樣輸出。如a=、最大值=等。c、

9、轉義字符,如 n 回車換行、t 控制到下一個制表站等。(2)輸出項:可以是常量、變量、函數(shù)調用和表達式。2、格式說明(1)完整的格式說明 % + 0 # 整數(shù)1.整數(shù)2 l或h 格式字符 指定輸出數(shù)據(jù)類型 格式終止符 長度修正:l:對整型指long 對實型指double h:指短整型 整數(shù)1:域寬(輸出總字符數(shù))適用各種類型 整數(shù)2:對實數(shù)為小數(shù)位數(shù) 對整數(shù)為數(shù)字個數(shù): 大于實際個數(shù)前面補0 小于實際個數(shù)按實際個數(shù)輸出 對字符串為輸出字符的個數(shù) 對格式字符o(八進制)數(shù)字前加0 對格式字符x或X(十六進制)數(shù)字前加0 x或0X 對數(shù)值輸出,右對齊時左空位補0(缺省補空格) 對數(shù)值輸出,總輸出符

10、號(+號或號) 缺省只輸出號 左對齊輸出,缺省按域寬右對齊輸出 格式起始符(2)補充說明a、實數(shù)的精度(有效數(shù)字)由輸出項類型控制(float 7位double 16位),對float型輸出項用%lf格式不能增加精度; 輸出實數(shù)的小數(shù)位數(shù)由“整數(shù)2”控制,增大“整數(shù)2”不能增加精度。 b、“整數(shù)1”表示域寬,“整數(shù)2”作用見上圖兩者均缺省情況下:對整數(shù)和字符串按實際字符數(shù)輸出; 對實數(shù)(float和double):小數(shù)型:整數(shù)部分原樣輸出,默認輸出6位小數(shù),多余小數(shù)四舍五入處理。指數(shù)型:正數(shù)默認輸出1位非0整數(shù)(負數(shù)有負號)、小數(shù)點、6位小數(shù)、5位指數(shù)(e或E、+或號及3位指數(shù))共13個字符(

11、負數(shù)14個字符)。(vc環(huán)境,tc環(huán)境與上不同)指定域寬不足,按需增加域寬。指定域寬富余: 缺省右對齊: 無0控制:前加空格; 有0控制:數(shù)值型前加0填齊; 其它類型前加空格。 有控制左對齊,按域寬后面加空格。例 int a=1234; float f=123.456; float b=54.35678432 char ch=a; printf(“%d,%f,%e”,a,f,b); printf(“%8d,%2dn”,a,a); printf(“%8f,%8.1f,%.2f,%.2e,%.8en”,f,f,f,f,f); printf(“%3cn”,ch);例 m.n(注:VC+ 中%m.ne

12、 n指數(shù)值部分小數(shù)的位數(shù))運行 1234,123.456000,5.435684e+001結果: -1234,1234 123.456000,-123.5,123.46,1.23e+002,1.23456000e+002 -a例 static char a=“Hello,world!” printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);運行結果:Hello,world! -Hello,world! -Hello Hello Hel 例 int a=1234; float f=123.456; static char c=“Hello,world!”;

13、 printf(“%8d,%-8dn”,a,a); printf(“%10.2f,%-10.1fn”,f,f); printf(“%10.5s,%-10.3sn”,c,c);運行結果: -1234,1234- -123.46,123.5- -Hello,Hel- 例 -例 int a=1234; float f=123.456; printf(“%08dn”,a); printf(“%010.2fn”,f); printf(“%+08dn”,a); printf(“%+010.2fn”,f); 例 0 、+例 int a=123; printf(“%o,%#6o,%X,%#6Xn”,a,a,a

14、,a); 例 #/00001234/0000123.46/+0001234/+000123.46/173,-0173,7B,-0X7B3、輸出:從右向左計算輸出項后,按格式說明的順序、類型和要求對應輸出。(1)格式說明和輸出項的個數(shù)應相同,如不匹配系統(tǒng)并不報錯,將不能正確輸出。 a、格式說明的個數(shù)少于輸出項的個數(shù),多余的輸出項將不輸出; b、格式說明的個數(shù)多于輸出項的個數(shù),多余的格式說明將輸出隨機的值。(2)在“格式控制字符串”中可用%輸出一個%。4.5.2格式輸入函數(shù)scanf()1、一般調用形式: scanf(格式控制字符串,地址1,地址2,)(1)“格式控制字符串”包括:a、格式說明:控

15、制輸入項的類型等。b、數(shù)據(jù)分隔符,如“,”、空格等。用了分隔符在輸入時就必須用該字符分隔數(shù)據(jù),否則出錯;可以不用數(shù)據(jù)分隔符,此時在輸入數(shù)值數(shù)據(jù)時必須用空格(Tab鍵或回車)分隔數(shù)據(jù),輸入字符數(shù)據(jù)不能用空格(Tab鍵或回車)!(2)變量“地址”形式為:&變量名(3)scanf函數(shù)的作用:通過鍵盤輸入數(shù)據(jù)到緩沖區(qū),按照各格式說明取得數(shù)據(jù)存放到對應的內存地址中。例如有程序段:int a,b;scanf(%d%d,&a,&b);執(zhí)行的結果是:通過鍵盤輸入2個十進制有符號整數(shù),例如:123 -456分別送到變量a、b的內存地址中去。2、格式控制字符串(1)輸入一個數(shù)據(jù)的較完整的格式說明: % * 整數(shù)

16、l或h 格式字符 指定輸入數(shù)據(jù)類型(P37表3-3) 格式終止符(一般只能用小寫) 長度修正:l:對整型指long (l必須增加) 對實型指double(l必須增加) h:指短整型(l必須增加) 輸入域寬說明(注意:無小數(shù)位數(shù)) 賦值抑制符,跳過對應本項輸入的數(shù)據(jù) 格式說明起始符例 int k;float f; scanf(“%3d%*4d%f”,&k,&f); 輸入 12345678765.43 則123k, 8765.43f例 char c1,c2; scanf(“%3c%2c”,&c1,&c2); 輸入 abcde 則ac1, d c2(2)注意事項a、在格式控制字符串中,格式說明的類型

17、與輸入項的類型應一 一對應匹配。如果類型不匹配,系統(tǒng)并不報錯,但得不到正確的數(shù)據(jù)。b、在格式控制字符串中,格式說明的個數(shù)應與 輸入項的個數(shù)相同。 若格式說明的個數(shù)少于輸入項的個數(shù),按格式說明的個數(shù)輸入前面的輸入項,多余的輸入項沒有輸入數(shù)據(jù); 若格式說明的個數(shù)多于輸入項的個數(shù),按格式說明的個數(shù)輸入完后結束輸入,多余的數(shù)據(jù)留給下次輸入用。3、分隔輸入數(shù)據(jù)的方法: a、按格式字符取得數(shù)據(jù),當遇到類型不符的 輸入時,認為一數(shù)據(jù)項結束。例、main( )int a;char b;float c;printf(input a b c:);scanf(%d%c%f,&a,&b,&c);printf(na=%

18、d,b=%c,c=%f,a,b,c);運行時輸入及結果為:input a b c:1234r1234.567輸 出:a=1234, b=r, c=1234.567017b、當格式說明中有域寬時,按域寬分隔出數(shù)據(jù)項。例、main( )int a; float b,c;scanf(%2d%3f%4f,&a,&b,&c);printf(a=%d,b=%f,c=%fn ,a,b,c);運行時輸入:123456.78987654321輸 出:a=12, b=345.000000, c=6.780000c、用分隔符分隔數(shù)據(jù)在格式控制字符串中沒有分隔符,輸入時可用空格、Tab鍵、回車鍵分隔數(shù)據(jù)(均為默認分隔

19、符,無須在格式控制字符串中加入);注意:字符型數(shù)據(jù)。 在格式控制字符串中有分隔符(如逗號等),輸入時要原樣輸入,如果輸錯,將不能得到正確的數(shù)據(jù)。例 scanf(“%d,%d”,&a,&b) 輸入 3,4 則3a, 4 b例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”,a,b,c); 輸入 123 123 123 輸出 a=123,b=83,c=291例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 輸入 a=12,b=24,c=36 綜合應用實例綜合應用實例:例 從鍵盤輸入大寫字母,用小寫字母輸出#include

20、stdio.hmain() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);輸入:A 輸出:A,65 a,97例 交換x、y的值main()int x,y,t; printf(“Enter x&y:n”); scanf(“%d %d”,&x,&y); printf(“x=%d y=%dn”,x,y); t=x;x=y;y=t; printf(“x=%d y=%dn”,x,y);【例【例3-18】分析下面程序的運行結果分析下面程序的運行結果(P45)#include main() int

21、 x=1,y=5; printf(x=%d,y=%d,x,y); 【例【例3-19】 分析下面程序的運行結果分析下面程序的運行結果(P45)#include main() int a,b; a=0 x41; /* 65 */ b=+a; /* 66 */ printf(%d,%dn,a-,-b); printf(%c,%cn,+a,b+); 實驗三實驗三1、使用函數(shù)getchar()與putchar()編寫將B,e,i,j,i,n,g以單個字符賦給變量后顯示beijing的程序2、使用函數(shù)printf()編制程序顯示下面圖形 a b b b c c c c c3、用下面的scanf函數(shù)輸入數(shù)據(jù)

22、,使a=10,b=20, c1=A,c2=a,x=1.5,y=-3.75,z=67.8,請問在鍵盤上如何輸入數(shù)據(jù)?并用printf函數(shù)將各個變量輸出 scanf(“%5d%5d%c%c%f%f%*f%f”,&a,&b,&c1,&c2, &x,&y,&z);習題課1、 scanf(“%c%c%c”,&c1,&c2,&c3); 若輸入abc 則ac1, c2, b c32、 int x; char ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%dn”,x,ch);執(zhí)行:123輸出:x=123,ch=103、已知 int k1,k2,k3

23、,k4,為使k1=10,k3=10且k2=20,k4=20,則對應下列scanf函數(shù)調用語句的正確輸入方式是( ) scanf(“%d%d”,&k1,&k2); scanf(“%d,%d”,&k3,&k4);A.1020 B.10_20 1020 10_20 C.10,20 D.10_20 10,20 10,204、 已知 char ch; int k; 為了使ch=c,k=555,正確的scanf函數(shù)調用語句和相應的數(shù)據(jù)輸入是( )A.scanf(“%3c%3d”,&ch,&k); abc_555B.scanf(“%3c%*d%3d”,&ch,&k); cba_555_123C.scanf(

24、“ch=%3c%*dk=%3d”,&ch,&k); ch=cba_123_k=555D.scanf(“%*d%d%c”,&k,&ch); 12_555_c 5、已有如下定義和輸入語句,若要求a1,a2,c1,c2的值分別為10,20,A,B,當從第一列開始輸入數(shù)據(jù)時,正確的數(shù)據(jù)輸入方式是( )int a1,a2; char c1,c2;scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,&c2);A. 1020AB B. 10-20B. ABC. C. 10-20-AB D. 10-20AB6、根據(jù)定義和數(shù)據(jù)的輸入方式,輸入語句的正確形式為()已有定義:float f

25、1,f2;數(shù)據(jù)的輸入方式:4.52 3.5A. scanf(“%f, %f”,&f1,&f2);B. B. scanf(“%f%f”,&f1,&f2);C. C. scanf(“%3.2f-%2.1f”,&f1,&f2);D. D.scanf(“%3.2f%2.1f”,&f1,&f2);7、執(zhí)行以下程序時,若從第一列開始輸入數(shù)據(jù),為使變量a=3,b=7,x=8.5,y=71.82,c1=A,c2=a,正確的數(shù)據(jù)輸入形式是:main()int a,b; float x,y; char c1,c2; scanf(“a=%d-b=%d”,&a,&b); scanf(“x=%f-y=%f”,&x,&y); scanf(“c1=%c-c2=%c”,&c1,&c2); printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c”, a,b,x,y,c1,c2); 8、以下程序不用第三個變量,實現(xiàn)將兩個數(shù)進行對調的操作,請?zhí)羁?#include main()int a,b; scanf(“%d%d”,&a,&b); printf(“a=%d b=%dn”,a,b); a=_;b=_;a=_; printf(“a=%db=%dn”,a,b);(1)A.a+b

溫馨提示

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

最新文檔

評論

0/150

提交評論