C語言程序設(shè)計(jì)_項(xiàng)目二1_第1頁
C語言程序設(shè)計(jì)_項(xiàng)目二1_第2頁
C語言程序設(shè)計(jì)_項(xiàng)目二1_第3頁
C語言程序設(shè)計(jì)_項(xiàng)目二1_第4頁
C語言程序設(shè)計(jì)_項(xiàng)目二1_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、項(xiàng)目二項(xiàng)目二 輸入學(xué)生成績轉(zhuǎn)化為等級輸入學(xué)生成績轉(zhuǎn)化為等級 項(xiàng)目要求項(xiàng)目要求 一個(gè)班進(jìn)行了一次考試,教師打的是百分制成績,現(xiàn)在學(xué)校要求打五級制,即90100 分的轉(zhuǎn)變?yōu)锳,8089 的轉(zhuǎn)變?yōu)?B,7079的轉(zhuǎn)變?yōu)镃,6069的轉(zhuǎn)變?yōu)镈,60以下的轉(zhuǎn)變?yōu)镋。項(xiàng)目分析項(xiàng)目分析 要完成對成績的轉(zhuǎn)換輸出,第一步必須要對輸入的成績是否合法作一個(gè)判斷,因?yàn)槭前俜种?,所?-100分都是合法的,此范圍外輸入的成績是有問題的;第二步對輸入的合法成績轉(zhuǎn)換成相應(yīng)的等級。因此,將這個(gè)項(xiàng)目分解成二個(gè)任務(wù)來完成。任務(wù)一是輸入學(xué)生成績,判斷其合法性;任務(wù)二是輸入學(xué)生成績轉(zhuǎn)化為等級。任務(wù)任務(wù)1 輸入學(xué)生成績,判斷其合法性輸

2、入學(xué)生成績,判斷其合法性一、問題情景一、問題情景輸入一個(gè)學(xué)生的成績,判斷它是否合法(成績采用百分制)。分析:程序流程圖: 方法一:方法一:首先判斷輸入的成績是否在1到100之間,是的話輸出提示信息“輸入成績合法”;再判斷輸入的成績是否在0到100以外,是的話輸出提示信息“輸入的成績不合法”。二、具體實(shí)現(xiàn)二、具體實(shí)現(xiàn)方法一:方法一: 參考程序:#include stdio.hmain() float x;printf(請輸入一個(gè)學(xué)生成績);scanf(%f,&x);if(x=0 & x=100) printf(輸入成績合法n);if(x100) printf(輸入成績不合法n);二、具體實(shí)現(xiàn)二、

3、具體實(shí)現(xiàn)方法二:方法二:參考程序:#include stdio.hmain() float x;printf(請輸入一個(gè)學(xué)生成績);scanf(%f,&x);if(x=0&x=100) printf(輸入成績合法);else printf(輸入成績不合法);方法二:判斷輸入的成績是否方法二:判斷輸入的成績是否在在1到到100之間,是的話輸出提之間,是的話輸出提示信息示信息“輸入成績合法輸入成績合法”;否;否則的話輸出提示信息則的話輸出提示信息“輸入的輸入的成績不合法成績不合法”。程序流程圖本任務(wù)知識(shí)點(diǎn):1、關(guān)系運(yùn)算符與關(guān)系表達(dá)式2、邏輯運(yùn)算符與邏輯表達(dá)式3、if 和if else語句三、相關(guān)知

4、識(shí)三、相關(guān)知識(shí)(一)(一) 關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符與關(guān)系表達(dá)式 1. 關(guān)系運(yùn)算符及優(yōu)先級 (大于)= (大于或等于)= (等于)!= (不等于)優(yōu)先級相同(高)優(yōu)先級相同(低)1)前4種運(yùn)算符(,=)優(yōu)先級相同,后兩種也相同。前4種高于后2種。 (2)關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符。 (3)關(guān)系運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符。2. 關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子,稱為關(guān)系表達(dá)式。例如:ab,a!=b,a+ba+c,ab 關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”,在C語言中用1代表“真”,以0代表“假”。【例如】若a=1,b=4,則:(1)ab的值為0。因?yàn)閍=1

