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

下載本文檔

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

文檔簡介

1、第第3章章 順序程序設計順序程序設計第第3章章 順序程序設計順序程序設計3.1 C語句概述語句概述 3.2 賦值語句賦值語句 3.3 數(shù)據(jù)的輸入與輸出數(shù)據(jù)的輸入與輸出 3.4 順序程序設計順序程序設計 3.1 C語句概述語句概述 程序由語句構(gòu)成,每次只能執(zhí)行一個語句程序由語句構(gòu)成,每次只能執(zhí)行一個語句順序結(jié)構(gòu)是根據(jù)順序結(jié)構(gòu)是根據(jù)語句語句在程序中的在程序中的先后次序順序執(zhí)行先后次序順序執(zhí)行的程序結(jié)構(gòu)的程序結(jié)構(gòu) A A B B N-S圖圖例:例:void main() a = 3; b = 4; c = a + b; 語句是表達算法的基本語言單位。語句是表達算法的基本語言單位。3.1.1 C語語言

2、言語句語句的的基本概念基本概念常量、變量、運算符、表達式等都是一些基本語法項目,由這些基常量、變量、運算符、表達式等都是一些基本語法項目,由這些基本項目,按一定的規(guī)則進行組合,并以分號結(jié)束,則可構(gòu)成各種語本項目,按一定的規(guī)則進行組合,并以分號結(jié)束,則可構(gòu)成各種語句。句。掌握掌握C語語言言語句必須抓住二個基本點語句必須抓住二個基本點:語法語法,語義語義.語法語法:就是語句就是語句的書寫規(guī)則的書寫規(guī)則.語義語義:就是語句就是語句的的含義和作含義和作用用即語句即語句的功的功能能.C語句都是語句都是“可執(zhí)行語句可執(zhí)行語句” ,沒有,沒有“非執(zhí)行語句;非執(zhí)行語句; 書寫比較自由;書寫比較自由;通常通?!?/p>

3、一行一句一行一句” 。3.1.2 C語語言言語句語句的的分類分類C語句可分為五類:表達式語句、函數(shù)調(diào)用語句、控制語語句可分為五類:表達式語句、函數(shù)調(diào)用語句、控制語句、復合語句、空語句。句、復合語句、空語句。 任何一個表達式后加上任何一個表達式后加上“;”就構(gòu)成了表達式語句,如就構(gòu)成了表達式語句,如算術(shù)表達式、關(guān)系表達式等。最典型的是用賦值表算術(shù)表達式、關(guān)系表達式等。最典型的是用賦值表達式組成的賦值語句。達式組成的賦值語句。例如:例如: i = 1; i+;1、表達式語句、表達式語句C 語言所有的操作都是通過表達式來實現(xiàn)的。語言所有的操作都是通過表達式來實現(xiàn)的。表達式語句:表達式語句: 表達式表

4、達式 ; 2、函數(shù)調(diào)用語句函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)名、括號、實際參數(shù)加上分函數(shù)調(diào)用語句由函數(shù)名、括號、實際參數(shù)加上分號號“;”組成。其一般形式為:組成。其一般形式為: 函數(shù)名函數(shù)名( 實際參數(shù)實際參數(shù)表表 ); 例:例: printf (Hello , worldn);“函數(shù)調(diào)用語句函數(shù)調(diào)用語句”也可以看成是表達式語句也可以看成是表達式語句.3、控制語句、控制語句控制語句用于控制程序的流程,以實現(xiàn)程序的各種基本結(jié)控制語句用于控制程序的流程,以實現(xiàn)程序的各種基本結(jié)構(gòu),由特定的語句定義符組成。共有構(gòu),由特定的語句定義符組成。共有9種控制語句,分成種控制語句,分成三類:三類:選擇語句選擇語句

5、、循環(huán)語句循環(huán)語句 和和轉(zhuǎn)移語句轉(zhuǎn)移語句 。C 使用控制語句控制程序的執(zhí)行,常用的控制語句有:使用控制語句控制程序的執(zhí)行,常用的控制語句有:if else switch 選擇控制選擇控制for while do while 循環(huán)控制循環(huán)控制continue break return goto 轉(zhuǎn)移轉(zhuǎn)移控制控制4、復合語句、復合語句例:例:while ( i 1) sum = sum + i; i = i + 1;說明:說明: 復合語句的復合語句的 之后不能有之后不能有 “;” 允許一行寫幾個語句,或者一條語句寫幾行允許一行寫幾個語句,或者一條語句寫幾行 復合語句中還復合語句中還可以包含復合語句

6、可以包含復合語句,即可嵌套即可嵌套,但嵌套但嵌套必必須完整須完整,不允許交叉不允許交叉.由括在由括在 內(nèi)的若干內(nèi)的若干C語句組成語句組成5、空語句、空語句 只有一個分號的語句,不產(chǎn)生任何操作只有一個分號的語句,不產(chǎn)生任何操作例:例:for ( i=1; i 100 ; i +) ;空語句什么也不做,可用來做被轉(zhuǎn)向點,或循環(huán)語句中的空語句什么也不做,可用來做被轉(zhuǎn)向點,或循環(huán)語句中的循環(huán)體(循環(huán)體是空語句,表示循環(huán)體什么也不做)。循環(huán)體(循環(huán)體是空語句,表示循環(huán)體什么也不做)。 當程序中出現(xiàn)連續(xù)的兩個分號當程序中出現(xiàn)連續(xù)的兩個分號“;”時,一般可把后面的分時,一般可把后面的分號看作空語句。號看作空

