第3章順序結構_第1頁
第3章順序結構_第2頁
第3章順序結構_第3頁
第3章順序結構_第4頁
第3章順序結構_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出順序結構程序設計順序結構程序設計3程序舉例程序舉例41 1 2C語言的基本語句語言的基本語句12C語言的語句分為語言的語句分為5大類:表達式語句、函數(shù)調用語句、控制語句、大類:表達式語句、函數(shù)調用語句、控制語句、空語句和復合語句。空語句和復合語句。(1)空語句)空語句 單獨一個分號就構成了一條空語句。它什么也不做,其一般形式為: ;( 2)表達式語句)表達式語句 語言的任何表達式的后面加上一個分號之后就構成了一個表達式語句。該語句的功能就是對該表達式求值,其一般形式為: 表達式; 例如: a+b; /*計算變量a加b的和*/ a=3; /*將變量a賦值3*/

2、b+; /*將變量b的值增加1*/3.1 C語言的基本語句語言的基本語句3(3)函數(shù)調用語句)函數(shù)調用語句 一個函數(shù)加一個分號構成函數(shù)調用語句。其作用是完成特定的功能。形式為: 函數(shù)名(實參表); 例如:printf(This is an apple ); /*printf格式輸出函數(shù)加上一個分號構成函數(shù)調用語句*/ ch=getchar(); /*getchar()字符輸入函數(shù)從鍵盤得到一個字符賦值給ch*/(4)復合語句復合語句 復合語句塊是用一對花括號 括起來的一條或多條語句。在語法上相當于一條語句。其一般形式為: 語句組 例如: k=i; i=j; j=k; 3.1 C語言的基本語句4

3、注意注意“”后沒有分號,如果加上分號則不后沒有分號,如果加上分號則不再是一個塊而是一個塊和一條空語句再是一個塊而是一個塊和一條空語句 (5)控制語句控制語句 控制語句是用來控制程序執(zhí)行流程的語句。C語言的三種控制結構為順序結構、條件結構和循環(huán)結構。C語言中有9種控制語句,又可以細分為以下3種。 選擇結構控制語句:if語句、switch語句 循環(huán)結構控制語句:for循環(huán)、while循環(huán)、 dowhile循環(huán)。 其他控制語句:break 語句、continue語句、 return語句、goto語句。 3.1 C語言的基本語句53.2.1 getchar和和putchar函數(shù)(字符輸入輸出函數(shù))函數(shù)

4、(字符輸入輸出函數(shù))1. 字符輸出函數(shù)字符輸出函數(shù)putchar()一般形式:putchar(c);功能:向終端上輸出一個字符。c可以是一個字符變量或字符常量、整型變量、整型常量或轉義字符,函數(shù)的參數(shù)就是待輸出的字符。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出63.2 2字符輸入函數(shù)字符輸入函數(shù)getchar()一般形式:getchar();功能:是從鍵盤(或系統(tǒng)隱含指定的輸入設備)輸入一個字符。當程序執(zhí)行到getchar()函數(shù)時,等待用戶從鍵盤上輸入一個字符,并將這個字符作為函數(shù)結果值返回。getchar()函數(shù)沒有參數(shù)。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出73【例3.2】從鍵盤上輸入一

5、個字符,并在屏幕上輸出。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出如果從鍵盤輸入字母如果從鍵盤輸入字母Y Y,程序運行結果為:程序運行結果為: Y #include void main( ) /* 主函數(shù) */ char a; /* 定義字符型變量a */ a=getchar(); /*從鍵盤得到一個字符,并賦值給字符型變量a*/ putchar(a); /* 把變量a的值輸出到屏幕上*/ putchar(n); /* 輸出換行符 */ 83注意事項:注意事項:(1)getchar()函數(shù)接收的字符可以賦給一個字符變量或整型變量,也可以不賦給任何變量,僅作為表達式的一部分。(2)getchar(

