




已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本章要求:,了解結(jié)構(gòu)化程序的算法描述 掌握C語言中數(shù)據(jù)的輸入/輸出方法 順序結(jié)構(gòu)程序設(shè)計(jì),本章重點(diǎn): C程序中數(shù)據(jù)的輸入/輸出方法,順序、選擇、循環(huán) (分支),一、什么是算法,算法是解決一個(gè)問題采取的方法和步驟的描述 。,1有窮性:算法須在執(zhí)行有窮多個(gè)計(jì)算步驟后終止 2確定性:算法的每個(gè)步驟必須都是精確定義的、無二義性的; 3有效性:算法中的每一個(gè)步驟必須有效地執(zhí)行,并能得到確定結(jié)果; 4輸入:一個(gè)算法中可以沒有輸入,也可以有一個(gè)或多個(gè)輸入信息 5輸出:一個(gè)算法應(yīng)有一個(gè)或多個(gè)輸出,算法的特性:,(一)自然語言與偽代碼表示算法 自然語言就是指人們?nèi)粘J褂玫恼Z言,可以是漢語、英語或其它語言。 偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)(包括數(shù)學(xué)符號(hào))來描述算法。,二、算法的表示,例的偽代碼表示如下: Begin(算法開始) 輸入 A,B,C IF AB 則 AMax 否則 BMax IF CMax 則 CMax Print Max End (算法結(jié)束),例: 輸入三個(gè)數(shù),然后輸出其中最大的數(shù)。 算法可以寫成: (1) 輸入A,B,C。 (2) 若AB,則MAX A;否則MAXB。 (3) 若CMAX,則MAX C。 (4) 輸出MAX,MAX即為最大數(shù)。,結(jié)構(gòu)化程序的算法描述:,1常用的流程符號(hào) l 起止框:表示算法的開始和結(jié)束。 l 處理框:表示初始化或運(yùn)算賦值等操作。 l 輸入輸出框:表示數(shù)據(jù)的輸入輸出操作。 l 判斷框:表示根據(jù)一個(gè)條件成立與否,決定執(zhí)行兩種不同操作中的其中一個(gè)。 l 流程線:表示流程的方向。,(二)用流程圖表示算法,用流程圖表示如下圖所示:,例: 輸入三個(gè)數(shù),然后輸出其中最大的數(shù)。,(三)用NS流程圖表示算法,C語言中實(shí)現(xiàn)順序結(jié)構(gòu)的語句:賦值語句、變量聲明語句、符號(hào)常量聲明語句等。,三、賦值語句,賦值語句是由賦值表達(dá)式再加分號(hào)構(gòu)成的表達(dá)式語句。 其一般形式為: 變量=表達(dá)式;,1賦值符“=”右邊的表達(dá)式可以又是一個(gè)賦值表達(dá)式 因此,下述形式是正確的:變量=(變量=表達(dá)式); 其展開之后的一般形式為:變量=變量=表達(dá)式;,例如:a=b=c=d=e=5;按照賦值運(yùn)算符的右結(jié)合性,因此實(shí)際上等效于: e=5; d=e; c=d; b=c; a=b;,2.注意變量說明中給變量賦初值和賦值語句的區(qū)別。 給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號(hào)間隔,而賦值語句則必須用分號(hào)結(jié)尾。 3.在變量說明中,不允許連續(xù)給多個(gè)變量賦初值。 如下述說明是錯(cuò)誤的:int a=b=c=5; 必須寫為 int a=5,b=5,c=5; 而賦值語句允許連續(xù)賦值。 4.注意賦值表達(dá)式和賦值語句的區(qū)別。賦值表達(dá)式是一種表達(dá)式,它可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,而賦值語句則不能。 下述語句是合法的:if(x=y+5)0) z=x; 下述語句是非法的:if(x=y+5;)0) z=x; 說明:右邊的表達(dá)式可以是變量、常量、函數(shù)調(diào)用等表達(dá)式。,5語句中的“=”稱為賦值號(hào),它不同于數(shù)學(xué)中的等號(hào),如A=A+1在數(shù)學(xué)中是不成立的,但在程序設(shè)計(jì)中表示取變量A單元中的值,將其加1后,仍然放回到A變量的存儲(chǔ)單元 。 6、賦值符號(hào)“=”左邊一定只能是變量名,不能是常量、符號(hào)常量、表達(dá)式。,例如:z=x+y; 是合法的。 下面的賦值語句都是錯(cuò)的: 5=x; /* 左邊是常量 */ sin(x)=20; /* 左邊是函數(shù)調(diào)用,即是表達(dá)式 */,7賦值符號(hào)“=”兩邊的數(shù)據(jù)類型一般要求應(yīng)一致。 如果兩邊的類型不同,則以左邊變量或?qū)ο髮傩缘臄?shù)據(jù)類型為基準(zhǔn),如果右邊表達(dá)式結(jié)果的數(shù)據(jù)類型能夠轉(zhuǎn)換成左邊變量或?qū)ο髮傩缘臄?shù)據(jù)類型,則先強(qiáng)制轉(zhuǎn)換后,賦值給左邊的變量。若都是數(shù)值型,但精度不同,強(qiáng)制轉(zhuǎn)換成左邊變量的數(shù)據(jù)精度。,例如,有定義 int x; float y; x=3.5415926; /* 取其整數(shù)賦值給x,x的值為3 */ y=123; /* 將整數(shù)123轉(zhuǎn)換實(shí)數(shù)123.0,賦值給y,執(zhí)行 后,y的值是123.0 (小數(shù)點(diǎn)補(bǔ)六個(gè)0)*/,數(shù)據(jù)輸入/輸出的概念,內(nèi)存,RAM,從鍵盤將數(shù)據(jù)輸入,從數(shù)據(jù)文件讀入,將數(shù)據(jù)輸出到屏幕,將數(shù)據(jù)輸出到文件,數(shù)據(jù)輸入/輸出是相對(duì)計(jì)算機(jī)內(nèi)存,在語言中所有的數(shù)據(jù)輸入輸出都是由庫函數(shù)完成的。 因此都是函數(shù)語句。在C語言中使用庫函數(shù)時(shí),要使用預(yù)編譯命令#include 將相關(guān)的頭文件(*.h)包含到用戶源文件中。 使用形式: #include “頭文件” 或 #include ,說明:1. 標(biāo)準(zhǔn)輸入/輸出頭文件是:stdio.h 2. printf() 和 scanf()函數(shù)不需要頭包含文件 3.常用的輸入輸出函數(shù)有: printf() scanf() putchar() getchar(),四、數(shù)據(jù)格式輸入scanf()函數(shù),scanf()的功能:從鍵盤上輸入數(shù)據(jù),該輸入數(shù)據(jù)按指定的輸入格式被賦給相應(yīng)的輸入項(xiàng)。 函數(shù)一般格式為: scanf(“控制字符串“,輸入項(xiàng)地址列表); 控制字符串規(guī)定數(shù)據(jù)的輸入格式,其內(nèi)容由格式說明和普通字符兩部分組成。 輸入項(xiàng)地址列表由一個(gè)或多個(gè)變量地址組成,各變量地址之間用逗號(hào)“,”分隔。 scanf()中各變量要加地址操作符,表示如下: &變量名,scanf(“%d,%d,%c“,,控制字符串的兩個(gè)組成部分:格式說明和普通字符。,1. 格式說明 格式說明規(guī)定輸入項(xiàng)中的變量以何種類型的數(shù)據(jù)格式被輸入, 形式是: % 各個(gè)格式字符及其意義見表3-3。,各修飾符是可選的,這些修飾符是: (1)字段寬度 (2) l和h:可與d、o、x一起使用,l表示輸入數(shù)據(jù)為長(zhǎng)整數(shù),h表示輸入數(shù)據(jù)為短整數(shù)。 (3)字符*:表示按規(guī)定格式輸入但不賦予相應(yīng)變量,作用是跳過相應(yīng)的數(shù)據(jù)。,例:scanf(“%3d”,&a);輸入123456,按寬度輸入一個(gè)整數(shù)123賦給變量a。,例:scanf(“%ld%hd“,&x,&i);x按長(zhǎng)整型讀入,i按短整數(shù)讀入。,例如:scanf(“%d%*d%d”,&x,&y,&z);執(zhí)行該語句,若輸入為“ ” 結(jié)果為x=1,y=3,z未賦值,被跳過。,/* EX3-11.C */ #include main() int x,y; scanf(“%2d%*3d%4d“, ,2.普通字符 普通字符包括空格、轉(zhuǎn)義字符和可打印字符。 (1)空格 在有多個(gè)輸入項(xiàng)時(shí),一般用空格或回車作為分隔符,若以空格作分隔符,則當(dāng)輸入項(xiàng)中包含字符類型時(shí),可能產(chǎn)生非預(yù)期的結(jié)果, (2)可打印字符,例如:scanf(“%d%c“,&a,&ch); 輸入32 q 期望a=32,ch=q,但實(shí)際上,分隔符空格被讀入并賦給ch。,例如:scanf(“%d,%d,%c“, 當(dāng)輸入為:1,2,q 即:a=1,b=2,ch=q 若輸入為1 2 q 除a=1正確賦值外,對(duì)b與ch的賦值都不能正確賦值。這些不打印字符應(yīng)是輸入數(shù)據(jù)分隔符,scanf在讀入時(shí)自動(dòng)去除與可打印字符相同的字符。,使用scanf函數(shù)還必須注意以下幾點(diǎn): (1) scanf函數(shù)中沒有精度控制 。 如: scanf(“%5.2f”, 則輸入應(yīng)為 a=5,b=6,c=7,五、 數(shù)據(jù)格式輸出printf()函數(shù),格式化輸出函數(shù)printf()功能:按控制字符串規(guī)定的格式,向輸出設(shè)備輸出各輸出項(xiàng) 其基本格式為:printf(“控制字符串”,輸出項(xiàng)列表) 輸出項(xiàng)可以是常量、變量、表達(dá)式,其類型與個(gè)數(shù)必須與控制字符串中格式字符的類型、個(gè)數(shù)一致、當(dāng)有多個(gè)輸出項(xiàng)時(shí),各項(xiàng)之間用逗號(hào)分隔。 控制字符串由格式說明和普通字符兩部分組成。,1格式說明 一般格式為:% 格式字符規(guī)定了輸出項(xiàng)的輸出格式,常用格式字符見表3-2,(1) 字段寬度修飾符 該修飾符用于確定數(shù)據(jù)輸出的寬度、精度、小數(shù)位數(shù)、對(duì)齊方式等,用于產(chǎn)生更規(guī)范整齊的輸出,下表列出了字段寬度修飾符。,例如: void main() int a=123; float x=12.345678; printf(“%5d, %5.2fn“,a,x); printf(“%2d, %2.1fn“,a,x); 程序的運(yùn)行結(jié)果如下:,說明: 當(dāng)指定寬度小于數(shù)據(jù)的實(shí)際寬度時(shí),對(duì)整數(shù),按該數(shù)的實(shí)際寬度輸出。 對(duì)浮點(diǎn)數(shù),相應(yīng)小數(shù)位的數(shù)四舍五入。若度寬小于等于浮點(diǎn)數(shù)整數(shù)部分的寬度,則該浮點(diǎn)數(shù)按實(shí)際位數(shù)輸出,但小數(shù)位數(shù)仍遵守寬度修飾符給出的值。,(2)對(duì)齊方式修飾符 一般的輸出數(shù)據(jù)為右對(duì)齊格式,加“-”號(hào),變?yōu)椤白髮?duì)齊”方式。,例如:void main() int i=123; float a=12.34567; printf(“%6d%10.4fn“,i,a); printf(“%-6d%10.4fn“,i,a); printf(“%6d%-10.4fn“,i,a); 程序運(yùn)行結(jié)果如圖所示:,(3)l和h 可以與輸出格式字符d、f、u等連用,以說明是用long型或short型格式輸出數(shù)據(jù),如: hd 短整型 lf 雙精度型 ld 長(zhǎng)整型 hu 無符號(hào)短整型,2普通字符 普通字符包括可打印字符和轉(zhuǎn)義字符。 可打印字符是一些說明字符,這些字符按原樣顯示在屏幕上 轉(zhuǎn)義字符是不可打印的字符,它們其實(shí)是一些控制字符,控制產(chǎn)生特殊的輸出效果。常用的有“t”,“n”,其中t為水平制表符,作用是跳到下一個(gè)水平制表位, “n”為回車換行符,遇到“n”,顯示自動(dòng)換到新的一行。,例如: void main() int i=123; long n=456; float a=12.34567,y=20.5; printf(“%d=4dta=%7.4fntn=%ldn“,i,a,n); printf(“y=%5.2f%n“,y);,程序運(yùn)行的輸出結(jié)果:,【注意】,(1)輸出項(xiàng)從右向左計(jì)算后,按格式說明的順序、類型和要求對(duì)應(yīng)輸出。格式說明和輸出項(xiàng)的個(gè)數(shù)類型應(yīng)相同,如不匹配系統(tǒng)不能正確輸出 格式說明的個(gè)數(shù)少于輸出項(xiàng)個(gè)數(shù),多余的輸出項(xiàng)將不輸出; 格式說明的個(gè)數(shù)多于輸出項(xiàng)個(gè)數(shù),多余的格式說明將輸出隨機(jī)的值。 整型數(shù)據(jù)按%f 輸出或者實(shí)型數(shù)據(jù)按%d 輸出,均出現(xiàn)輸出錯(cuò)誤結(jié)果。,(2)格式字符除X(表示輸出的十六進(jìn)制數(shù)用大寫字母輸出)、E(表示輸出的指數(shù)e用大寫字母E輸出)、G(表示若選用指數(shù)形式輸出,則用大寫字母E輸出)外,必須是小寫字母。如%d不能寫成%D。 (3)若想輸出字符“%”,則在格式字符串中用連續(xù)兩個(gè)%表示。如:printf(“%f%”,1.0/4); 則輸出:0.250000%,【注意】,試編寫求梯形面積的程序,數(shù)據(jù)由鍵盤輸入。 分析:設(shè)梯形上底為A,下底為B,高為面職為,則S=(AB)*2,程序如下:void main() float a,b,h,s; printf(“please input a,b,h:“); scanf(“%f%f%f“, ,六、字符數(shù)據(jù)非格式輸入/輸出函數(shù),1字符輸入函數(shù)getchar() getchar()函數(shù)的格式: getchar(); getchar()函數(shù)的作用:從系統(tǒng)的輸入設(shè)備鍵盤輸入一個(gè)字符。 從功能角度來看,scanf()函數(shù)可以完全代替getchar()函數(shù)。,例:char c1;則c1=getchar(); 可使用等價(jià)語句: scanf(“%c“,說明: (1)getchar()函數(shù)一次只能返回一個(gè)字符,即調(diào)用一次只能輸入一個(gè)字符。 (2)程序第一次執(zhí)行g(shù)etchar()函數(shù)時(shí),系統(tǒng)暫停等待用戶輸入,直到按回車鍵結(jié)束,如果用戶輸入了多個(gè)字符,則該函數(shù)只取第一個(gè)字符,多余的字符(包括換行符n)存放在鍵盤緩沖區(qū)中,如果程序再一次執(zhí)行g(shù)etchar()函數(shù),則程序就直接從鍵盤緩沖區(qū)讀入,直到讀完后,如果還有g(shù)etchar()函數(shù)才會(huì)暫停,再次等待用戶輸入。,2字符輸出函數(shù)putchar( ) putchar()函數(shù)的格式: putchar(ch); 該函數(shù)的功能是向顯示器終端輸出一個(gè)字符。其中,ch可以是一個(gè)字符變量或常量,也可以是一個(gè)轉(zhuǎn)義字符。 說明: (1)putchar()函數(shù)只能用于單個(gè)字符的輸出,且一次只能輸出一個(gè)字符。 (2)從功能角度printf()函數(shù)可以完全代替putchar()函數(shù),其等價(jià)形式:printf(“%c“,ch)。,例輸入一個(gè)字符,回顯該字符并輸出其ASCII碼值。 #include void main() char ch1,ch2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(ch2); printf(“%cn%c“,ch1,ch2); ,程序運(yùn)行后,若ch1、ch2分別得到字符A、B,應(yīng)輸入AB,如果輸入A,則實(shí)際上ch1被賦值為字符A,ch2被賦值為字符換行符n,【例3-16】 從鍵盤上輸入一個(gè)英文小寫字母,編程輸出該字母所對(duì)應(yīng)的A
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校農(nóng)場(chǎng)建設(shè)協(xié)議書
- 合作改造房產(chǎn)協(xié)議書
- 園長(zhǎng)幫扶結(jié)對(duì)協(xié)議書
- 婚前撫養(yǎng)子女協(xié)議書
- 多家企業(yè)聯(lián)盟協(xié)議書
- 婚內(nèi)婚前債務(wù)協(xié)議書
- 固定客源轉(zhuǎn)讓協(xié)議書
- 工作培訓(xùn)保密協(xié)議書
- 合作聯(lián)盟合同協(xié)議書
- 工位分包創(chuàng)業(yè)協(xié)議書
- 輔導(dǎo)員的工作流程與工作方法
- 中醫(yī)護(hù)理耳穴壓豆課件
- 山皮石填筑施工方案
- 國(guó)家電網(wǎng)公司安全事故調(diào)查規(guī)程
- 鋼結(jié)構(gòu)管廊安裝施工方案-
- LY/T 2083-2013全國(guó)營(yíng)造林綜合核查技術(shù)規(guī)程
- GB/T 32879-2016電動(dòng)汽車更換用電池箱連接器通用技術(shù)要求
- 《常見疾病康復(fù)》第一章常見功能障礙康復(fù)-1~3節(jié)
- GB/T 26745-2021土木工程結(jié)構(gòu)用玄武巖纖維復(fù)合材料
- GB/T 2421.1-2008電工電子產(chǎn)品環(huán)境試驗(yàn)概述和指南
- GB/T 21206-2007線路柱式絕緣子特性
評(píng)論
0/150
提交評(píng)論