5、,b=4,所以ab的值為假,即表達(dá)式ab的值為0。(2)a!=b的值為1。(3)a=b=0的值為1。因?yàn)椤?”優(yōu)先級比“=”的優(yōu)先級要高,所以b=0先做,結(jié)果為1;再做=運(yùn)算符,a=1成立,所以整個(gè)表達(dá)式的值為1。 (4)b=0=a的值為1。(二)(二) 邏輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算符與邏輯表達(dá)式 1. 邏輯運(yùn)算符及優(yōu)先級邏輯運(yùn)算符及優(yōu)先級 & 邏輯與 優(yōu)先級低 | 邏輯或 ! 邏輯非 優(yōu)先級高優(yōu)先級:“!”運(yùn)算符高于算術(shù)運(yùn)算符,關(guān)系運(yùn)算符高于邏輯運(yùn)算符ab!a!ba&ba|b真真假假真真真假假真假真假真真假假真假假真真假假其中“&”相當(dāng)于而且,要求有兩個(gè)運(yùn)算量 。“|”相當(dāng)于或者,要求有兩

6、個(gè)運(yùn)算量。 “!”相當(dāng)于否定 。例如:10歲以下的小孩而且是女例如:10歲以下的小孩或者是女除了10歲以下的女小孩。 邏輯運(yùn)算符的“真值表” 2. 邏輯表達(dá)式邏輯表達(dá)式 邏輯表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”, C語言編譯系統(tǒng)在給出運(yùn)算結(jié)果中,以數(shù)值1代表“真”,以0代表“假”,但在判斷一個(gè)量是否為“真”時(shí),以0代表“假”,以非0代表“真”。在C語言中一共只有4個(gè)0,分別是:0(整數(shù)0)、0.0(實(shí)數(shù)0)、0(字符0)和NULL(符號(hào)常量0)。【例如】若a=2,b=4,則a&b的值為1。因?yàn)閍,b的值均為非0,被認(rèn)為是“真”,因此a&b的值為“真”,表達(dá)式a&b的值為1。若x=5,則x=

7、0&x=”和“=0和x=0&x=0&x=0的結(jié)果為1,表達(dá)式x=0|x=0|xb) c=a;后c的值為5,因?yàn)閍b不成立,則表達(dá)式的值為0,不執(zhí)行后面的語句c=a,所以c的值不變,還是為5;2)執(zhí)行語句if(ab) t=a;a=b;b=t;后a的值為3, b的值為4;4)執(zhí)行語句if(ab)c=a; else c=b;后c的值為4。執(zhí)行語句if(ab)c=a; else c=b; 后c的值為3。同樣地,語句組1和語句組2的語句不止一句時(shí),要用 將語句組括起來,作為一個(gè)復(fù)合語句?!纠纭咳鬭=3,b=4,c=5, 執(zhí)行語句if(ab) min=b;if(minc) min=c;printf(%d

8、,%d,%d中最小的數(shù)為%dn,a,b,c,min);【例例2-1】輸入任意三個(gè)整數(shù)輸入任意三個(gè)整數(shù)a、b、c,輸出其中最小的數(shù)。,輸出其中最小的數(shù)。方法二:分析:我們首先將a、b兩個(gè)數(shù)進(jìn)行比較,把兩者中最小的數(shù)放到a中,然后用兩者中最小的數(shù)a跟c進(jìn)行比較,同樣的把兩者中最小的數(shù)放到a中,最后a中的值就是三者中最小的值。參考程序:#include stdio.hmain( ) int a,b,c,t;printf(請輸入三個(gè)數(shù));scanf(%d,%d,%d,&a,&b,&c);if(ab) t=a;a=b;b=t;if(ac) t=a;a=c;c=t;printf(%d,%d,%d中最小的數(shù)

