版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C C 語語 言言 教教 程程 - 3 - 3www.sng- 回憶回憶 上一次介紹了上一次介紹了Scanf和和printf這兩個格式輸入函數和格式輸出函數。要滿這兩個格式輸入函數和格式輸出函數。要滿足人們對格式輸入和輸出的要求,就需要在程序中對這兩個函數在括號中的足人們對格式輸入和輸出的要求,就需要在程序中對這兩個函數在括號中的(“格式控制串格式控制串”,參數表,參數表)賦以不同的內容。賦以不同的內容。 通過顯示名片這個練習程序,我們初步認識并熟悉這兩個函數的使用方法。通過顯示名片這個練習程序,我們初步認識并熟悉這兩個函數的使用方法。下面再以示范程序打印獎狀來詳細介紹輸入與輸出函數的使用方法
2、及程序編制過下面再以示范程序打印獎狀來詳細介紹輸入與輸出函數的使用方法及程序編制過程中的分析方法。程中的分析方法。www.sng- v 程序要求:系統(tǒng)提示輸入學生的姓名和得獎等級,用戶輸入這程序要求:系統(tǒng)提示輸入學生的姓名和得獎等級,用戶輸入這些內容之后,系統(tǒng)打印出這張獎狀。些內容之后,系統(tǒng)打印出這張獎狀。v 程序流程分析:在拿到這道題目之后,我們分析得出程序的流程序流程分析:在拿到這道題目之后,我們分析得出程序的流程應該是:程應該是:v 系統(tǒng)提示要求用戶姓名系統(tǒng)提示要求用戶姓名v 用戶輸入姓名用戶輸入姓名v 系統(tǒng)提示要求得獎等級系統(tǒng)提示要求得獎等級v 用戶輸入等級用戶輸入等級v 系統(tǒng)根據輸入
3、的變量值,輸出獎狀系統(tǒng)根據輸入的變量值,輸出獎狀示范程序:打印獎狀www.sng- v 數據分析:這個程序我們其實只用到兩個變量:數據分析:這個程序我們其實只用到兩個變量:一個變量用于儲存用戶的姓名,它應該是字符串數據;另一個一個變量用于儲存用戶的姓名,它應該是字符串數據;另一個變量用于儲存用戶的得獎等級,它應該是整數。變量用于儲存用戶的得獎等級,它應該是整數。v 輸出要求:因為我們總希望打印出來的獎狀是整齊的,所以我輸出要求:因為我們總希望打印出來的獎狀是整齊的,所以我們在輸出語句的格式控制串中要用到特殊的控制格式來固定姓們在輸出語句的格式控制串中要用到特殊的控制格式來固定姓名的顯示長度和得
4、獎等級的顯示程度。名的顯示長度和得獎等級的顯示程度。v 以上我們提供了一種對編程要求進行分析的方法,希望在碰到以上我們提供了一種對編程要求進行分析的方法,希望在碰到具體問題時,大家能夠靈活運用這種分析方法,在今后的大型具體問題時,大家能夠靈活運用這種分析方法,在今后的大型編程中,大家會發(fā)現(xiàn)編程前的分析和準備工作是必不可少的,編程中,大家會發(fā)現(xiàn)編程前的分析和準備工作是必不可少的,這會大大加快之后的編程效率,和減少一些不必要的錯誤。這會大大加快之后的編程效率,和減少一些不必要的錯誤。www.sng-打印獎狀源代碼打印獎狀源代碼 main() char *name; int grade; print
5、f(Please input your name:); scanf(“%s”,name); printf(“n”); printf(Please input your grade(1-3):); scanf(%d,&grade); 這是主函數,也就是一個C程序開始執(zhí)行的地方這里加上*號表示字符串變量,存放名字。這是一個整形變量,存放得獎等級。使用取字符串s格式取得從鍵盤輸入的字符時,不要加上&只列出字符串變量名。在一對大括號中的語句,習慣上有一定的縮進。習慣上變量定義語句寫在程序最前面,用空行和執(zhí)行語句分開scanf 的參數列表,取得從鍵盤輸入的數字,必須要加上& 。w
6、ww.sng-打印獎狀源代碼接前)打印獎狀源代碼接前) printf(Your diplomat is:nn); printf(+-+n); printf(| |n); printf(| Name: %-18s |n,name); printf(| |n); printf(| Grade: %3d |n,grade); printf(| |n); printf(+-+n); %格式控制符中的數字限定變量的顯示長度。當它為負值時,表示顯示時是左對齊,否則就是右對齊。 探索探索1 1 試著運行這段程序,認真看一下還有什么奇怪的現(xiàn)象,特試著運行這段程序,認真看一下還有什么奇怪的現(xiàn)象,特別是在輸出顯示
7、后別是在輸出顯示后! ! 可以與同伴探討一下可以與同伴探討一下, ,并作出改進。并作出改進。www.sng- 前面打印獎狀的程序,在輸入名字中不能帶空格,不然不僅只能顯示空前面打印獎狀的程序,在輸入名字中不能帶空格,不然不僅只能顯示空格前的字符,而且還會將錯誤連帶到下一輸入中。這是什么原因呢?格前的字符,而且還會將錯誤連帶到下一輸入中。這是什么原因呢? 這是因為這是因為scanf()函數將空格和逗號用在接受多個輸入時的分隔符,所以函數將空格和逗號用在接受多個輸入時的分隔符,所以當遇到空格就會再去匹配下一個輸入變量。當遇到空格就會再去匹配下一個輸入變量。 需要輸入帶空格的字符串時,我們可以用接受
8、字符串輸入的函數需要輸入帶空格的字符串時,我們可以用接受字符串輸入的函數gets()。 將原來將原來scanf(“%s”,name); 修改為修改為: gets(name); 表示從鍵盤輸入一個字符串賦給表示從鍵盤輸入一個字符串賦給name,這個字符串以回車完畢。,這個字符串以回車完畢。 相對應的輸出字符串的函數,那就是相對應的輸出字符串的函數,那就是 puts()。 如如: puts(name); 就可以替代就可以替代printf(“%s”,name); 將字符串顯示在屏幕將字符串顯示在屏幕上。上。討論:討論:www.sng-條件語句:根據條件成立與否,決定做不同的事。條件語句:根據條件成立
9、與否,決定做不同的事。 if(條件條件) 條件成立時做什么條件成立時做什么; else 條件不成立時做什么條件不成立時做什么; C語言中表示條件,一般用關系表達式或邏輯表達式。語言中表示條件,一般用關系表達式或邏輯表達式。 所謂所謂“關系表達式實際上就是關系表達式實際上就是“比較運算比較運算”,即將兩個數據進行比,即將兩個數據進行比較,判定兩個數據是否符合給定的關系。較,判定兩個數據是否符合給定的關系。 例如例如: if (ab) printf(“ First: %d”,a); “ab中的中的“”表示一個大于關系運算。如果表示一個大于關系運算。如果a的值是的值是5,b的值是的值是3,則大于關系
10、運算則大于關系運算“”的結果為的結果為“真真”,即條件成立即顯示出,即條件成立即顯示出First:5執(zhí)行其執(zhí)行其后;如果后;如果a的值是的值是2,b的值是的值是3,則大于關系運算,則大于關系運算“”的結果為的結果為“假假”,即條件不成立。即條件不成立。C語言提供語言提供6種關系運算符:種關系運算符: (大于大于) , !=(不等于不等于) =(大于或等于大于或等于) , =(等于等于), 注意:注意:“等于關系運算符是雙等號等于關系運算符是雙等號“= =”,而不是等號,而不是等號“= ”(賦值運(賦值運符)。符)。 教教 學學www.sng- 例例1 輸入兩個整數輸入兩個整數a與與b,輸出其中
11、的大數。,輸出其中的大數。 main() int a,b; printf(“Please input two numbers:”); scanf(“%d %d “ ,&a , &b ); if (ab) printf( “MAX=%d”, a ); else printf(“ MAX=%d”, b); 探索探索2 上面是數據直接比較的方法,還可以采用打擂臺的方法,擂臺為上面是數據直接比較的方法,還可以采用打擂臺的方法,擂臺為max,初始設擂主為,初始設擂主為max=a ; 然后然后b與與max比較,若比較,若b大于大于max則則b占領擂占領擂臺即臺即max=b。 依照打擂臺的方
12、式,補充完善下面的程序依照打擂臺的方式,補充完善下面的程序main() int a,b,max; printf(“Please input two numbers:”); scanf(“%d %d “ ,&a , &b ); max=a; If (bmax) _ ; _ ; www.sng-探索探索3 再增加一個數,現(xiàn)在是輸入再增加一個數,現(xiàn)在是輸入a、b、c三個的整數用數據直接比較的方法,三個的整數用數據直接比較的方法,顯示最大的一個數。補充完善下面的程序。顯示最大的一個數。補充完善下面的程序。 main() int a,b,c; printf(“Please input t
13、hree numbers:”); scanf(“%d %d %d“ ,&a , &b, &c ); if (ab) if (ac) printf( “MAX=%d”, a ); else _ ; 探索探索4 再采用打擂臺的方法,在再采用打擂臺的方法,在a,b,c三個數中,顯示最大的一個數。也請你補三個數中,顯示最大的一個數。也請你補充完善下面的程序。充完善下面的程序。main() int a,b,max; printf(“Please input three numbers:”); scanf(“%d %d %d“ ,&a , &b ,&c );
14、 max=a; If (bmax) _ ; www.sng-在在 探索探索33中遇到了中遇到了ifif語句中的執(zhí)行語句又是語句中的執(zhí)行語句又是ifif語句的情形,這就是語句的情形,這就是if if 語句的嵌套。語句的嵌套。在嵌套內的在嵌套內的ifif語句可能又是語句可能又是if-elseif-else型的,這將會出現(xiàn)多個型的,這將會出現(xiàn)多個ifif和多個和多個elseelse重疊的情況,這時要特別注意重疊的情況,這時要特別注意ifif和和elseelse的配對問題。的配對問題。 例例22:輸入一個整數,將其按小于:輸入一個整數,將其按小于1010,10-9910-99,100-999100-9
15、99,10001000以上以上分類顯示分類顯示. .例如輸入例如輸入456456則顯示則顯示: 456 is 100 to 1000.: 456 is 100 to 1000.main()main() int a; int a; scanf(“%d”, &a); scanf(“%d”, &a); if(a=100) if(a=100) if(a=1000) printf(“%d is greater then 1000.n”,a ); if(a=1000) printf(“%d is greater then 1000.n”,a ); else printf(“%d is 10
16、0 to 1000.n”,a ); else printf(“%d is 100 to 1000.n”,a ); else else if(a10) printf(“%d is less then 10.n”,a ); if(a10) printf(“%d is less then 10.n”,a ); else printf(“%d is 10 to 100.n”,a ); else printf(“%d is 10 to 100.n”,a ); 請你仔細分辯,其中每一個請你仔細分辯,其中每一個elseelse究竟是與哪一個究竟是與哪一個if if 配對呢配對呢? ?ifif語句的嵌套語句的
17、嵌套www.sng- 上一題的顯示結果告訴我們上一題的顯示結果告訴我們:else:else總是與前面最近的一個總是與前面最近的一個ifif語句匹配。語句匹配。 為了使程序便于閱讀理解。在一般情況下較少使用為了使程序便于閱讀理解。在一般情況下較少使用ifif語句層層語句層層嵌套結構。在需要判別多條件的情形下,可以使用如下階梯式嵌套結構。在需要判別多條件的情形下,可以使用如下階梯式 if- if-else if else if 的結構的結構 : : if( if(條件條件1)1) 語句語句1;1; else if( else if(條件條件2)2) 語句語句2;2; else if( else i
18、f(條件條件3)3) 語句語句3;3; : : : : 探索探索4 4 將前面整數分類顯示的程序改用階梯式將前面整數分類顯示的程序改用階梯式 if-else if if-else if 的結構的結構再重寫再重寫 一下。一下。 www.sng- c301從鍵盤上輸入三個整數a、b、c,比較后輸出顯示中位數,如輸入a=3,b=8,c=5 則顯示中位數為: c=5 。 c302從鍵盤上輸入三個整數a、b、c,比較后按照從大到小的順序輸出顯示a,b,c三個數,如輸入a=3,b=8,c=5 則顯示為: a=8 b=5 c=3。 c303 從鍵盤上輸入某年份year4位十進制數),判斷其是否閏年。閏年的條
19、件是:能被4整除、但不能被100整除,或者能被400整除。 *c304從鍵盤上輸入三角形的三條邊長,用海倫公式求三角形的面積。 求面積公式 area= s*(s-a)*(s-b)*(s-c) 其中: s=(a+b+c)/2下面示例使用求平方根的 sqrt()函數: #include #include main() float a,b,c,s,area; scanf(“%f %f %f”, &a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c) ; : 請增加判斷輸入的三個數能組成一個三角形才計算,不然則顯示 “Data
20、 error!” 練習題練習題-3-3www.sng- printf函數格式字符串函數格式字符串 if語句的三種形式語句的三種形式1. 第一種形式為基本形式:第一種形式為基本形式: if形式形式 if(表達式表達式) 語句語句其語義是:如果表達式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。其過其語義是:如果表達式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。其過程可表示為下圖。程可表示為下圖。【例】【例】main() int a,b,max; printf(n input two numbers: ); scanf(%d%d,&a,&b); max=a; if (maxb)
21、printf(max=%dn,a); else printf(max=%dn,b);輸入兩個整數,輸出其中的大數。輸入兩個整數,輸出其中的大數。改用改用if-else語句判別語句判別a,b的大小,若的大小,若a大,則輸出大,則輸出a,否則輸出,否則輸出b。 自學指導自學指導_3 if語句的三種形式語句的三種形式www.sng- 3. 第三種形式為 if-else-if形式前二種形式的if語句一般都用于兩個分支的情況。當有多個分支選擇時,可采用if-else-if語句,其一般形式為:if(表達式1) 語句1; else if(表達式2) 語句2; else if(表達式3) 語句3; else
22、if(表達式m) 語句m; else 語句n;其語義是:依次判斷表達式的值,當出現(xiàn)某個值為真時,則執(zhí)行其對應的語句。然后跳到整個if語句之外繼續(xù)執(zhí)行程序。 如果所有的表達式均為假,則執(zhí)行語句n。然后繼續(xù)執(zhí)行后續(xù)程序。 自學指導自學指導_3 if語句的三種形式語句的三種形式www.sng- 4. 在使用在使用if語句中還應注意以下問題語句中還應注意以下問題:1) 在三種形式的在三種形式的if語句中,在語句中,在if關鍵字之后均為表達式。關鍵字之后均為表達式。 該表達式通常是邏輯表達式或關系表該表達式通常是邏輯表達式或關系表達式,達式, 但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變量。
23、但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變量。例如:例如: if(a=5) 語句;語句; if(b) 語句;語句;都是允許的。只要表達式的值為非都是允許的。只要表達式的值為非0,即為,即為“真真”。如在如在: if(a=5);中表達式的值永遠為非;中表達式的值永遠為非0,所以其后的語句總是要執(zhí)行的,當然這種情況,所以其后的語句總是要執(zhí)行的,當然這種情況在程序中不一定會出現(xiàn),但在語法上是合法的。在程序中不一定會出現(xiàn),但在語法上是合法的。又如,有程序段:又如,有程序段: if(a=b) printf(%d,a); else printf(a=0);本語句的語義是,把本語句的語義是,把
24、b值賦予值賦予a,如為非,如為非0則輸出該值,否則輸出則輸出該值,否則輸出“a=0字符串。這種用法在程字符串。這種用法在程序中是經常出現(xiàn)的。序中是經常出現(xiàn)的。2) 在在if語句中,條件判斷表達式必須用括號括起來,在語句之后必須加分號。語句中,條件判斷表達式必須用括號括起來,在語句之后必須加分號。3) 在在if語句的三種形式中,所有的語句應為單個語句,如果要想在滿足條件時執(zhí)行一組語句的三種形式中,所有的語句應為單個語句,如果要想在滿足條件時執(zhí)行一組(多個多個)語句,則必須把這一組語句用語句,則必須把這一組語句用括起來組成一個復合語句。但要注意的是在括起來組成一個復合語句。但要注意的是在之后不能再
25、加分之后不能再加分號。號。例如:例如: if(ab)a+; b+;elsea=0; b=10;自學指導自學指導_3 if語句的三種形式語句的三種形式www.sng- 4. 在使用在使用if語句中還應注意以下問題語句中還應注意以下問題:1) 在三種形式的在三種形式的if語句中,在語句中,在if關鍵字之后均為表達式。關鍵字之后均為表達式。 該表達式通常是邏輯表達式或關系表該表達式通常是邏輯表達式或關系表達式,達式, 但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變量。但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變量。例如:例如: if(a=5) 語句;語句; if(b) 語句;語
26、句;都是允許的。只要表達式的值為非都是允許的。只要表達式的值為非0,即為,即為“真真”。如在如在: if(a=5);中表達式的值永遠為非;中表達式的值永遠為非0,所以其后的語句總是要執(zhí)行的,當然這種情況,所以其后的語句總是要執(zhí)行的,當然這種情況在程序中不一定會出現(xiàn),但在語法上是合法的。在程序中不一定會出現(xiàn),但在語法上是合法的。又如,有程序段:又如,有程序段: if(a=b) printf(%d,a); else printf(a=0);本語句的語義是,把本語句的語義是,把b值賦予值賦予a,如為非,如為非0則輸出該值,否則輸出則輸出該值,否則輸出“a=0字符串。這種用法在程字符串。這種用法在程序中是經常出現(xiàn)的。序中是經常出現(xiàn)的。2) 在在if語句中,條件判斷表達式必須用括號括起來,在語句之后必
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度城市公共自行車租賃服務合同范本8篇
- 2025年度有機農產品生產加工合作合同范本3篇
- 2025年度面粉產品區(qū)域總代理合同樣本4篇
- 2025年度航空保險理賠服務合同
- 二零二五年度企業(yè)稅務顧問聘請協(xié)議3篇
- 2025年國際貿易實訓報告編寫與推廣服務合同3篇
- 二零二五年專業(yè)植物租賃及養(yǎng)護服務合同2篇
- 二零二五年度環(huán)保型木工清工分包合同創(chuàng)新范本3篇
- 2025年度木材加工企業(yè)原材料采購合同4篇
- 2025年度國際貨運代理合同欺詐風險控制與合同管理2篇
- 2025年上半年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人易考易錯模擬試題(共500題)試卷后附參考答案
- DB3301T 0382-2022 公共資源交易開評標數字見證服務規(guī)范
- 人教版2024-2025學年八年級上學期數學期末壓軸題練習
- 【人教版化學】必修1 知識點默寫小紙條(答案背誦版)
- 江蘇省無錫市2023-2024學年八年級上學期期末數學試題(原卷版)
- 俄語版:中國文化概論之中國的傳統(tǒng)節(jié)日
- 2022年湖南省公務員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護理匯報
- 哪吒之魔童降世
- 2022年上海市各區(qū)中考一模語文試卷及答案
- 2024年全國統(tǒng)一高考數學試卷(新高考Ⅱ)含答案
評論
0/150
提交評論