6、 )函數(shù)一次只能接收一個字符,即使從鍵盤上輸入多個字符,也只接收第一個字符?;剀囨I表示結束,getchar( )函數(shù)沒有參數(shù),函數(shù)的返回值就是從終端讀入的字符。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出933.2.2 printf函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù))功能:按指定格式把數(shù)據(jù)輸出到標準輸出設備上。1.原樣輸出格式原樣輸出格式 原樣輸出一般形式為: printf(要輸出的字符串要輸出的字符串);【例3.3】 把一個字符串輸出到屏幕上。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出程序程序 運行結果:運行結果: I am a boy, you are a girl! #include vo

7、id main( ) printf(I am a boy, you are a girl!n); 1032.輸出變量的值輸出變量的值一般形式為: printf(格式控制字符串格式控制字符串,輸出表列,輸出表列);功能:按格式控制字符串所指定的格式輸出表列中的值。說明:(1)輸出表列是要輸出的變量、常量和表達式等,輸出表列中參數(shù)的個數(shù)1個到若干個,當超過一個時,用逗號分隔。(2)格式控制字符串用于指定輸出數(shù)據(jù)的類型、格式、個數(shù)。含有兩類字符: 非格式字符。非格式字符(普通字符、轉義字符)一律按原樣輸出。 格式說明字符。格式說明字符的一般形式為: %附加格式說明符附加格式說明符格式符格式符3.2

8、數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出112022-4-312格式控制舉例: 3【例3.5】求兩個數(shù)a與b之和。 3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出程序程序運行結果如下:運行結果如下: a=10 a=10 b=30 b=30 sum is:40 sum is:40 #include void main( ) int a,b,sum; a=10; b=30; sum=a+b; printf(a=%dn, a); printf(b=%dn, b); printf(sum is:%dn,sum); 133常用的格式符如表常用的格式符如表3-1,常用的附加格式符如表,常用的附加格式符如表3-2,具體表

9、見書。,具體表見書。printf( )函數(shù)常用的格式控制字符:函數(shù)常用的格式控制字符: d格式符用來輸出帶符號十進制整數(shù)。格式符用來輸出帶符號十進制整數(shù)。 %d: 以整數(shù)的實際位數(shù)輸出一個整數(shù)。 %md :以右對齊的方式按列寬m輸出,m大于實際寬度時左邊補空格,m小于實際寬度時m不起作用,系統(tǒng)原樣輸出該整數(shù)。 %-md:以左對齊的方式按列寬m輸出,m大于實際寬度時右邊補空格,m小于實際寬度時m不起作用,系統(tǒng)原樣輸出該整數(shù)。 %0md :以右對齊的方式按列寬m輸出,m大于實際寬度時左邊補數(shù)字0,m小于實際寬度時m不起作用,系統(tǒng)原樣輸出該整數(shù)。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出14【例3.6

10、 】分析下面程序的運行結果。 程序運行結果:程序運行結果:10010010010000010033.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出 #include void main( ) int x=100; printf(%dn,x ); printf(%6dn,x); printf(%2dn,x); printf(%-6dn,x); printf(%06dn,x); 153 c 格式符用來輸出一個字符。有格式符用來輸出一個字符。有%c、%mc、%-mc等用法。等用法?!纠?.7】字符數(shù)據(jù)的輸出。 3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出程序程序運行結果如下:運行結果如下:9898b b #inc

11、lude void main( ) char c=b; printf(%d%5cn,c,c); /*以字符和整數(shù)形式輸出的c變量的值*/ 163s格式符用來輸出一個字符串。格式符用來輸出一個字符串。 %s :以字符串的實際位數(shù)輸出一個字符串。 %ms: 在m列的寬度上以數(shù)據(jù)右對齊的方式輸出一個字符串,m大于字符串的寬度時左邊補空格,m小于字符串的寬度時按實際寬度輸出該字符串。 %-ms :在m列的寬度上以數(shù)據(jù)左對齊的方式輸出一個字符串,m大于字符串的寬度時右邊補空格,m小于字符串的寬度時按實際寬度輸出該字符串。 %m.ns: 在m列的寬度上以右對齊的方式輸出一個字符串的前n個字符,mn時,左邊