7、語句。 3.2 賦值語句賦值語句 賦值語句是由賦值表達式加上一個分號構(gòu)成的,是用于實賦值語句是由賦值表達式加上一個分號構(gòu)成的,是用于實現(xiàn)計算和賦值的一類最基本的語句。現(xiàn)計算和賦值的一類最基本的語句。其一般形式如下:其一般形式如下:可賦值對象可賦值對象v = 表達式表達式e; 注意:注意:(1)如果賦值運算符兩邊的類型不一致,則系統(tǒng)在算出表)如果賦值運算符兩邊的類型不一致,則系統(tǒng)在算出表達式的值之后,先將該值轉(zhuǎn)換為左邊變量的類型,然后再達式的值之后,先將該值轉(zhuǎn)換為左邊變量的類型,然后再賦值給左邊的變量。賦值給左邊的變量。 (2)賦值運算符)賦值運算符“=”右邊的表達式可以又是一個賦值表右邊的表達

8、式可以又是一個賦值表達式,形式為:達式,形式為: 變量變量=變量變量=表達式表達式; (3)在變量說明中,不允許連續(xù)給多個變量賦初值。)在變量說明中,不允許連續(xù)給多個變量賦初值。 3.3 數(shù)據(jù)的輸入與輸出數(shù)據(jù)的輸入與輸出 數(shù)據(jù)處理的一般過程是:數(shù)據(jù)處理的一般過程是:輸入輸入 處理處理 輸出輸出?!拜敵鲚敵觥钡墓δ苁菍⒈4嬖趦?nèi)存單元中的變量或者數(shù)組中的值顯的功能是將保存在內(nèi)存單元中的變量或者數(shù)組中的值顯示在屏幕上或者用打印機打印出來,即把信息從內(nèi)存?zhèn)魉偷酵庠O示在屏幕上或者用打印機打印出來,即把信息從內(nèi)存?zhèn)魉偷酵庠O ?!拜斎胼斎搿钡墓δ苁抢面I盤等輸入設備為變量或者數(shù)組等提供數(shù)的功能是利用鍵盤等輸

9、入設備為變量或者數(shù)組等提供數(shù)據(jù),并保存到內(nèi)存單元中,供程序計算時使用,即把信息從外設據(jù),并保存到內(nèi)存單元中,供程序計算時使用,即把信息從外設傳送到內(nèi)存。傳送到內(nèi)存。 在在C C語言中,輸入輸出操作是由編譯系統(tǒng)提供的語言中,輸入輸出操作是由編譯系統(tǒng)提供的庫函數(shù)庫函數(shù)來實現(xiàn)的。來實現(xiàn)的。使用標準輸入、輸出庫函數(shù)時要用在源文件開頭使用預編譯命令使用標準輸入、輸出庫函數(shù)時要用在源文件開頭使用預編譯命令“#include ”或或“#include stdio.h ”。主要介紹主要介紹getchargetchar()()、putcharputchar()()、scanfscanf()()、printfpr

10、intf()()等輸入、輸?shù)容斎?、輸出庫函?shù)。出庫函數(shù)。5 putchar ( c )作用:將作用:將 c所代的所代的字符輸出到顯示器上字符輸出到顯示器上例:例:#include void main ( ) char c1, c2;c1 = b; c2 = 98;putchar (c1); putchar (c2);putchar(b); putchar(98); putchar(n); putchar(101); 一、字符的輸入和輸出一、字符的輸入和輸出2、getchar函數(shù)函數(shù)格式:格式:ch = getchar( )作用:從鍵盤緩沖區(qū)讀入一個字符作用:從鍵盤緩沖區(qū)讀入一個字符 (存入變量

11、(存入變量 ch 的存儲區(qū))的存儲區(qū))例:例:#include void main( )int c;printf (Enter a character:);c = getchar( );printf (%c : %dn, c , c); 以回車結(jié)束以回車結(jié)束輸入提示輸入提示#include void main ( )char c;c = getchar( ) ;putchar( c );例:讀程序例:讀程序#include void main ( ) putchar( getchar( ) );二、格式輸入和輸出二、格式輸入和輸出printf函數(shù)的參數(shù)包括兩部分:函數(shù)的參數(shù)包括兩部分:(1)“

12、格式控制格式控制”是用雙撇號括起來的字符串是用雙撇號括起來的字符串,也稱也稱“轉(zhuǎn)換控制字符串轉(zhuǎn)換控制字符串”,它包括兩種信息它包括兩種信息。 格式說明格式說明.格式說明由格式說明由“%”和格式字符組成和格式字符組成,如如,等等.它的作它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出.格式說明總是由格式說明總是由“%”字符字符開始的。開始的。 普通字符。普通字符即需要原樣輸出的字符。普通字符。普通字符即需要原樣輸出的字符。例如上面例如上面printf函數(shù)中雙撇號內(nèi)的逗號、空格函數(shù)中雙撇號內(nèi)的逗號、空格,賦值號和換行符。賦值號和換行符。(2) “輸出表列輸出表列”是需

13、要輸出的一些數(shù)據(jù)是需要輸出的一些數(shù)據(jù),可以是常量可以是常量,變量或表達式。變量或表達式。1、格式輸出函數(shù)、格式輸出函數(shù) printf#include void main( )int i = 5; float f = 32.345;printf (i =%3d f =%5.1f n, i, f ); printf (End,n);要輸出的值要輸出的值列表列表輸出表列輸出表列格式控制格式控制作用:按指定格式向終端輸出數(shù)據(jù)作用:按指定格式向終端輸出數(shù)據(jù)形式:形式:printf(格式控制字符串,輸出項表列)(格式控制字符串,輸出項表列)例:例:格式控制字格式控制字符串的組成符串的組成i =%3df =