9、為%d,a,b,c,a);復(fù)習(xí)復(fù)習(xí)v1、若x=5,則x=0|x=0|x=0&xb?a:b的值為4。因?yàn)楸磉_(dá)式ab的值為0,整個(gè)表達(dá)式ab?a:b應(yīng)該是表達(dá)式3的值,即b的值。表達(dá)式表達(dá)式 ab?a:b 的值實(shí)際上是取的值實(shí)際上是取a、b兩者中最大值。兩者中最大值。 例:a=3,b=4,c=5,則表達(dá)式c(ab?a:b)?c: (ab?a:b)的值為_。(取取a、b、c三者中最大值三者中最大值)任務(wù)任務(wù)2 輸入學(xué)生成績轉(zhuǎn)化為等級輸入學(xué)生成績轉(zhuǎn)化為等級一、問題情景一、問題情景輸入一個(gè)學(xué)生的成績,若是合法成績,則輸出相應(yīng)的等級,否則輸出不合法的提示信息。方法一:方法一:首先判斷輸入的成績是否合法,不

10、合法的話,輸出“輸入的成績不合法”的提示信息;合法的話再判斷成績是否在90分到100分之間,是的話,將變量y賦好相應(yīng)的值;同樣再判斷成績是否在80分到90分之間,是的話,將變量y賦好相應(yīng)的值等等。參考程序:#include stdio.hmain()float x; char y;printf(請輸入1-100內(nèi)的一個(gè)成績);scanf(%f,&x);if( x=0 & x=90 & x=80 & x=70 & x=60 & x=0 & x60) y=E; printf(該學(xué)生的等級為%cn,y);else printf(輸入的學(xué)生成績不合法n);方法二:方法二: 方法二方法二:首先判斷輸入的

11、成績是否合法,不合法的話,輸出“輸入的成績不合法”的提示信息;合法的話再判斷成績是否大于等于90分,若是的話,將變量y賦好相應(yīng)的值;否則再判斷成績是否大于等于80分,是的話,將變量y賦好相應(yīng)的值;否則再判斷成績是否大于等于70分,是的話,將變量y賦好相應(yīng)的值等等。#include stdio.hmain() float x; char y;printf(請輸入1-100內(nèi)的一個(gè)成績);scanf(%f,&x);if(x= 0)if(x=90) y=A;else if(x=80) y=B;else if(x=70) y=C;else if(x=60) y=D;else y=E;printf(該學(xué)

12、生的等級為%cn,y);else printf(輸入的學(xué)生成績不合法n);方法三:方法三:另外我們還可以用switch語句來實(shí)現(xiàn)。#include stdio.hmain() int x,t; char y;printf(請輸入1-100內(nèi)的一個(gè)成績);scanf(%d,&x);t=x/10;switch(t) case 10: case 9: printf(該學(xué)生的等級為該學(xué)生的等級為A);break; case 8: printf(該學(xué)生的等級為該學(xué)生的等級為B);break; case 7: printf(該學(xué)生的等級為該學(xué)生的等級為C);break; case 6: printf(該學(xué)

13、生的等級為該學(xué)生的等級為D);break; case 5:case 4:case 3:case 2:case 1:case 0: printf(該學(xué)生的等級為該學(xué)生的等級為E); break;default: printf(輸入的學(xué)生成績有輸入的學(xué)生成績有誤誤);本任務(wù)中要掌握的是:1、if語句的嵌套用法。2、switch語句的用法。三、相關(guān)知識(shí)三、相關(guān)知識(shí)1. if語句的嵌套【語法】if(表達(dá)式1)語句組1else if(表達(dá)式2)語句組2else if(表達(dá)式3)語句組3 .else 語句組n【例如】 if(x=90&x=80) y=B;else if(x=70) y=C;else if(

14、x=60) y=D;else y=E; 這里實(shí)際上只有一個(gè)if else語句,只不過else后面跟的不是一般的語句,而又是一個(gè)if else語句而已。 if 和else 后面可以跟語句組,這個(gè)語句組里當(dāng)然也可以是if else語句,這種情況稱為if語句的嵌套。if語句的嵌套時(shí),else語句與if的匹配原則是:與在它上面的、距離它最近的、在同一層括號(hào)內(nèi)的、且尚未匹配的if配對?!纠?-3】 輸入一個(gè)字符,判斷它是小寫、大寫、數(shù)字還是其它字符。輸入一個(gè)字符,判斷它是小寫、大寫、數(shù)字還是其它字符。分析:輸入一個(gè)字符,判斷它是否小寫,是的話輸出相應(yīng)的提示信息;否則再判斷它是否是大寫,同樣是的話輸出相