12、補空格,mn時,右邊補空格,mn時,輸出字符串的前n個字符。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出173【例3.8】字符串的輸出。 3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出程序運行結果:程序運行結果:Beijing,Beijing,Beijing, BeijingBeijing, BeijingBei, Beij, BeiBei, Beij, Bei #include void main( ) printf(%s,%10s,%3sn ,Beijing,Beijing, Beijing); printf(%7.3s,%.4s,%-5.3sn,Beijing,Beijing,Beijing);

13、程序中格式說明符“%.4s”,僅指定了n,沒有指定m,自動使m=n=4,故占4列;%-5.3s以左對齊的方式輸出,共占5列輸出3個字符。183 f 格式符用來輸出實數(shù)(包括單精度、雙精度),以小數(shù)形式輸出。有格式符用來輸出實數(shù)(包括單精度、雙精度),以小數(shù)形式輸出。有以下用法:以下用法: %f 不指定字段寬度,由系統(tǒng)自動指定,使整數(shù)部分全部輸出,并輸出6位小數(shù)。 %m.nf 在m列(小數(shù)點也算一位)的位置上以右對齊的方式輸出一個實數(shù),保留n位小數(shù),系統(tǒng)自動對數(shù)據(jù)進行四舍五入的處理。m大于實數(shù)總寬度時,左側用空格補齊,m小于實數(shù)總寬度時,系統(tǒng)按實際寬度輸出該實數(shù)。%-m.nf在m列(小數(shù)點也算一

14、位)的位置上以左對齊的方式輸出一個實數(shù),保留n位小數(shù),系統(tǒng)自動對數(shù)據(jù)進行四舍五入的處理。m大于實數(shù)總寬度時,右側用空格補齊,m小于實數(shù)總寬度時,系統(tǒng)按實際寬度輸出該實數(shù)。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出193【例3.9】實數(shù)的輸出。程序運行結果如下:程序運行結果如下: 3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出 #include void main( ) /* 以不同形式輸出實數(shù) */ float f1 = 100.15799, f2 = 12.55, f3 = 1.7; /* 定義f1,f2,f3為單精度型實型變量并賦值 */ printf(%fn%fn%fn, f1, f2, f3)

15、; printf(%11.2fn%-11.3fn%6.1fn%3.0fn, f1,f1,f2,f3); 203 e或或E格式符用來以格式符用來以指數(shù)形式指數(shù)形式輸出一個實數(shù)。有輸出一個實數(shù)。有%e、%m.ne、%-m.ne等用法等用法 %e 是按標準寬度的指數(shù)形式輸出,標準寬度共 13 位。其中,尾數(shù)的整數(shù)部分占 1 位(必須是非0數(shù)字),小數(shù)點占1位,小數(shù)部分占6位,e 占1位,指數(shù)的正號或負號占1位,指數(shù)占3位。m.n與-m.n的作用與f格式符中相同?!纠?.10】請以指數(shù)形式輸出一個實數(shù)。3.2數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出程序運行結果:程序運行結果:1.234568e+005,1.2

16、35e+005,1e+005,1.2e+0053.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出 #include void main( ) float t=123456.78; printf(%e,%8.3e,%6.0e,%.1en,t,t,t,t); 21說明說明:(1)除了X、E、G可以大寫外,其它格式字符都必須小寫,如%f不能寫成%F。(2)如果需要輸出“%”,則應該在格式控制字符串內連續(xù)使用兩個%。例如: printf(%5.2f %n,1.0/3*100); 輸出:33.33%(3)格式說明與輸出的數(shù)據(jù)類型要匹配,否則得到的輸出結果可能不是原值。(4)輸出表列中的求值順序。不 同的編譯系統(tǒng)不

17、一定相同,可以從左到右,也可以從右到左。在VC環(huán)境中輸出函數(shù)的求值順序從右到左。 3.2數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出22main( ) int i=3; printf(%d %dn,i+,i+); printf(%d %dn,+i,+i); 輸出結果:3 37 6結論:若輸出項中有自增(自減)表達式時,所有前綴表達式均先自增再輸出,所有后綴表達式先輸出再自增。 3.2數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出23輸出結果:2211舉例:寫出如下程序的輸出結果。舉例:寫出如下程序的輸出結果。#includevoid main() int n=1; printf(%d%d%dn,n,+n,n-); pr