14、%5.1f格式說明格式說明% 5 . 1 f引導符引導符寬度寬度小數(shù)位數(shù)小數(shù)位數(shù)精度精度格式符格式符常規(guī)字符常規(guī)字符(需要原樣輸出的字符需要原樣輸出的字符)格式控制完整的格式格式控制完整的格式: % 0 m.n l/h 格式字符格式字符 輸出項的類型輸出項的類型 類型修正類型修正 輸出域的寬度及精度輸出域的寬度及精度 空位是否填空位是否填0 是否左對齊輸出是否左對齊輸出 格式說明的引導符號格式說明的引導符號數(shù)字數(shù)字注意注意:格式字符區(qū)分大小寫格式字符區(qū)分大小寫必須!必須! o 無符號八進制無符號八進制 以以8進制整數(shù)形式輸出。由于是將內(nèi)存單元中進制整數(shù)形式輸出。由于是將內(nèi)存單元中的各位的值(或

15、)按八進制形式輸出,因此輸出的的各位的值(或)按八進制形式輸出,因此輸出的數(shù)值不帶符號,即將符號位也一起作為八進制數(shù)的一部數(shù)值不帶符號,即將符號位也一起作為八進制數(shù)的一部分輸出。分輸出。例:例:int a=-1; printf(%d,%o,a,a); 在內(nèi)存單元中的存放形式(以補碼形式存放)如下:在內(nèi)存單元中的存放形式(以補碼形式存放)如下: 輸出為輸出為:, x/X 無符號十六進制以無符號十六進制以16進制數(shù)形式輸出整數(shù)。同進制數(shù)形式輸出整數(shù)。同樣不會出現(xiàn)負的十六進制數(shù)。樣不會出現(xiàn)負的十六進制數(shù)。 1)格式字符)格式字符基本的格式字符基本的格式字符 有以下幾種:有以下幾種: d 按十進制整型

16、數(shù)據(jù)的實際長度輸出。按十進制整型數(shù)據(jù)的實際長度輸出。 例例: x = 123; printf ( %d, x );例:例:int a=-1; printf(%d,%o,a,a); 在內(nèi)存單元中的存放形式(以補碼形式存放)如下:在內(nèi)存單元中的存放形式(以補碼形式存放)如下: 輸出為輸出為:,1 111111111111111用用%d輸出的結(jié)果輸出的結(jié)果 1,111,111,111,111,111 | | | | | |1 7 7 7 7 7二進數(shù)二進數(shù)111就是就是8進數(shù)進數(shù)7。因此上面的。因此上面的數(shù)用數(shù)用8進制數(shù)表示為進制數(shù)表示為17777 l x/X 無符號十六進制以無符號十六進制以16進

17、制數(shù)形式輸出整數(shù)。進制數(shù)形式輸出整數(shù)。同樣不會出現(xiàn)負的十六進制數(shù)。同樣不會出現(xiàn)負的十六進制數(shù)。l例:例:int a= -1;l printf(“%x,%o,%d”,a,a,a);l 輸出結(jié)果為輸出結(jié)果為l ffff,177777,-1l 同樣可以用同樣可以用 “%lx”輸出長整型數(shù),也可以指定輸出長整型數(shù),也可以指定 輸出字段的寬度,如輸出字段的寬度,如“%12x”。 u 不帶符號的十進制整數(shù)不帶符號的十進制整數(shù)%。用來輸出無符號。用來輸出無符號(unsigned)型數(shù)據(jù),以十進制整數(shù)形式輸出。一個有符型數(shù)據(jù),以十進制整數(shù)形式輸出。一個有符號整數(shù)(號整數(shù)(int型)也可以用型)也可以用%u格式

18、輸出;反之,一個格式輸出;反之,一個unsigned型數(shù)據(jù)也可以用型數(shù)據(jù)也可以用%d格式輸出。按相互賦值的格式輸出。按相互賦值的規(guī)則處理。規(guī)則處理。unsigned型數(shù)據(jù)也可用型數(shù)據(jù)也可用%o或或%x格式輸出。格式輸出。例:例:#include void main( ) short int b = - 2; unsigned short a = 65535u;printf (a=%hd , %ho , %hx , %hu n, a, a, a, a );printf (b=%hd , %ho , %hx , %hu n, b, b, b, b );655351111 1111 1111 111

19、121111 1111 1111 1110符號位符號位a=-1 , 177777 , ffff , 65535b=-2 , 177776 , fffe , 65534lc 輸出一字符輸出一字符,用來指定輸出字符數(shù)據(jù)的寬度用來指定輸出字符數(shù)據(jù)的寬度m 如果有如果有printf(“%3c”,c); 則輸出則輸出“ a”,即變量輸出占列,前列補空格。,即變量輸出占列,前列補空格。s 輸出一字符串輸出一字符串例例: printf (”,”N”);輸出字符串輸出字符串“N”(不包括雙引號不包括雙引號)e/E 用格式說明用格式說明 指定以指數(shù)形式輸出實數(shù)。指定以指數(shù)形式輸出實數(shù)。 例:例:printf(”

20、,123.456):輸出如下輸出如下: 1.234560 e+002 6列列 5列列 一個值在一個值在范圍內(nèi)的整數(shù),也范圍內(nèi)的整數(shù),也可以用可以用“”使之使之按字符形式輸出按字符形式輸出 C編譯系統(tǒng)自動指定給出數(shù)字部分的編譯系統(tǒng)自動指定給出數(shù)字部分的小數(shù)位數(shù)為位,指數(shù)部分占小數(shù)位數(shù)為位,指數(shù)部分占5位位 f 以小數(shù)的形式輸出實數(shù)(包括單、雙精度以小數(shù)的形式輸出實數(shù)(包括單、雙精度),以小數(shù)形式輸出,以小數(shù)形式輸出,不指定整個字段的長度不指定整個字段的長度,由系統(tǒng)自由系統(tǒng)自動指定。動指定。一般的處理方法是:整數(shù)部分全部輸出,一般的處理方法是:整數(shù)部分全部輸出,并輸出位小數(shù)。并輸出位小數(shù)。 g/G

21、 自動取自動取 e/E 和和 f 中較短的一種中較短的一種 .%g用來輸用來輸出實數(shù)出實數(shù). 它根據(jù)數(shù)值的大小,自動選格式或格式(選擇輸它根據(jù)數(shù)值的大小,自動選格式或格式(選擇輸出時占出時占寬度較小的一種),且不輸出無意義的零。寬度較小的一種),且不輸出無意義的零。例例: :若,則若,則( ,);,);輸出如下:輸出如下:123.468000123.468000 1.234680e+0021.234680e+002 123.468 123.468 10 10列列 1313列列 1010列列說明說明: :用格式輸出占列,用格式輸出占列,用用格式輸出占列,用格式輸出占列,用格式時,自動從上面兩種格

