版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章順序結(jié)構(gòu)程序設(shè)計(jì)3.1三種基本控制結(jié)構(gòu)和算法(1)順序結(jié)構(gòu)這是最簡單的結(jié)構(gòu),其特點(diǎn)是,每一條語句按順序執(zhí)行,每一條語句只執(zhí)行一遍,不重復(fù)執(zhí)行,也沒有語句不執(zhí)行。如下圖所示,虛線框內(nèi)是一個(gè)順序結(jié)構(gòu),其中A和B兩個(gè)框是順序執(zhí)行的。(2)選擇結(jié)構(gòu)這種結(jié)構(gòu)也稱為分支結(jié)構(gòu),其特點(diǎn)是,每一條執(zhí)行了的語句都只執(zhí)行一遍,不重復(fù)執(zhí)行,但有語句不執(zhí)行。如下圖所示,虛線框內(nèi)是一個(gè)選擇結(jié)構(gòu),其中必有一個(gè)判斷框,執(zhí)行流程根據(jù)判斷條件c的成立與否,選擇執(zhí)行其中的一路分支。(b)所示的是特殊的選擇結(jié)構(gòu),即一路為空的選擇結(jié)構(gòu)。這種選擇結(jié)構(gòu)中,當(dāng)c條件成立時(shí),執(zhí)行A操作,然后脫離選擇結(jié)構(gòu);如果c條件不成立,則直接脫離選擇結(jié)構(gòu)。(3)循環(huán)結(jié)構(gòu)這種結(jié)構(gòu)也稱為重復(fù)結(jié)構(gòu),其特點(diǎn)是,循環(huán)體在條件滿足的情況下,可反復(fù)執(zhí)行。如下圖所示,虛線框內(nèi)是一個(gè)循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)有兩種形式:當(dāng)型循環(huán)。如圖(a)所示。直到型循環(huán)。如圖(b)所示。3.1.2算法任何計(jì)算問題的求解中,都包含按照特定順序去執(zhí)行的一系列動(dòng)作。解決問題的過程稱為算法,它確定了執(zhí)行的動(dòng)作和動(dòng)作執(zhí)行的順序。例如,讀入20個(gè)整數(shù),統(tǒng)計(jì)并輸出其中為0、正數(shù)和負(fù)數(shù)的個(gè)數(shù)。對(duì)應(yīng)的求解算法如下:
定義若干變量;重復(fù)20次 輸入一個(gè)整數(shù)n;
若為0,zeros增1,若為偶數(shù)evens增1,若為奇數(shù),odds增1;輸出zeros、evens和odds的值;將該算法轉(zhuǎn)換成的程序如下:#include<stdio.h>voidmain(){intzeros=0,evens=0,odds=0; /*定義變量*/inti,n;for(i=1;i<=20;i++) /*循環(huán)20次*/{scanf("&d",&n);if(n==0) /*條件判斷*/
zeros++;elseif(n%2==0) evens++;else odds++;}printf("zeros=%d,evens=%d,odds=%d\n");}3.2順序執(zhí)行語句1.表達(dá)式語句在表達(dá)式的后面跟一個(gè)分號(hào)就構(gòu)成了一個(gè)表達(dá)式語句,最常見的就是賦值語句,它是由一個(gè)賦值表達(dá)式后跟一個(gè)分號(hào)形成,程序中的很多計(jì)算都由賦值語句完成。例如:
n=10; /*將10賦值給n變量*/x=2*x; /*將變量x的值乘以2的結(jié)果賦給變量x*/事實(shí)上,任何表達(dá)式都可以加上分號(hào)而成為語句。2.函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)調(diào)用加上分號(hào)組成的,如:
printf("%f",a); /*輸出實(shí)型變量a之值*/
函數(shù)是一段程序,這段程序可能存在于函數(shù)庫中,也可能由用戶自己定義的,當(dāng)調(diào)用函數(shù)時(shí)會(huì)轉(zhuǎn)到該段程序去執(zhí)行。函數(shù)調(diào)用是以語句的形式出現(xiàn)的,它與前后語句之間的關(guān)系是順序執(zhí)行的。3.空語句空語句是指只有一個(gè)分號(hào)的語句,即:
;
空語句也是一個(gè)語句,雖然它不產(chǎn)生任何動(dòng)作。在程序中,如果沒有什么操作需要執(zhí)行,但從語句的結(jié)構(gòu)上來說,必須有一個(gè)語句時(shí),可以書寫一個(gè)空語句。4.復(fù)合語句用大括號(hào){}把一些語句括起來,對(duì)外看作一個(gè)語句,就構(gòu)成了一個(gè)復(fù)合語句。例如:
{ a=2; b=10; c=sqrt(a*a+b*b);}
復(fù)合語句可以出現(xiàn)在允許語句出現(xiàn)的任何地方,在選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中都會(huì)看到復(fù)合語句的用途。3.3格式化輸出函數(shù)printf()
C沒有專門的輸入/輸出語句,其操作是通過調(diào)用C的庫函數(shù)來實(shí)現(xiàn)的。其中printf()函數(shù)是最常用的輸出函數(shù),它的作用是向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指顯示器)輸出一個(gè)或多個(gè)任意指定類型的數(shù)據(jù)。3.3.1printf()函數(shù)的一般格式printf()函數(shù)的原型如下:
int
printf(格式控制,輸出項(xiàng)表);例如:
printf("n=%3d,f=%5.1f\n,c=%c",n,f,c);其中,“格式控制”是用雙引號(hào)括起來的字符串,可以包含下列3種字符:(l)格式說明符:由“%”和格式字符組成,例如,“%3d”、“%5.1f”和“%c”等,這些字符用來控制數(shù)據(jù)的輸出格式。(2)轉(zhuǎn)義字符:這些字符通常用來控制光標(biāo)的位置,例如“\t”等。(3)普通字符:除格式說明符和轉(zhuǎn)義字符之外的其他字符,這些字符原樣輸出,例如上面例子中的“n=”、“f=”等。3.3.2格式說明符格式說明符用于指定對(duì)應(yīng)輸出項(xiàng)的輸出格式,其一般形式如下:
%[修飾符]格式字符1.格式字符格式字符說明c輸出一個(gè)字符d或i輸出帶符號(hào)的十進(jìn)制整數(shù)(不輸出正號(hào))o以八進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0)x或X以十六進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0x或0X)。對(duì)于0x用abcdef輸出;對(duì)于0X,用ABCDEF輸出。u按無符號(hào)的十進(jìn)制形式輸出整數(shù)。f以[-]mmm.ddd帶小數(shù)點(diǎn)的形式輸出單精度和雙精度數(shù),d的個(gè)數(shù)由精度指定。隱含的精度6,若指定的精度為0,小數(shù)部分(包括小數(shù)點(diǎn))都不輸出。e或E以[-]m.dddddde±xx或[-]m.ddddddE±xx的數(shù)形式輸出單精度和雙精度數(shù)。d的個(gè)數(shù)由精度指定,隱含的精度為6,若指定的精度為0,小數(shù)部分(包括小數(shù)點(diǎn))都不輸出。用E時(shí),指數(shù)以大寫“E”表示。g或G由系統(tǒng)決定采用%f格式還是采用%e格式,以使輸出寬度最小。不輸出無意義的0。用G時(shí),若以指數(shù)形式輸出,則指數(shù)以大寫表示。s輸出字符串中的字符,直到遇到'\0'(空字符),或者輸出由寬度指定的字符數(shù)。2.長整型修飾符長整型修飾符“l(fā)”加在“%”和格式字符之間,用于輸出長整型數(shù)據(jù):%ld:以十進(jìn)制輸出長整型數(shù)據(jù)%lo:以八進(jìn)制輸出長整型數(shù)據(jù)%lx:以十六進(jìn)制輸出長整型數(shù)據(jù)%lu:輸出無符號(hào)長整型數(shù)據(jù)例如:longa=32;printf("%ld,%lo,%lx\n",a,a,a); /*輸出為:32,40,20*/3.寬度和精度修飾可以在“%”和格式字符之間加入形如“m.n”(m、n均為整數(shù))的修飾。其中,m為寬度修飾,n為精度修飾。寬度修飾用來指定數(shù)據(jù)的輸出寬度。精度修飾對(duì)不同的格式字符,作用不同:對(duì)于格式字符f,用來指定輸出小數(shù)位的位數(shù);對(duì)于格式字符e,用來指定輸出有效數(shù)字的位數(shù);對(duì)于格式字符d,用來指定必須輸出的數(shù)字的個(gè)數(shù)。例如:4.左對(duì)齊修飾在指定了寬度修飾時(shí),如果指定寬度小于數(shù)據(jù)需要的實(shí)際寬度,則數(shù)據(jù)左邊補(bǔ)空格,補(bǔ)夠指定的寬度,這種對(duì)齊方式稱為“右對(duì)齊”。也可以在數(shù)據(jù)的右邊補(bǔ)空格來補(bǔ)夠指定的寬度,這種對(duì)齊方式稱為“左對(duì)齊”。指定左對(duì)齊的時(shí)候,使用左對(duì)齊修飾符“-”,例如:3.3.3printf()函數(shù)的使用說明調(diào)用printf()函數(shù)輸出數(shù)據(jù)時(shí),應(yīng)注意以下幾點(diǎn):(l)printf()函數(shù)可以輸出常量、變量和表達(dá)式的值。但格式控制字符串中的格式指示符必須按從左到右的順序,與輸出項(xiàng)表中的每個(gè)數(shù)據(jù)一一對(duì)應(yīng),否則出錯(cuò)。(2)格式字符x、e、g可以用小寫字母,也可以用大寫字母。使用大寫字母時(shí),輸出數(shù)據(jù)中包含的字母也大寫。除了x、e、g格式字符外,其他格式字符必須用小寫字母,例如,“%f”不能寫成“%F”。(3)格式字符緊跟在“%”后面就作為格式字符,否則將作為普通字符使用(原樣輸出)。3.4格式化輸入函數(shù)scanf()3.4.1scanf()函數(shù)的一般格式
scanf()函數(shù)的的原型如下:
int
scanf("格式控制",輸入項(xiàng)地址表);例如:
scanf("%d%f",&i,&f);
其中,“格式控制”可以包含三種類型的字符:(1)格式指示符:用來指定數(shù)據(jù)的輸入格式(2)空白字符:包括空格、跳格鍵和回車鍵,通常作為相鄰兩個(gè)輸入數(shù)據(jù)的缺省分隔符(3)非空白字符:又稱普通字符,在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入3.4.2格式指示符格式指示符的一般形式如下:%[修飾符]格式字符格式字符說明c輸入單個(gè)字符。d,i輸入有符號(hào)的十進(jìn)制整數(shù)。o輸入無符號(hào)的八進(jìn)制整數(shù)。x,X輸入無符號(hào)的十六進(jìn)制整數(shù)。u輸入無符號(hào)的十進(jìn)制整數(shù)。f輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入。e,E,g,G與f的作用相同,e與f,g可以互相替換。s輸入字符串,將字符串送到一個(gè)字符數(shù)組中,在輸入時(shí)以非空白字符開始,以第一個(gè)空白字符結(jié)束,字符串以串結(jié)束標(biāo)志'\0'作為其最后一個(gè)字符。1.寬度修飾寬度修飾用來指定輸入數(shù)據(jù)所占列數(shù),例如:
scanf("%3c%3c",&ch1,&ch2);假設(shè)輸入“abcdefg↙”,則系統(tǒng)將讀取的“abc”(開頭3個(gè)字符)中的“a”賦給變量ch1;將讀取的“def”(緊跟著的3個(gè)字符)中的“d”賦給變量ch2。2.抑制修飾符抑制修飾符“*”表示對(duì)應(yīng)的數(shù)據(jù)讀入后,不賦給相應(yīng)的變量,該變量由下一個(gè)格式指示符輸入。例如:
scanf("%2d%*2d%3d",&a,&b);假設(shè)輸入“123456789↙”,則系統(tǒng)將讀取“12”并賦值給a;讀取“34”,但舍棄掉(“*”的作用);讀取“567”并賦值給b。3.長數(shù)據(jù)修飾符長數(shù)據(jù)修飾符“l(fā)”加在“%”和格式字符之間。用于輸入長型數(shù)據(jù):%ld:以十進(jìn)制輸入長整型數(shù)據(jù)%lo:以八進(jìn)制輸入長整型數(shù)據(jù)%lx:以十六進(jìn)制輸入長整型數(shù)據(jù)%lf:輸入double型數(shù)據(jù)%le:輸入double型數(shù)據(jù)例如:
【例3.3】
編寫一個(gè)程序,輸入弧度值,將弧度換算成角度值(度、分、秒的形式)輸出。解:設(shè)x為弧度,則對(duì)應(yīng)的角度為(180*x)/π,其整數(shù)部分為度,余下的小數(shù)部分乘以60取整數(shù)部分得到分,再將余下的小數(shù)部分乘以60取整數(shù)部分得到秒。程序如下:
/*FileName:exam3_3.cpp*/#include<stdio.h>#definePI3.14159voidmain(){doublex,a,a1;
int
d,f,m; /*d為度,f為分,m為秒*/
printf("輸入弧度:");
scanf("%lf",&x); /*用格式指示符%lf輸入double型數(shù)據(jù)*/a=x*(180.0/PI);d=(int)a; /*取弧度*/a1=(a-d)*60;f=(int)a1; /*取角度*/m=int((a1-f)*60+0.5);/*取秒數(shù),0.5用于進(jìn)行四舍五入計(jì)算*/
printf("%g<==>%d度%d分%d秒\n",x,d,f,m);}3.5單個(gè)字符的輸入輸出函數(shù)除了使用printf()函數(shù)和scanf()函數(shù)可以輸出/輸入字符數(shù)據(jù)外,C還提供了putchar()和getchar()函數(shù),專門用來輸出/輸入單個(gè)字符。每調(diào)用putchar()函數(shù)一次,就向顯示器輸出一個(gè)字符,它的調(diào)用形式如下:
pu
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年聊城市茌平信發(fā)鋁制品有限公司大量招聘參考考試試題及答案解析
- 2025湖南懷化市教育局直屬學(xué)校招聘教職工65人參考考試試題及答案解析
- 2025內(nèi)蒙古鄂爾多斯羊絨服裝集團(tuán)絨紡事業(yè)部招聘20人參考考試題庫及答案解析
- 2025廣西來賓市忻城縣城鎮(zhèn)公益性崗位工作人員招聘3人備考筆試試題及答案解析
- 2025內(nèi)蒙古北疆交通天然氣有限公司招聘6人備考考試試題及答案解析
- 網(wǎng)店電子合同范本
- 職工工裝合同范本
- 聯(lián)合協(xié)議書的樣本
- 聯(lián)盟商戶合同范本
- 聯(lián)通合作合同范本
- GB/T 42796-2023鋼筋機(jī)械連接件
- 福建永定紅花崗巖(礦區(qū))介紹
- 高中物理新課標(biāo)人教必修252平拋運(yùn)動(dòng)(帶動(dòng)畫和投彈游戲)課件
- 化工農(nóng)藥制劑建設(shè)項(xiàng)目試生產(chǎn)方案備案資料
- 第5章-隧道通風(fēng)-《通風(fēng)工程(第2版)》教學(xué)課件
- 《婦產(chǎn)科學(xué)》學(xué)習(xí)指導(dǎo)及習(xí)題集及答案
- 陜西省地方電力公司及各供電分局聯(lián)系電話(常用版)
- HY/T 070-2022海域使用面積測量規(guī)范
- 2023年中石油職稱英語考試通用選讀
- GA/T 383-2014法庭科學(xué)DNA實(shí)驗(yàn)室檢驗(yàn)規(guī)范
- 六種雙贏思維模式課件
評(píng)論
0/150
提交評(píng)論