15、應(yīng)的提示信息;等等。參考程序:#include “stdio.h”main() char a;printf(“請輸入一個(gè)字符n”); scanf(“%c”,&a);if(a=a&a=A&a=0&a=a&a=A&a=0&a=9) printf(“輸入的字符是數(shù)字”);else printf(“輸入的字符是其它字符”);2. switch語句語句一般形式為:一般形式為: switch(表達(dá)式) case 常量表達(dá)式1:語句組1;break; case 常量表達(dá)式2:語句組2;break; case 常量表達(dá)式n:語句組n;break; default :語句組n+1; 說明:說明:switch后面

16、的表達(dá)式可以是int char和枚舉型中的一種。case每個(gè)后面的表達(dá)式必須互不相同,否則會(huì)出現(xiàn)矛盾的現(xiàn)象。case后面的常量表達(dá)式僅起語句標(biāo)號(hào)的作用,并不進(jìn)行條件判斷。系統(tǒng)一旦找到入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判斷,所以要加上所以要加上break語句,以便結(jié)束語句,以便結(jié)束switch語句。語句?!纠缋纭縮witch(t) case 10: case 9: y=A; printf(“ %cn”,y); case 8: y=B; printf(“ %cn”,y); case 7: y=C; printf(“ %cn”,y); case 6: y=D; printf(“ %cn”

17、,y); default:y=E; printf(“ %cn”,y);若t=9,則連續(xù)輸出ABCDE若t=7,則連續(xù)輸出CDE若修改成下面的程序:若修改成下面的程序:switch(t)case 10: case 9: y=A; printf(“ %cn”,y); break; case 8: y=B; printf(“ %cn”,y); break; case 7: y=C; printf(“ %cn”,y); break; case 6: y=D; printf(“ %cn”,y); break; dfault:y=E; printf(“ %cn”,y); 若t=9,則輸出A若t=7,則輸出

18、C【例例2-4】運(yùn)輸公司對用戶計(jì)算運(yùn)費(fèi)。路程運(yùn)輸公司對用戶計(jì)算運(yùn)費(fèi)。路程(s)越遠(yuǎn),每公里運(yùn)越遠(yuǎn),每公里運(yùn)費(fèi)越低。費(fèi)越低。 s250 沒有折扣 250=s500 2%折扣 500=s1000 5%折扣 1000=s2000 8%折扣 2000=s=3000 15%折扣設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p,貨物重為w,距離為s,折扣為d,則總運(yùn)費(fèi)的計(jì)算公式為f=p*w*s*(1-d)分析:公司對不同的路程采用了5種折扣,但實(shí)際上路程值有無數(shù)種,我們要把這無數(shù)種路程變?yōu)槿舾蓚€(gè)值。通過觀察我們可以把250公里作為一個(gè)單元,這樣就把所有路程變成了13種情況,分別是0、1、12。而其中0享受的是沒有折扣;1享

19、受的是2%折扣;2、3 享受的是5%折扣;4、5、6、7 享受的是8%折扣;8、9、10、11 享受的是10%折扣;12享受的是15%折扣。參考程序:#include “stdio.h”void main() int c,s;float p,w,d,f;printf(“請輸入基本運(yùn)費(fèi),貨物重量,距離”); scanf(%f,%f,%d,&p,&w,&s); if (s=3000) c=12; else c=s/250; switch(c) case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5:

20、case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100.0); printf(總運(yùn)費(fèi)=%15.4fn, f); 用switch語句解題的關(guān)鍵是要把多種情況分成若干個(gè)有限的值。任務(wù)任務(wù)3 舉一反三舉一反三【例2-5】輸入4個(gè)學(xué)生的成績,按從高到低的次序輸出。分析:前面我們已經(jīng)求過3個(gè)數(shù)中的最大值,求4個(gè)數(shù)的最大值就只要把前面三個(gè)數(shù)的最大值與第四個(gè)數(shù)進(jìn)行比較就可以了;求好四個(gè)數(shù)的最大值后,接下來就是求剩下的三個(gè)數(shù)的最大值;最后再求最后剩下的

21、兩個(gè)數(shù)的最大值即可。參考程序:#include stdio.hmain()float a,b,c,d,t;printf(請輸入4個(gè)學(xué)生的成績,用逗號(hào)分隔);scanf(%f,%f,%f,%f,&a,&b,&c,&d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t; /*求出了a、b、c三個(gè)數(shù)的最大值在a中,其它兩個(gè)數(shù)分別在b、c中*/if(ad)t=a;a=d;d=t; if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t; /*此時(shí)求好了兩個(gè)最大的數(shù)a和b,其余的數(shù)在c、d中*/if(cd)t=c;c=d;d=t;printf(4個(gè)學(xué)生成績從高到低

22、的次序?yàn)椋?.1f,%.1f,%.1f,%.1fn,d,c,b,a);【例例2-6】輸入一個(gè)數(shù),如果是輸入一個(gè)數(shù),如果是7的倍數(shù),則輸出這個(gè)數(shù)的立方,否的倍數(shù),則輸出這個(gè)數(shù)的立方,否則輸出這個(gè)數(shù)的平方。則輸出這個(gè)數(shù)的平方。分析:判斷是否是7的倍數(shù),就只要看能否被7整除就可以了;a的立方不能寫成a3,可以簡單地用a*a*a來表示,也可以調(diào)用C語言中提供的庫函數(shù)pow(a,3)來表示,此時(shí)要用#include “math.h”語句把包含pow函數(shù)的庫文件math.h包含進(jìn)來。#include stdio.hmain( )int a,t;printf(請輸入一個(gè)整數(shù));scanf(%d,&a);if

23、(a%7=0) t=a*a*a;else t=a*a;printf(%d,t);#include stdio.h“#include “math.h”main( )int a,t;printf(請輸入一個(gè)整數(shù));scanf(%d,&a);if(a%7=0) t=pow(a,3);else t=a*a;printf(%d,t);【例2-7】輸入一個(gè)數(shù),判斷它是否是水仙花數(shù)(一個(gè)三位數(shù),它的各位數(shù)字立方之和等于它本身,這個(gè)數(shù)就是水仙花數(shù))。分析:要求這個(gè)數(shù)的三位數(shù)字之和,首先要分解出這個(gè)數(shù)的每一位數(shù)字,這個(gè)一般通過對數(shù)求余或取整等運(yùn)算來完成。參考程序:參考程序:#include stdio.hmai

24、n( )int a,b,c,x ;printf(請輸入一個(gè)三位整數(shù));scanf(%d,&x);a=x/100; /a=x/100; /* *分離出百位數(shù)分離出百位數(shù)* */ /b=x/10%10; /b=x/10%10; /* *分離出十位數(shù)分離出十位數(shù)* */ /c=x%10; /c=x%10; /* *分離出個(gè)位數(shù)分離出個(gè)位數(shù)* */ /if(a*a*a+b*b*b+c*c*c=x) /*判斷三位數(shù)字之和是否與原數(shù)相等*/ printf(%d是水仙花數(shù)n,x);else printf(%d不是水仙花數(shù)n,x);【例2-8】輸入方程ax2+bx+c=0的系數(shù)值(設(shè)a0),輸出方程的實(shí)根或輸出沒有實(shí)根的提示信息。分析:輸入方程的系數(shù)a、b、c后,首先要判斷b2-4ac是否大于零,有實(shí)根則求出方程的實(shí)根,沒有實(shí)根則輸出沒有實(shí)根的提示信息。參考程序:參考程序:#include stdio.h#include math.hmain()float a,b,c,d,p,q,x1,x2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論