22、式中選擇短者(今以格式為短)格式時,自動從上面兩種格式中選擇短者(今以格式為短)故占列,并按格式用小數(shù)形式輸出,最后故占列,并按格式用小數(shù)形式輸出,最后3 3個小數(shù)位為個小數(shù)位為無意義的,不輸出,因此輸出無意義的,不輸出,因此輸出123.468123.468,然后右補,然后右補3 3個空格。個空格。格式用得較少。格式用得較少。 % 輸出輸出% (形如(形如 %)例例: 輸出實數(shù)時的有效位數(shù)。輸出實數(shù)時的有效位數(shù)。 #includestdio.h#include void main()void main()float x,yfloat x,y; ; x=111111.111;y=222222.2

23、22; x=111111.111;y=222222.222; printf(%fn,x+y printf(%fn,x+y);); 運行結(jié)果:運行結(jié)果:.結(jié)果中只有前七位是有結(jié)果中只有前七位是有效數(shù)字。由于效數(shù)字。由于x x和和y y是單是單精度變量,所以精度變量,所以x+yx+y也只也只能保證能保證7 7位的精度,后面位的精度,后面幾位是沒有意義的。幾位是沒有意義的。 例例:輸出雙精度數(shù)時的有效位數(shù)。輸出雙精度數(shù)時的有效位數(shù)。 #includestdio.h#include void main()void main()double x,ydouble x,y; ; x=11111111.111

24、11111; x=11111111.11111111; y=22222222.22222222; y=22222222.22222222; printf(%fn printf(%fn, x+y, x+y);); 運行結(jié)果:運行結(jié)果:33333333.333333 x x和和y y是雙精度變量,能是雙精度變量,能提供提供1616位精度,但是由位精度,但是由于用于用%f%f格式輸出,只能格式輸出,只能輸出輸出6 6位小數(shù)位小數(shù) ,有兩位,有兩位被省掉了。被省掉了。例例:#include void main( ) float a, b; char c = a; int i = 97; a = 31.

25、1111; b = 28.333;printf (%f,%7.4f n, a+b, a-b );printf (%c,%dn, c, c);printf (%c,%dn,i , i );printf (%sn, china);59.444099, 2.7781a,97a,97chinal: 對整型指長整型對整型指長整型 long例:例:% ld % lx % lo % lu對實型指雙精度對實型指雙精度double 例:例:% lf例如例如%ld. 對于對于int型數(shù)據(jù)占型數(shù)據(jù)占2字節(jié)的系統(tǒng)字節(jié)的系統(tǒng),在輸出長整型在輸出長整型數(shù)據(jù)時要在格式字符數(shù)據(jù)時要在格式字符d前面加一個英文字毋前面加一個英文

26、字毋l。例例: lang a=135790; /* 定義定義a為長整型變量為長整型變量*/ printf(“%ld,a);h:將整型格式字符修正為:將整型格式字符修正為short2)類型修正類型修正%d只適用于范只適用于范圍為圍為-3276832767的整型數(shù)的整型數(shù)據(jù),超過此范圍據(jù),超過此范圍的整數(shù),應該用的整數(shù),應該用%ld輸出輸出 說明:說明:如果用的是如果用的是VC+ 6.0,由,由于于int型和型和long型數(shù)據(jù)都分配型數(shù)據(jù)都分配4個個字節(jié),因此用字節(jié),因此用%d可以輸出可以輸出int和和long型數(shù)據(jù),不必要用型數(shù)據(jù),不必要用%ld。l3)寬度及精度)寬度及精度l寬度:對應的輸出項

27、在輸出設備上所占的字符數(shù)寬度:對應的輸出項在輸出設備上所占的字符數(shù)l精度:實型數(shù)的小數(shù)位數(shù)或字符串的有效字符數(shù)精度:實型數(shù)的小數(shù)位數(shù)或字符串的有效字符數(shù)l例例:。為指定的輸出字段的寬度。如果數(shù)據(jù)。為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于,則左端補以空格,若大于,則按的位數(shù)小于,則左端補以空格,若大于,則按實際位數(shù)輸出。實際位數(shù)輸出。l例例: printf (“%4d,%4d”,a,b);l 若若: a=123,d=12345,則輸出結(jié)果為則輸出結(jié)果為:l 123,12345例例如如: ,指定輸出的字符串占列。如果字符串本身長度大于,指定輸出的字符串占列。如果字符串本身長度大于,則突破的限制,

28、將字符串全部輸出。若串長小于,則左,則突破的限制,將字符串全部輸出。若串長小于,則左補空格。補空格。 - -,如果串長小于,則在列范圍內(nèi),字符串向左靠,如果串長小于,則在列范圍內(nèi),字符串向左靠,右補空格。右補空格。 .n.n,輸出占列,但只取字符串中左端個字符。這,輸出占列,但只取字符串中左端個字符。這個字符輸出在列的右側(cè),左補空格。個字符輸出在列的右側(cè),左補空格。 . .,其中、含義同上,個字符輸出在列范,其中、含義同上,個字符輸出在列范圍的左側(cè),右補空格。如果,則自動取值,即保證圍的左側(cè),右補空格。如果,則自動取值,即保證個字符正常輸出。個字符正常輸出。 . ., ,指定輸出的實數(shù)共占列,