18、intf(%dn,n);3.2.3 scanf函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù)) 調用的一般形式: scanf(“格式控制字符串格式控制字符串”, 參數(shù)地址表參數(shù)地址表);作用:是按“格式控制字符串”中規(guī)定的格式,從鍵盤上輸入各輸入項的數(shù)據(jù),并依次賦給各輸入項。其中,“格式控制字符串”是用雙引號括起來的字符串,它包括格式轉換說明符和分隔符兩部分,scanf()函數(shù)的格式轉換說明符通常由“%”開始并以一個格式字符結束,用于指定各參數(shù)的輸入格式。具體具體見書上見書上表表3-3所示。所示。3.2數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出24利用取地址符利用取地址符&得到變量的地址得到變量的地址,若有多個

19、時,以逗號分隔,若有多個時,以逗號分隔在輸入數(shù)據(jù)時要注意以下幾點:在輸入數(shù)據(jù)時要注意以下幾點:1輸入數(shù)據(jù)分隔處理輸入數(shù)據(jù)分隔處理當輸入多個數(shù)據(jù)項時,可以采用以下3種方式分隔輸入的數(shù)據(jù),以便使變量獲得準確數(shù)據(jù)。 格式控制字符串之間有空白字符或無任何間隔,輸入數(shù)據(jù)時必須用空格式控制字符串之間有空白字符或無任何間隔,輸入數(shù)據(jù)時必須用空格、格、Tab鍵或回車來分隔。鍵或回車來分隔。例如:假設要給整型變量a、b賦值給25、-50,scanf()函數(shù)格式如下:scanf(%d%d,&a,&b); /* 數(shù)據(jù)間有一個空格作為分隔 */或scanf(%d%d,&a,&b); /* 數(shù)據(jù)間無任何間隔 */則用以

20、下3種方式輸入數(shù)據(jù)都是合法的:20-50 /* 數(shù)據(jù)間用空格作為分隔 */20 /* 數(shù)據(jù)間用回車作為分隔 */-5020(按Tab鍵)-50 /* 數(shù)據(jù)間用Tab鍵作為分隔 */ 3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出25如果在如果在“格式控制字符串格式控制字符串”中中有普通字符有普通字符,則在輸入數(shù)據(jù)時應輸入與這些字,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符。符相同的字符。例如:scanf(%d,%d,&a,&b);輸入數(shù)據(jù)時,數(shù)據(jù)之間必須輸入一個逗號。應輸入:100,-50scanf(x=%d,y=%d,&x,&y);應輸入:x=100,y=-50 可以通過指定輸入數(shù)據(jù)的寬度分隔輸入數(shù)

21、據(jù)。用十進制整數(shù)指定輸入數(shù)據(jù)的寬度,表示該輸入項最多可輸入的字符個數(shù)。如遇空格或不可轉換的字符,讀入的字符將減少。scanf(%4d%3d%4d,&a,&b,&c);如果執(zhí)行時從鍵盤上輸入:200808082008 則把2008賦給a,把080賦給b,把8200賦給c。3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出26如果在%后面有一個“*”,表示本項輸入,但并不賦值給相應的變量scanf(%d,%*d,%d,&x,&y);輸入:100,45,567 系統(tǒng)將 100 賦給x,567 賦給 y,也就是說第二個數(shù)據(jù) 45 被跳過。在利用現(xiàn)成的一批數(shù)據(jù)時,有時不需要其中某些數(shù)據(jù),可用此法跳過它們。3.2

22、數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出272.輸入數(shù)據(jù)結束處理輸入數(shù)據(jù)結束處理在輸入數(shù)據(jù)時,遇到以下情況時認為此數(shù)據(jù)輸入結束。 遇到空格、或者按回車鍵、Tab鍵。 遇到指定的寬度結束。例如“%3d”,只取3位。 遇到非法輸入。例如,在輸入數(shù)值數(shù)據(jù)時,遇到字母等非數(shù)值符號。例如: scanf(%3d%d%c%f,&x,&y,&s,&z);假如輸入:12345g678o.98 按照規(guī)定的寬度將123賦給整型變量x,將整數(shù)45賦給整型變量y,將字符g賦給字符型變量s,由于z為單精度實型變量,因此本應按規(guī)定將678o.98賦給實型變量z,但因678之后出現(xiàn)了字母o,因此就認為該數(shù)據(jù)到此結束,所以將678賦給