29、其中有位小數(shù)。如果指定輸出的實數(shù)共占列,其中有位小數(shù)。如果數(shù)值長度小于,則左端補空格。數(shù)值長度小于,則左端補空格。 . .與與. .基本相同,只是使輸出的數(shù)值向左端基本相同,只是使輸出的數(shù)值向左端靠,右端補空格???,右端補空格。 m.nem.ne和和-m.ne-m.ne。、和。、和“”字符的含義與前相同。字符的含義與前相同。 此處指擬輸出的數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。此處指擬輸出的數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。 若,則:若,則: printf(%eprintf(%e %10e %10.2e %.2e %-10.2e %10e %10.2e %.2e %-10.2e,f f,f

30、 f,f f,f f,f); f); 輸出如下:輸出如下:1.234560e+0021.234560e+002 1.234560e+0021.234560e+002 1.23e+0021.23e+002 1.23e+0021.23e+002 13 13列列 1313列列 1010列列 9 9列列 1.23e+002 1.23e+002 10 10列列說明說明: :未指定,自動使未指定,自動使. .超過給定的列,乃突破列的限制,按實際長度輸出。超過給定的列,乃突破列的限制,按實際長度輸出。第第3 3個數(shù)據(jù)共占列,小數(shù)部分占列。個數(shù)據(jù)共占列,小數(shù)部分占列。只指定,未指定,自動使等于數(shù)據(jù)應占的長度。

31、只指定,未指定,自動使等于數(shù)據(jù)應占的長度。第第5 5個數(shù)據(jù)應占列,數(shù)值只有列,由于是個數(shù)據(jù)應占列,數(shù)值只有列,由于是“”,數(shù)值向左靠,右補一個空格。數(shù)值向左靠,右補一個空格。( (注:有的注:有的C C系統(tǒng)的輸出格式與此略有不同系統(tǒng)的輸出格式與此略有不同) ) #include void main( )int i = 79; float x; double y, z;x = y =333.1234567890123456789;z =555.1234567890123456789;printf (%5d n,i );printf (%f, %en, x,z );printf (%.8fn,y

32、);printf (%.3e, %2.5fn, z, y );printf (%2en, z );printf (%3s, %5.2s, %-5.3sn, china, china, china); 79333.123444, -5.551235e+002333.12345679-5.551e+002, 333.12346-5.551235e+002china, ch, chi例例:4)空位的填充)空位的填充5)對齊方式)對齊方式數(shù)數(shù)0 0用以指定數(shù)字前的空位是否用用以指定數(shù)字前的空位是否用0 0填補填補負號指定左對齊輸出負號指定左對齊輸出#include void main( ) float

33、 a=1.23;printf (% 08.1fn, a );printf (% 15s |% 8.2fn, Zhang Wei, a ); printf (% -15s |%-8.2f n, Li Chang, a );000001.2 Zhang Wei | 1.23Li Chang |1.23例例3.9無符號數(shù)據(jù)的輸出。無符號數(shù)據(jù)的輸出。#includestdio.h#include void main()void main() unsigned intunsigned int a=65535;int b=-2; a=65535;int b=-2;printf(“aprintf(“a=%d

34、,%o,%x,%un”,a,a,a,a=%d,%o,%x,%un”,a,a,a,a););printf(“bprintf(“b=%d,%o,%x,%un”,b,b,b,b=%d,%o,%x,%un”,b,b,b,b);); Turbo C 2.0Turbo C 2.0環(huán)境下的運行結(jié)果環(huán)境下的運行結(jié)果: : a=-1a=-1,177777177777,ffffffff,6553565535b=-2b=-2,177776177776,fffefffe,6553465534VC+6.0VC+6.0環(huán)境下的運行結(jié)果環(huán)境下的運行結(jié)果: : a=65535a=65535,177777177777,ffff

35、ffff,6553565535=-2=-2,3777777777637777777776,fffffffefffffffe,42949672944294967294例例: 字符串的輸出。字符串的輸出。#includestdio.h#include void main()void main() printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”);“CHINA”, “CHINA”, “CHINA”); 運行結(jié)果:運行結(jié)果: CHI

36、NACHINA, CH , CHIN, CHICH , CHIN, CHI例例:輸出實數(shù)時指定小數(shù)位數(shù)輸出實數(shù)時指定小數(shù)位數(shù)。#include stdio.h#include void void ()() float f=123.456;float f=123.456;printf(“%fprintf(“%f %10f %10.2f %.2f% -10.2f %10f %10.2f %.2f% -10.2fn”n”,f f,f f,f f,f f,f);f); 運行結(jié)果:運行結(jié)果:123.456001 123.456001123.456001 123.456001 123.46 123.46

37、123.46 123.46 123.46 123.46 例例3.12求求3個圓的周長,輸出結(jié)果時上下按小數(shù)點對齊,取兩位小數(shù)。個圓的周長,輸出結(jié)果時上下按小數(shù)點對齊,取兩位小數(shù)。 #include stdio.h#include #define PI 3.1415926#define PI 3.1415926void main ( )void main ( )double r1=1.53,r2=21.83,r3=123.71,s1,s2,s3;double r1=1.53,r2=21.83,r3=123.71,s1,s2,s3; s1=2.0 s1=2.0* *PIPI* *r1;r1; s2

38、=2.0 s2=2.0* *PIPI* *r2;r2; s3=2.0 s3=2.0* *PIPI* *r3;r3; printf(r1=%10.2fnr2=%10.2fnr3=%10.2fn,r1,r2,printf(r1=%10.2fnr2=%10.2fnr3=%10.2fn,r1,r2,r3);r3); 運行結(jié)果:運行結(jié)果:r1= 1.53r1= 1.53r2= 21.83r2= 21.83r3= 123.71r3= 123.71關(guān)于關(guān)于 printf 的說明的說明:2、編譯程序只是檢查、編譯程序只是檢查 printf 函數(shù)的調(diào)用形函數(shù)的調(diào)用形 式,不分析格式控制字符串的合法性式,不分析格

39、式控制字符串的合法性1、可以輸出轉(zhuǎn)義字符可以輸出轉(zhuǎn)義字符3、如果格式字符與輸出項的類型不匹配,如果格式字符與輸出項的類型不匹配, 不進行類型轉(zhuǎn)換!不進行類型轉(zhuǎn)換!4、格式字符要區(qū)分大小寫。、格式字符要區(qū)分大小寫。 2、格式輸入函數(shù)、格式輸入函數(shù) scanf1)地址項)地址項由由取地址運算符取地址運算符 & 及變量名組成,如:及變量名組成,如:&a作用:按格式參數(shù)的要求將數(shù)據(jù)從終端傳送到地作用:按格式參數(shù)的要求將數(shù)據(jù)從終端傳送到地址參數(shù)所指定的內(nèi)存空間址參數(shù)所指定的內(nèi)存空間格式:格式:scanf (格式控制字符串,地址項表列格式控制字符串,地址項表列)同同printf函數(shù)函數(shù)是由

40、若干個地址組成的表列,可以是變量的是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址地址,或字符串的首地址例:例:#include void main( )int a;float b;scanf (%d%f, &a, &b);printf(%d, %fn, a, b);讀入數(shù)據(jù)讀入數(shù)據(jù)2312.345分配內(nèi)存空間分配內(nèi)存空間取得首地址取得首地址輸出數(shù)據(jù)輸出數(shù)據(jù)2)格式控制字符串格式控制字符串 % m l/h 格式字符格式字符 輸入的數(shù)據(jù)類型和格式輸入的數(shù)據(jù)類型和格式 類型修正類型修正 寬度寬度 附加說明附加說明 引導符號引導符號 完整格式:完整格式:附加格式說附加格式

41、說明字符明字符格式字符格式字符說明說明d, i用來輸入有符號的十進制整數(shù)用來輸入有符號的十進制整數(shù) u用來輸入無符號的十進制整數(shù)用來輸入無符號的十進制整數(shù) o用來輸入無符號的八進制整數(shù)用來輸入無符號的八進制整數(shù) x X 用來輸入無符號的十六進制整數(shù)用來輸入無符號的十六進制整數(shù)(大小寫作用相同大小寫作用相同) c用來輸入單個字符用來輸入單個字符 s用來輸入字符串,將字符串送到一個字符數(shù)組中,用來輸入字符串,將字符串送到一個字符數(shù)組中,在輸入時以非空白字符開始,以第一個空白字符結(jié)在輸入時以非空白字符開始,以第一個空白字符結(jié)束。字符串以串結(jié)束標志束。字符串以串結(jié)束標志作為其最后一個字符作為其最后一個

42、字符 f用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入 e E g G 與作用相同,與、與作用相同,與、g可以互相替換可以互相替換(大小寫作大小寫作用相同用相同) 表表 scanfscanf格式字符格式字符 字符字符說明說明l用于輸入長整型數(shù)據(jù)(可用用于輸入長整型數(shù)據(jù)(可用%ld,%lo,%lx,%lu)以及)以及double型數(shù)據(jù)(用型數(shù)據(jù)(用%lf或或%le) h用于輸入短整型數(shù)據(jù)(可用,用于輸入短整型數(shù)據(jù)(可用,) 域?qū)捰驅(qū)抦指定輸入數(shù)據(jù)所占寬度(列數(shù)),域?qū)拺獮檎付ㄝ斎霐?shù)據(jù)所占寬度(列數(shù)),域?qū)拺獮檎麛?shù)數(shù) 表示本輸入項在讀入后不賦給相應的變量

43、表示本輸入項在讀入后不賦給相應的變量 scanfscanf的附加格式說明字符的附加格式說明字符 lscanf函數(shù)中的函數(shù)中的“格式控制格式控制”后面應當是后面應當是變量地址,而不應是變量名。變量地址,而不應是變量名。l(2) 如果在如果在“格式控制格式控制”字符串中除了格式字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時在說明以外還有其他字符,則在輸入數(shù)據(jù)時在對應位置應輸入與這些字符相同的字符。對應位置應輸入與這些字符相同的字符。 l(3) 在用在用“”格式輸入字符時,空格字格式輸入字符時,空格字符和符和“轉(zhuǎn)義字符轉(zhuǎn)義字符”都作為有效字符輸入。都作為有效字符輸入。 l(4)在輸入數(shù)據(jù)時,空

44、格,在輸入數(shù)據(jù)時,空格, “回車回車”、“跳跳格格”(Tab)鍵或遇非法輸入,認為該數(shù)據(jù))鍵或遇非法輸入,認為該數(shù)據(jù)結(jié)束。結(jié)束。 說明:說明:l(5) 對對unsigned型變量所需要的數(shù)據(jù),可以用型變量所需要的數(shù)據(jù),可以用%u,%d或或%o,%x格式輸入。格式輸入。l可以指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動按它截可以指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。取所需數(shù)據(jù)。l如果在如果在%后有一個后有一個“*”附加說明符,表示跳過它附加說明符,表示跳過它指定的列數(shù)。指定的列數(shù)。l輸入數(shù)據(jù)時不能規(guī)定精度。輸入數(shù)據(jù)時不能規(guī)定精度。例例:#include void main( ) int a, b