23、變量z。 3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出2833. 幾點說明和注意事項幾點說明和注意事項 在編寫程序時,往往先用在編寫程序時,往往先用printf( )函數(shù)在屏幕上輸出提示,告訴要輸入的信函數(shù)在屏幕上輸出提示,告訴要輸入的信息項息項。【例3.12】提示輸入的信息項。3.2數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出程序運行結果:程序運行結果:please input a,b,c:100,200,300 a=100,b=200,c=3003.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出 # include void main( ) int a,b,c; printf(please input a,b,c:

24、n); scanf(%d,%d,%d,&a,&b,&c); printf(a=%d,b=%d,c=%d,a,b,c); 29輸入實數(shù)時不能規(guī)定精度。輸入實數(shù)時不能規(guī)定精度。例如例如:scanf(%4.1f,&f);:scanf(%4.1f,&f);是非法的,不能企圖輸入是非法的,不能企圖輸入12.112.1。3 長度格式符為長度格式符為l和和h,l表示輸入長整型數(shù)據(jù)(如表示輸入長整型數(shù)據(jù)(如%ld)和雙精度實數(shù)()和雙精度實數(shù)(如如%lf),),h表示輸入短整型數(shù)據(jù)。表示輸入短整型數(shù)據(jù)。注意,與輸出的情況不同,輸入數(shù)據(jù)時長度格式符不能省略,如輸入double 型數(shù)據(jù)必須使用%lf或%le。例如

25、,假設x、y為double 型變量,則用scanf( )函數(shù)賦值時,必須寫為: scanf(%lf,%lf,&x,&y); 在用在用“%c”格式輸入字符時格式輸入字符時, 所有輸入的字符所有輸入的字符(包括空格字符和轉義包括空格字符和轉義字符字符)都作為有效字符。都作為有效字符。 例如: scanf(%c%c%c,&x,&y,&z); 若輸入:abc 則把字符 a 賦給變量 x,把空格字符賦給變量y,把字符b賦給變量z。若輸入 :101 則把字符 賦給變量 x,把字符1賦給變量y,把字符0賦給變量z。注意:在格式控制中盡量不要出現(xiàn)普通字符,也不要用注意:在格式控制中盡量不要出現(xiàn)普通字符,也不要

26、用n,t等轉義等轉義字符。字符。Scanf(“%d,%fn”,&a,&b); /語法上可以,但是運行時有問題,不提倡3.2數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出30【例3.13】輸入下列程序,并對結果進行分析。如果按以下兩種方式輸入:abc或 abc則輸出不正確結果:c1=a,c2=b,c3= 對對 unsigned型數(shù)據(jù),可以用型數(shù)據(jù),可以用 %u、%d 或或 %o、%x 格式輸入。格式輸入。因為第一種方式是將空格符賦給c3,第二種方式是將回車符賦給c3。33.2數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出按下列方式輸入,則運行結果正確。按下列方式輸入,則運行結果正確。

27、abc c1=a,c2=b,c3=c3.2 數(shù)據(jù)的輸入和輸出數(shù)據(jù)的輸入和輸出 #include void main( ) char c1,c2,c3; scanf(%c%c,&c1,&c2); scanf(%c,&c3); printf(c1=%c,c2=%c,c3=%cn,c1,c2,c3); 313.3【例3.14】輸入圓錐體的底面半徑和高,求圓錐體的體積和側面積。已知底面半徑(r)和高(h),求圓錐體的體積(v)和側面 積(s),可以使用下面的公式表示。 v=r2h/3 l= s=r l程序流程圖如圖所示:程序流程圖如圖所示:3.3 順序結構程序設計順序結構程序設計hhrr* 32順序結構中的語句是按照書寫的先后次序順序執(zhí)行的,每個語句都會被執(zhí)行到,并且只能執(zhí)

溫馨提示

  • 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

提交評論