45、, c, d, e, f;scanf (%d%d, &a, &b );printf (%d, %dn, a, b );scanf (%d,%d, &c, &d );printf (%d, %dn, c, d );scanf (%d%d, &e, &f); printf (%d, %dn, e, f );scanf (%3d%3d, &a, &b );printf (%d, %dn, a, b ); 例例: 用用scanf函數(shù)輸入數(shù)據(jù)。函數(shù)輸入數(shù)據(jù)。#includestdio.h#include void main()void ma

46、in() intint a,b,c a,b,c; ;scanf(“%d%d%d”,&a,&b,&cscanf(“%d%d%d”,&a,&b,&c););printf(“%d,%d,%dn”,a,b,cprintf(“%d,%d,%dn”,a,b,c);); 運行情況:運行情況:3 4 5 (3 4 5 (輸入輸入a,b,ca,b,c的值,的值,) )3 3,4 4,5 5 (輸出(輸出a,b,ca,b,c的值)的值)a a在內(nèi)存中的地址在內(nèi)存中的地址& &是地址運算符是地址運算符輸入數(shù)據(jù)時,在兩輸入數(shù)據(jù)時,在兩個數(shù)據(jù)之間以一個個數(shù)

47、據(jù)之間以一個或多個空格間隔,或多個空格間隔,也可以用也可以用Enter鍵、鍵、T鍵。鍵。 根據(jù)格式字符的含義取數(shù)據(jù)根據(jù)格式字符的含義取數(shù)據(jù),當輸入流中的數(shù)當輸入流中的數(shù)據(jù)類型與格式字符的要求不符時結(jié)束此數(shù)據(jù)項據(jù)類型與格式字符的要求不符時結(jié)束此數(shù)據(jù)項 根據(jù)格式中指定的域?qū)挿指魯?shù)據(jù)項根據(jù)格式中指定的域?qū)挿指魯?shù)據(jù)項 采用隱含的分隔符(采用隱含的分隔符(空格空格,Enter鍵鍵,T鍵鍵) 采用顯示的分隔符采用顯示的分隔符3) 輸入數(shù)據(jù)的分隔輸入數(shù)據(jù)的分隔例例:#include void main ( ) int a; char b; float c;printf(input a, b, c: );sc

48、anf(%d%c%f , &a, &b, &c);printf(a=%d, b=%c, c=%fn, a, b, c);例例:#include void main( ) int a;float b, c;scanf (%2d%3f%2f, &a, &b, &c);printf (a=%d, b=%f, c=%fn,a, b, c); 如如:輸入輸入 12345678 輸出輸出:a=12,b=345.000000,c=67.000000如如:輸入輸入 12.345678輸出輸出:a=12,b=0.340000,c=56.000000如如:輸入輸入

49、12,345678輸出輸出:a=12,b=-10374176.000000, c=-10374176.000000(格式項與輸入域不匹配格式項與輸入域不匹配,輸入結(jié)束輸入結(jié)束,造成造成錯錯誤誤)4)scanf 的停止與返回的停止與返回 正常結(jié)束正常結(jié)束 格式項與輸入域不匹配格式項與輸入域不匹配思考思考: 在在“格式控制格式控制”字符串中字符串中, 除了格除了格式說明外還有其它字符怎么錄入數(shù)據(jù)式說明外還有其它字符怎么錄入數(shù)據(jù)?如:如:scanf (Enter a number?%d, &n );3.4 順序程序設計順序程序設計例例1: 輸入一個大寫字母,轉(zhuǎn)化為小寫字母輸出。輸入一個大寫字

50、母,轉(zhuǎn)化為小寫字母輸出。算法:算法:1)輸入一個大寫字母,存入)輸入一個大寫字母,存入 c2)將)將 c 轉(zhuǎn)化為小寫字母轉(zhuǎn)化為小寫字母 c+32, 并仍存入并仍存入 c3)輸出字母)輸出字母 c輸入輸入 cc + 32 = c輸出輸出 c例例1: 輸入一個大寫字母,轉(zhuǎn)化為小寫字母輸出輸入一個大寫字母,轉(zhuǎn)化為小寫字母輸出。#include void main( ) char c;printf (輸入一個字符輸入一個字符:);c = getchar( );c = c + 32;putchar( c );從鍵盤輸入一個大從鍵盤輸入一個大寫字母并存入字符寫字母并存入字符變量變量c中中將字符變量將字符變

51、量c加加32再存入再存入c中中將字符變量將字符變量c輸出輸出到屏幕上到屏幕上例例2: 求任意兩個整數(shù)的和。求任意兩個整數(shù)的和。 分析:分析:如果問題中出現(xiàn)如果問題中出現(xiàn)“任意任意”等字眼,通常意味著等字眼,通常意味著,程序所處理的數(shù)據(jù)是在運行程序時從鍵盤輸,程序所處理的數(shù)據(jù)是在運行程序時從鍵盤輸入的。輸入整數(shù)的方法是調(diào)用入的。輸入整數(shù)的方法是調(diào)用scanf函數(shù)。函數(shù)。 輸入兩個整數(shù)輸入兩個整數(shù)a、bsum=a+b輸出和輸出和sum#include void main( ) int a, b, sum; printf (輸入用逗號分隔的兩個整數(shù):輸入用逗號分隔的兩個整數(shù):); /* 輸入提示輸入

52、提示 */ scanf(%d,%d, &a, &b); /* 格式輸入語句格式輸入語句 */ sum = a + b; /* 賦值語句賦值語句 */ printf(%d和和%d的和是的和是%d, a, b, sum); /* 格式輸出語句格式輸出語句 */例例3:求方程:求方程 ax2 + bx + c = 0 的根。的根。設設 b 24ac 0 , 輸入輸入 a , b, c 的值的值, 輸出方程的根。輸出方程的根。求解過程:求解過程:ax2 + bx + c = 0dt = b2 - 4acx1 = (-b + dt ) / 2ax2 = (-b - dt ) / 2a說明

53、:說明:1、C中不能用上下標中不能用上下標2、求平方根需要使用、求平方根需要使用數(shù)學函數(shù)庫數(shù)學函數(shù)庫輸入 a, b, cdt = sqrt (b2 - 4ac)x1 = (-b + dt ) / 2ax2 = (-b - dt ) / 2a輸出 x1, x2#include #include void main( ) float a, b, c, x1, x2, dt;printf (輸入輸入 a, b, c: ) ;scanf (%f %f %f, &a, &b, &c);dt = sqrt (b*b 4*a *c );x1 = (-b + dt ) / ( 2*a)

54、 ; x2 = (-b - dt ) / ( 2*a) ; printf (%6.2fx*x+%6.2fx+%6.2f = 0n, a, b, c);printf (x1: %ftx2: %fn, x1, x2);例例4: 求已知三角形的兩條邊及其夾角,求其第三邊長度。求已知三角形的兩條邊及其夾角,求其第三邊長度。 分析:分析: 根據(jù)題目給定的條件,數(shù)學上利用余弦定理求第根據(jù)題目給定的條件,數(shù)學上利用余弦定理求第三邊的長度三邊的長度。輸入三角形的兩條邊及其夾角輸入三角形的兩條邊及其夾角a、b、alpha將將alpha由度轉(zhuǎn)換成弧度,并賦給由度轉(zhuǎn)換成弧度,并賦給x計算余弦定理根號中的部分,并賦給

55、計算余弦定理根號中的部分,并賦給y計算計算y的平方根,并賦給的平方根,并賦給c輸出第三邊輸出第三邊c#define PI 3.14 /* 定義符號常量定義符號常量PI */#include stdio.h#include math.hvoid main() float a, b, c, x, y; float alpha; printf(Input a、b、alpha:); /* 輸入提示輸入提示 */ scanf(%f, %f, %f, &a, &b, &alpha);/* 輸入兩條邊及輸入兩條邊及夾角夾角 */ x = alpha * PI / 180; /* 將將

56、alpha由度轉(zhuǎn)換成弧度由度轉(zhuǎn)換成弧度 */ y = a*a + b*b - 2*a*b*cos(x); /* 利用余弦定理求第三邊利用余弦定理求第三邊的長度的長度 */ c = sqrt( y ); printf(c = %7.3fn, c); l ENDl以下敘述中錯誤的是 。(2007.04)lA)C語言是一種結(jié)構(gòu)化程序設計語言lB)結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成lC)使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決一簡單問題lD)結(jié)構(gòu)化程序設計提倡模塊化的設計方法l解析:結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu),己經(jīng)證明,由三種基本結(jié)構(gòu)組成的算法結(jié)構(gòu)可以解決任何復雜問

57、題。l答案:C l以下能正確定義且賦初值的語句是 。(2005.09) A)int n1=n2=10; B)char c=32; C)float f=f+1.1; D)double x=12.3E2.5l解析:C語言中規(guī)定,程序中所要用到的變量應該先定義后使用。因此選項A和C都是錯誤的。選項D中,E的后面只能為整數(shù),不能是實數(shù)。所以D也是錯誤的。只有選項B是正確的,char和int是通用的。l答案:Bl有以下程序,其中%u表示按無符號整數(shù)輸出:#include int main(void)unsigned int x = 0 xFFFF;/* x的初值為十六進制數(shù) */printf(%un,

58、x);return 0;l程序運行后的輸出結(jié)果是。(2007.04) A)-1 B)65535 C)32767 D)0XFFFFl解析:u的作用是按無符號的十進制形式輸出整型數(shù),無符號數(shù)不能表示成小于0的負數(shù),十六進制數(shù)0 xFFFF轉(zhuǎn)換為二進制數(shù)是16個1,代表整數(shù)就是65535。l答案:Bl設有定義:“float x=123.4567;”,則執(zhí)行以下語句后的輸出結(jié)構(gòu)是。(2006.09)printf(%fn, (int)(x * 100 + 0.5) / 100.0);l解析:“printf(格式控制,輸出項表)”中%f,默認以6位小數(shù)輸出“(int)(x*100+0.5)”將表達式“(x

59、* 100+0.5)”的值強制轉(zhuǎn)換為整型。l答案:123.460000l以下程序運行后的輸出結(jié)果是。(2006.09)#include int main(void)int m = 011, n = 11;printf(%d %dn, +m, n+);return 0;l解析:賦值表達式m=011中的常數(shù)011為八進制,+m后以十進制數(shù)格式“%d”輸出為10。l答案:10 11l若變量a, b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的輸出語句。(2006.04)l解析:printf函數(shù)的一般格式為. “printf(格式控制,輸出表列)

60、”。l答案:printf(a=%d,b=%d,a,b);l以下程序運行后的輸出結(jié)果是。(2005.09)#include int main(void)int x = 0210;printf(%xn, x);return 0;l解析:C語言中以0打頭的整數(shù)為八進制表示,則x的十進制表示為2*64+1*8=136,%x表示以16進制輸出,136的十六進制表示應為88H.所以輸出結(jié)果為88。l答案:88l設變量均已正確定義,若要通過“scanf(%d%c%d%c,&al,&cl,&a2,&c2);”語句為變量al和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式正確的是(注:代表空格字符)。(2007.04)A) l0 X 20 YB) 10 X20 YC) 10 XD) 10X 20 Y 20Yl解析:當從鍵盤輸入字符,并且在格式說明中未制定寬度時,輸入字符(包括空格符、回車符、Tab符)將

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論