




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、哈爾濱工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院蘇小紅C語(yǔ)言試驗(yàn)第1頁(yè)第1頁(yè)主教材:蘇小紅等, C語(yǔ)言大學(xué)實(shí)用教程,電子工業(yè)出版社,2004,8蘇小紅等, C語(yǔ)言大學(xué)實(shí)用教程(第2版),電子工業(yè)出版社,,2試驗(yàn)教材:蘇小紅等,C語(yǔ)言大學(xué)實(shí)用教程習(xí)題與試驗(yàn)指導(dǎo),電子工業(yè)出版社,2004,8蘇小紅等,C語(yǔ)言大學(xué)實(shí)用教程學(xué)習(xí)指導(dǎo),電子工業(yè)出版社,,4第2頁(yè)第2頁(yè)試驗(yàn)內(nèi)容第3頁(yè)第3頁(yè)試驗(yàn)1: 熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)鍵盤輸入與屏幕輸出練習(xí) 問(wèn)題1:要使下面程序輸出語(yǔ)句在屏幕上顯示1,2,34,則從鍵盤輸入數(shù)據(jù)格式應(yīng)為下列備選答案中哪一個(gè)? #include main()char a,b; int c; sca
2、nf(%c%c%d,&a,&b,&c);printf(%c,%c,%dn,a,b,c);A) 1 2 34 B) 1, 2, 34 C) 1,2,34 D) 12 34第4頁(yè)第4頁(yè)試驗(yàn)1: 熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)鍵盤輸入與屏幕輸出練習(xí) 問(wèn)題2:與上面程序鍵盤輸入相同情況下,要使上面程序輸出語(yǔ)句在屏幕上顯示1 2 34,則應(yīng)修改程序中哪條語(yǔ)句?如何修改? #include main()char a,b; int c; scanf(%c%c%d,&a,&b,&c);printf(%c,%c,%dn,a,b,c);第5頁(yè)第5頁(yè)問(wèn)題3:要使上面程序鍵盤輸入數(shù)據(jù)格式為1,2,34,輸出語(yǔ)句在屏幕
3、上顯示結(jié)果也為1,2,34,則應(yīng)修改程序中哪條語(yǔ)句?如何修改?#include main()char a,b; int c; scanf(%c%c%d,&a,&b,&c);printf(%c,%c,%dn,a,b,c);試驗(yàn)1: 熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)鍵盤輸入與屏幕輸出練習(xí) 第6頁(yè)第6頁(yè)問(wèn)題4:要使上面程序鍵盤輸入數(shù)據(jù)格式為1,2,34,而輸出語(yǔ)句在屏幕上顯示結(jié)果為1,2,34,則應(yīng)修改程序中哪條語(yǔ)句?如何修改?提醒:利用轉(zhuǎn)義字符輸出字符單引號(hào)字符。#include main()char a,b; int c; scanf(%c%c%d,&a,&b,&c);printf(%c,%c,%
4、dn,a,b,c);試驗(yàn)1: 熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)鍵盤輸入與屏幕輸出練習(xí) 第7頁(yè)第7頁(yè)問(wèn)題5:要使上面程序鍵盤輸入無(wú)論用下面哪種格式輸入數(shù)據(jù),程序在屏幕上輸出結(jié)果都為1,2,34,則程序應(yīng)修改程序中哪條語(yǔ)句?如何修改?第一個(gè)輸入方式:1,2,34(以逗號(hào)作為分隔符)第二種輸入方式:1 2 34(以空格作為分隔符)第三種輸入方式:1 2 34(以Tab鍵作為分隔符)第四種輸入方式:1 2 34(以回車符作為分隔符) 試驗(yàn)1: 熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)鍵盤輸入與屏幕輸出練習(xí) 第8頁(yè)第8頁(yè)試驗(yàn)1: 熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)計(jì)算定期存款本利之和 設(shè)銀行定期存款年利率rate為2.
5、25%,并已知存款期為n年,存款本金為capital元,試編程計(jì)算n年后本利之和deposit。要求定期存款年利率rate、存款期n和存款本金capital均由鍵盤輸入。 第9頁(yè)第9頁(yè)試驗(yàn)2: 選擇結(jié)構(gòu)編程練習(xí)身高預(yù)測(cè) 每個(gè)做父母都關(guān)懷自己孩子成人后身高,據(jù)相關(guān)生理衛(wèi)生知識(shí)與數(shù)理統(tǒng)計(jì)分析表明,影響小孩成人后身高原因有遺傳、飲食習(xí)慣與堅(jiān)持體育鍛煉等。小孩成人后身高與其父母身高和本身性別密切相關(guān)。設(shè)faHeight為其父身高,moHeight為其母身高,身高預(yù)測(cè)公式為:男性成人時(shí)身高 = (faHeight + moHeight) * 0.54(cm)女性成人時(shí)身高 = (faHeight * 0
6、.923 + moHeight) / 2(cm)另外,假如愛(ài)慕體育鍛煉,那么可增長(zhǎng)身高2%,假如有良好衛(wèi)生飲食習(xí)慣,那么可增長(zhǎng)身高1.5%。第10頁(yè)第10頁(yè)試驗(yàn)2: 選擇結(jié)構(gòu)編程練習(xí)身高預(yù)測(cè) 編程從鍵盤輸入你性別(用字符型變量sex存儲(chǔ),輸入字符F表示女性,輸入字符M表示男性)、父母身高(用實(shí)型變量存儲(chǔ),faHeight為其父身高,moHeight為其母身高)、是否愛(ài)慕體育鍛煉(用字符型變量sports存儲(chǔ),輸入字符Y表示愛(ài)慕,輸入字符N表示不愛(ài)慕)、是否有良好飲食習(xí)慣等條件(用字符型變量diet存儲(chǔ),輸入字符Y表示愛(ài)慕,輸入字符N表示不愛(ài)慕),利用給定公式和身高預(yù)測(cè)辦法對(duì)你身高進(jìn)行預(yù)測(cè)。 第
7、11頁(yè)第11頁(yè)試驗(yàn)2:選擇結(jié)構(gòu)編程練習(xí)簡(jiǎn)樸計(jì)算器程序 要求用switch語(yǔ)句編程設(shè)計(jì)一個(gè)簡(jiǎn)樸計(jì)算器程序。要求依據(jù)用戶從鍵盤輸入表示式:操作數(shù)1 運(yùn)算符op 操作數(shù)2計(jì)算表示式值,指定算術(shù)運(yùn)算符為加(+)、減(-)、乘(*)、除(/)。第12頁(yè)第12頁(yè)例4.8:計(jì)算器程序編程設(shè)計(jì)一個(gè)簡(jiǎn)樸計(jì)算器程序,要求依據(jù)用戶從鍵盤輸入下列形式表示式: 操作數(shù)1 運(yùn)算符op 操作數(shù)2 然后,計(jì)算并輸出表示式值 指定運(yùn)算符為 加(+) 減(-) 乘(*) 除(/) 第13頁(yè)第13頁(yè)main()int data1, data2; /*定義兩個(gè)操作符*/char op; /*定義運(yùn)算符*/printf(Please
8、enter the expression:);scanf(%d%c%d, &data1, &op, &data2); /*輸入運(yùn)算表示式*/switch (op) case +: /*處理加法*/printf(%d + %d = %dn, data1, data2, data1 + data2); break;case -: /*處理減法*/printf(%d - %d = %dn, data1, data2, data1 - data2);break;case *: /*處理乘法*/printf(%d * %d = %dn, data1, data2, data1 * data2); bre
9、ak;case /: /*處理除法*/if (0 = data2) printf(Division by zero!n);else printf(%d/%d = %dn, data1, data2, data1/data2); break;default: printf(Unknown operator! n);例4.8第14頁(yè)第14頁(yè)試驗(yàn)2:選擇結(jié)構(gòu)編程練習(xí)簡(jiǎn)樸計(jì)算器程序 本試驗(yàn)程序是在例4.8基礎(chǔ)上,增長(zhǎng)下列要求:(1)假如要求程序能進(jìn)行浮點(diǎn)數(shù)算術(shù)運(yùn)算,程序應(yīng)當(dāng)如何修改? 如何比較實(shí)型變量data2和常數(shù)0是否相等?(2)假如要求輸入算術(shù)表示式中操作數(shù)和運(yùn)算符之間能夠加入任意多空白符,那么
10、程序如何修改?(3)(選作題)假如要求連續(xù)做多次算術(shù)運(yùn)算,每次運(yùn)算結(jié)束后,程序都給出提醒:Do you want to continue(Y/N or y/n)?假如用戶輸入Y或y時(shí),程序繼續(xù)進(jìn)行其它算術(shù)運(yùn)算,不然程序才退出運(yùn)營(yíng)狀態(tài)。那么,程序如何修改? 第15頁(yè)第15頁(yè)語(yǔ)句 if (0 = data2)必要性1998年11月科學(xué)美國(guó)人雜志,描述了美國(guó)導(dǎo)彈巡洋艦約克敦號(hào)上一起事故,除零錯(cuò)造成軍艦推動(dòng)系統(tǒng)關(guān)閉假如要求程序能進(jìn)行浮點(diǎn)數(shù)算術(shù)運(yùn)算,語(yǔ)句 if (0 = data2)還能用于比較實(shí)型變量data2和常數(shù)0大小嗎?if (fabs(data2) = 1e-7)假如要求輸入算術(shù)表示式中操作數(shù)
11、和運(yùn)算符之間能夠加入任意多個(gè)空格符,那么程序如何修改?scanf(%d%c%d, &data1, &op, &data2);scanf(%d%1s%d, &data1, &op, &data2);試驗(yàn)2:選擇結(jié)構(gòu)編程練習(xí)簡(jiǎn)樸計(jì)算器程序 第16頁(yè)第16頁(yè)試驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)猜數(shù)游戲 在這個(gè)試驗(yàn)中,我們將嘗試編寫一個(gè)猜數(shù)游戲程序,這個(gè)程序看上去有些難度,但是假如你按下列要求以循序漸進(jìn)方式進(jìn)行編程實(shí)現(xiàn),你就會(huì)發(fā)覺(jué)其實(shí)這個(gè)程序是很容易實(shí)現(xiàn)。先編寫第一個(gè)程序,然后試著在第一個(gè)程序基礎(chǔ)上編寫第二個(gè)程序,。程序1:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間數(shù)請(qǐng)人猜,假如人猜對(duì)了,則計(jì)算機(jī)給出提醒:“Righ
12、t!”, 不然提醒:“Wrong!”,并告訴人所猜數(shù)是大(Too high)還是小(Too low),然后結(jié)束游戲。要求每次運(yùn)營(yíng)程序時(shí)機(jī)器所“想”數(shù)不能都是同樣。 第17頁(yè)第17頁(yè)猜數(shù)游戲用到庫(kù)函數(shù)隨機(jī)函數(shù)srand為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來(lái)實(shí)現(xiàn)對(duì)函數(shù)rand所產(chǎn)生偽隨機(jī)數(shù) “隨機(jī)化” 通過(guò)鍵入隨機(jī)數(shù)種子,產(chǎn)生0,100之間隨機(jī)數(shù)scanf(%u, &seed); srand(seed); magic = rand() % 100 + 1; 第18頁(yè)第18頁(yè)#include #include main() int magic; int guess; int counter; unsig
13、ned int seed; printf(Please enter seed:);scanf(%u, &seed);srand(seed);magic = rand() % 100 + 1; counter = 0; doprintf(Please guess a magic number:);scanf(%d, &guess); counter +; if (guess magic) printf(Wrong! Too high!n);else if (guess magic) printf(Wrong! Too low!n);while (guess != magic); printf(R
14、ight!n); printf(counter = %d n, counter); 第19頁(yè)第19頁(yè)猜數(shù)游戲用到庫(kù)函數(shù)使用計(jì)算機(jī)讀取其時(shí)鐘值并把該值自動(dòng)設(shè)置為隨機(jī)數(shù)種子,產(chǎn)生0,100之間隨機(jī)數(shù)函數(shù)time()返回以秒計(jì)算當(dāng)前時(shí)間值,該值被轉(zhuǎn)換為無(wú)符號(hào)整數(shù)并用作隨機(jī)數(shù)發(fā)生器種子 #include srand(time(NULL); magic = rand() % 100 + 1; 第20頁(yè)第20頁(yè)#include #include #include main() int magic; int guess; int counter; srand(time(NULL);magic = rand(
15、) % 100 + 1; counter = 0; doprintf(Please guess a magic number:);scanf(%d, &guess); counter +; if (guess magic) printf(Wrong! Too high!n);else if (guess magic) printf(Wrong! Too low!n);while (guess != magic); printf(Right!n); printf(counter = %d n, counter); 第21頁(yè)第21頁(yè)程序2:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間數(shù)請(qǐng)人猜,假如人猜對(duì)
16、了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反應(yīng)猜數(shù)者“猜”水平,不然計(jì)算機(jī)給出提醒,告訴人所猜數(shù)是太大還是太小,直到人猜對(duì)為止。 試驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)猜數(shù)游戲 第22頁(yè)第22頁(yè)程序3:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間數(shù)請(qǐng)人猜,假如人猜對(duì)了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反應(yīng)猜數(shù)者“猜”水平,不然計(jì)算機(jī)給出提醒,告訴人所猜數(shù)是太大還是太小,最多能夠猜10次,假如猜了10次仍未猜中話,則結(jié)束游戲。 試驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)猜數(shù)游戲 第23頁(yè)第23頁(yè)#include #include #include main() int magic; int
17、guess; int counter; srand(time(NULL); magic = rand() % 100 + 1; counter = 0; doprintf(Please guess a magic number:);scanf(%d, &guess); counter +; if (guess magic) printf(Wrong! Too high!n);else if (guess magic) printf(Wrong! Too low!n);elseprintf(Right!n);while (guess != magic) & (counter 10); print
18、f(counter = %d n, counter); 第24頁(yè)第24頁(yè)程序4:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間數(shù)請(qǐng)人猜,假如人猜對(duì)了,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反應(yīng)猜數(shù)者“猜”水平,且結(jié)束游戲,不然計(jì)算機(jī)給出提醒,告訴人所猜數(shù)是太大還是太小,最多能夠猜10次,假如猜了10次仍未猜中話,則停止本次猜數(shù),然后繼續(xù)猜下一個(gè)數(shù)。每次運(yùn)營(yíng)程序能夠重復(fù)猜多個(gè)數(shù),直到操作者想停止時(shí)才結(jié)束。 試驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)猜數(shù)游戲 第25頁(yè)第25頁(yè)試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考試題 程序1:通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,假如輸入答案正確,則顯示“Right!”,不然顯示“Not
19、 correct! Try again!”;第26頁(yè)第26頁(yè)試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考試題/* 函數(shù)功效: 計(jì)算兩整型數(shù)之和,假如與用戶輸入答案相同,則返回1,不然返回0 函數(shù)參數(shù): 整型變量a和b,分別代表被加數(shù)和加數(shù) 函數(shù)返回值:當(dāng)a加b結(jié)果與用戶輸入答案相同時(shí),返回1,不然返回0*/int AddTest(int a, int b)int answer;printf(%d+%d=, a, b);scanf(%d, &answer);if (a+b = answer) return 1;else return 0;void Print(int flag) if (flag) prin
20、tf(Right!n); else printf(Not correct!n);第27頁(yè)第27頁(yè)試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考試題 程序2:通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,假如輸入答案正確,則顯示“Right!”,不然顯示“Not correct! Try again!”,直到做對(duì)為止;第28頁(yè)第28頁(yè)main() int a, b, answer; printf(Input a,b:); scanf(%d,%d, &a, &b); answer = AddTest(a, b); Print(answer);do while (answer = 0);試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考
21、試題 第29頁(yè)第29頁(yè)試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考試題 程序3:通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,假如輸入答案正確,則顯示“Right!”,不然提醒重做,顯示“Not correct! Try again!”,最多給三次機(jī)會(huì),假如三次仍未做對(duì),則顯示“Not correct. You have tried three times! Test over!”程序結(jié)束;第30頁(yè)第30頁(yè)main() answer = AddTest(a, b); Print(answer, chance); chance = 0; do chance+; while (answer = 0 & chance
22、 3);試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考試題 第31頁(yè)第31頁(yè)試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考試題 程序4:連續(xù)做10道題,通過(guò)計(jì)算機(jī)隨機(jī)產(chǎn)生兩個(gè)110之間加數(shù)給學(xué)生出一道加法運(yùn)算題,假如輸入答案正確,則顯示“Right!”,不然顯示“Not correct!”,不給機(jī)會(huì)重做,10道題做完后,按每題10分統(tǒng)計(jì)總得分,然后打印出總分和做錯(cuò)題目數(shù)量。第32頁(yè)第32頁(yè) srand(time(NULL); error = 0; score = 0; for (i=0; i10; i+) a = rand()%10 + 1; b = rand()%10 + 1; answer = AddTest(a,
23、b); Print(answer); if (answer = 1) score = score + 10; else error+; 試驗(yàn)4:函數(shù)編程練習(xí)小學(xué)生加法考試題 第33頁(yè)第33頁(yè)試驗(yàn)5:數(shù)組編程練習(xí)檢查并打印魔方矩陣 在下面55魔方矩陣中,每一行、每一列、每一對(duì)角線上元素之和都是相等,試編寫程序?qū)⑦@些魔方矩陣中元素讀到一個(gè)二維整型數(shù)組中,然后,檢查其是否為魔方矩陣,并將其按下列格式顯示到屏幕上。 17241815235714164613202210121921311182529第34頁(yè)第34頁(yè)試驗(yàn)5:數(shù)組編程練習(xí)餐飲服務(wù)質(zhì)量調(diào)查打分 有40個(gè)學(xué)生被邀請(qǐng)給自助餐廳食品和服務(wù)質(zhì)量打分(
24、110等級(jí)),統(tǒng)計(jì)調(diào)查結(jié)果,并用*打印下列形式統(tǒng)計(jì)結(jié)果直方圖 Grade CountHistogram 1 5* 2 10* 3 7* .第35頁(yè)第35頁(yè)試驗(yàn)5:數(shù)組編程練習(xí)餐飲服務(wù)質(zhì)量調(diào)查打分 提醒定義數(shù)組score存儲(chǔ)打分?jǐn)?shù)定義數(shù)組count為計(jì)數(shù)器(count0不用)計(jì)算統(tǒng)計(jì)結(jié)果:設(shè)置一個(gè)循環(huán),依次檢查數(shù)組元素值scorei,是1則將數(shù)組元素count1加1,是2則將數(shù)組元素count2加1,依這類推for (i=0; iSTUDENTS; i+)countscorei +;打印統(tǒng)計(jì)結(jié)果,設(shè)置一個(gè)循環(huán),按count數(shù)組元素值,打印相應(yīng)個(gè)數(shù)符號(hào)*第36頁(yè)第36頁(yè)試驗(yàn)6:一維數(shù)組和函數(shù)綜合編
25、程練習(xí) 學(xué)生成績(jī)統(tǒng)計(jì) 從鍵盤輸入一個(gè)班(全班最多不超出30人)學(xué)生某門課成績(jī),當(dāng)輸入成績(jī)?yōu)樨?fù)值時(shí),輸入結(jié)束,分別統(tǒng)計(jì)下列內(nèi)容:(1)統(tǒng)計(jì)不及格人數(shù)并打印不及格學(xué)生名單;(2)統(tǒng)計(jì)成績(jī)?cè)谌嗥骄旨捌骄种蠈W(xué)生人數(shù)并打印其學(xué)生名單;(3)統(tǒng)計(jì)各分?jǐn)?shù)段學(xué)生人數(shù)及所占百分比; 第37頁(yè)第37頁(yè)試驗(yàn)6:一維數(shù)組和函數(shù)綜合編程練習(xí) 學(xué)生成績(jī)統(tǒng)計(jì) 提醒:(1)用numi存儲(chǔ)第i+1個(gè)學(xué)生學(xué)號(hào),用scorei存儲(chǔ)第i+1個(gè)學(xué)生成績(jī)。設(shè)置計(jì)數(shù)器count,當(dāng)scorei=aver時(shí),打印numi和scorei。(3)將成績(jī)分為六個(gè)分?jǐn)?shù)段,60分下列為第0段,6069為第1段,7079為第2段,8089為第3
26、段,9099為第4段,100分為第5段,因此,成績(jī)與分?jǐn)?shù)段相應(yīng)關(guān)系為:各分?jǐn)?shù)段學(xué)生人數(shù)保留在數(shù)組stu中,用stui存儲(chǔ)第i段學(xué)生人數(shù)。對(duì)于每個(gè)學(xué)生成績(jī),先計(jì)算出該成績(jī)所相應(yīng)分?jǐn)?shù)段,然后將相應(yīng)分?jǐn)?shù)段人數(shù)加1,即stui+。 第38頁(yè)第38頁(yè)試驗(yàn)7:二維數(shù)組、函數(shù)和慣用算法綜合編程練習(xí) 成績(jī)排名次 某班期末考試科目為數(shù)學(xué)(MT)、英語(yǔ)(EN)和物理(PH),有最多不超出30人參與考試。考試后要求:(1)計(jì)算每個(gè)學(xué)生總分和平均分;(2)按總分成績(jī)由高到低排出成績(jī)名次;(3)打印出名次表,表格內(nèi)包括學(xué)生編號(hào)、各科分?jǐn)?shù)、總分和平均分;(4)任意輸入一個(gè)學(xué)號(hào),能夠查找出該學(xué)生在班級(jí)中排名及其考試分?jǐn)?shù) 第
27、39頁(yè)第39頁(yè)試驗(yàn)7:二維數(shù)組、函數(shù)和慣用算法綜合編程練習(xí) 成績(jī)排名次 提醒:用二維數(shù)組score存儲(chǔ)每個(gè)學(xué)生各門課程成績(jī),用一維數(shù)組num存儲(chǔ)每個(gè)學(xué)生學(xué)號(hào),用一維數(shù)組sum存儲(chǔ)每個(gè)學(xué)生總分,用一維數(shù)組aver存儲(chǔ)每個(gè)學(xué)生平均分。(1)用函數(shù)編程實(shí)現(xiàn)計(jì)算每個(gè)學(xué)生總分;(2)用函數(shù)編程實(shí)現(xiàn)按總分由高到低對(duì)學(xué)生成績(jī)排序,注意:排序時(shí),一維數(shù)組sum元素改變應(yīng)連同二維數(shù)組score和一維數(shù)組num和aver一起改變;(3)用函數(shù)編程實(shí)現(xiàn)查找學(xué)號(hào)為k學(xué)生在班級(jí)中排名名次及相關(guān)成績(jī)等信息,找不屆時(shí)返回-1值。 第40頁(yè)第40頁(yè)試驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí) 打印最高分和學(xué)號(hào) 假設(shè)每班人數(shù)最多不超出
28、40人,詳細(xì)人數(shù)由鍵盤輸入,試編程打印最高分及其學(xué)號(hào)。程序1:用一維數(shù)組和指針變量作函數(shù)參數(shù),編程打印某班一門課成績(jī)最高分和學(xué)號(hào)。int FindMax(int score, long num, int n, long *pMaxNum); 第41頁(yè)第41頁(yè)/* 函數(shù)功效:計(jì)算最高分及最高分學(xué)生學(xué)號(hào) 函數(shù)參數(shù):整型數(shù)組score,存儲(chǔ)學(xué)生成績(jī) 長(zhǎng)整型數(shù)組num,存儲(chǔ)學(xué)生學(xué)號(hào) 長(zhǎng)整型指針變量pMaxNum,存儲(chǔ)求出來(lái)最高分學(xué)生學(xué)號(hào) 函數(shù)返回值:最高分*/int FindMax(int score, long num, int n, long *pMaxNum) int i;int maxScor
29、e;maxScore = score0;*pMaxNum = num0; for (i=1; i maxScore) maxScore = scorei; *pMaxNum = numi; return (maxScore); 第42頁(yè)第42頁(yè)試驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí) 打印最高分和學(xué)號(hào) 程序2:用二維數(shù)組和指針變量作函數(shù)參數(shù),編程打印3個(gè)班學(xué)生(假設(shè)每班4個(gè)學(xué)生)某門課成績(jī)最高分,并指出含有該最高分成績(jī)學(xué)生是第幾種班第幾種學(xué)生。int FindMax(int scoreCLASSSTU, int m, int *pRow, int *pCol); 第43頁(yè)第43頁(yè)int FindM
30、ax(int scoreSTU, int m, int *pRow, int *pCol) int i, j, maxScore;maxScore = score00; *pRow = 0; *pCol = 0; for (i = 0; im; i+)for (j = 0; j maxScore) maxScore = scoreij; *pRow = i; *pCol = j; return (maxScore); 試驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí) 打印最高分和學(xué)號(hào) 第44頁(yè)第44頁(yè)試驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí) 打印最高分和學(xué)號(hào) 程序3:用指向二維數(shù)組第0行第0列元素指針作函數(shù)參
31、數(shù),編寫一個(gè)能計(jì)算任意m行n列二維數(shù)組中最大值,并指出其所在行列下標(biāo)值函數(shù),利用該函數(shù)計(jì)算3個(gè)班學(xué)生(假設(shè)每班4個(gè)學(xué)生)某門課成績(jī)最高分,并指出含有該最高分成績(jī)學(xué)生是第幾種班第幾種學(xué)生。int FindMax(int *p, int m, int n, int *pRow, int *pCol); 第45頁(yè)第45頁(yè)int FindMax(int *p, int m, int n, int *pRow, int *pCol) int i, j, maxScore; maxScore = p0; *pRow = 0; *pCol = 0; for (i = 0; im; i+) for (j =
32、0; j maxScore) maxScore = pi*n+j; *pRow = i; *pCol = j; return (maxScore); 試驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí) 打印最高分和學(xué)號(hào) 第46頁(yè)第46頁(yè)試驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí) 打印最高分和學(xué)號(hào) 程序4:編寫一個(gè)能計(jì)算任意m行n列二維數(shù)組中最大值,并指出其所在行列下標(biāo)值函數(shù),利用該函數(shù)和動(dòng)態(tài)內(nèi)存分派辦法,計(jì)算任意m個(gè)班、每班n個(gè)學(xué)生某門課成績(jī)最高分,并指出含有該最高分成績(jī)學(xué)生是第幾種班第幾種學(xué)生。 int FindMax(int *p, int m, int n, int *pRow, int *pCol); 第
33、47頁(yè)第47頁(yè)試驗(yàn)9:結(jié)構(gòu)體編程練習(xí)在屏幕上模擬顯示一個(gè)數(shù)字式時(shí)鐘 定義一個(gè)時(shí)鐘結(jié)構(gòu)體類型:struct clock int hour; int minute; int second;typedef struct clock CLOCK;然后,將下列用全局變量編寫時(shí)鐘模擬顯示程序改成用CLOCK結(jié)構(gòu)體變量類型重新編寫。 時(shí):分:秒第48頁(yè)第48頁(yè)void update(CLOCK *t) t-second+; if (t-second = 60) t-second = 0; t-minute+; if (t-minute = 60) t-minute = 0; t-hour+; if (t-h
34、our = 24) t-hour = 0;void display(CLOCK *t) printf(%2d:%2d:%2dr, t-hour, t-minute, t-second);試驗(yàn)9:結(jié)構(gòu)體編程練習(xí)在屏幕上模擬顯示一個(gè)數(shù)字式時(shí)鐘第49頁(yè)第49頁(yè)試驗(yàn)10:文獻(xiàn)編程練習(xí) 文獻(xiàn)拷貝程序1:依據(jù)程序提醒從鍵盤輸入一個(gè)已存在文本文獻(xiàn)完整文獻(xiàn)名,并再輸入一個(gè)新文本文獻(xiàn)完整文獻(xiàn)名,然后編程將已存在文本文獻(xiàn)中內(nèi)容所有拷貝到新文本文獻(xiàn)中去,利用文本編輯軟件,通過(guò)查看文獻(xiàn)內(nèi)容驗(yàn)證程序執(zhí)行結(jié)果。第50頁(yè)第50頁(yè)試驗(yàn)10:文獻(xiàn)編程練習(xí) 文獻(xiàn)拷貝程序2:模擬DOS命令下COPY命令,在DOS狀態(tài)下鍵入命令行,
35、以實(shí)現(xiàn)將一個(gè)已存在文本文獻(xiàn)中內(nèi)容所有拷貝到新文本文獻(xiàn)中去,利用文本編輯軟件,通過(guò)查看文獻(xiàn)內(nèi)容驗(yàn)證程序執(zhí)行結(jié)果。第51頁(yè)第51頁(yè)試驗(yàn)10:文獻(xiàn)編程練習(xí) 文獻(xiàn)拷貝程序3:(選作)依據(jù)提醒從鍵盤輸入一個(gè)已存在文本文獻(xiàn)完整文獻(xiàn)名,并再輸入另一個(gè)已存在文本文獻(xiàn)完整文獻(xiàn)名,然后編程將第一個(gè)文本文獻(xiàn)內(nèi)容追加到第二個(gè)文本文獻(xiàn)原內(nèi)容之后,利用文本編輯軟件,通過(guò)查看文獻(xiàn)內(nèi)容驗(yàn)證程序執(zhí)行結(jié)果。第52頁(yè)第52頁(yè)試驗(yàn)10:文獻(xiàn)編程練習(xí) 文獻(xiàn)拷貝程序4:(選作)依據(jù)提醒從鍵盤輸入一個(gè)已存在文本文獻(xiàn)完整文獻(xiàn)名,并再輸入另一個(gè)已存在文本文獻(xiàn)完整文獻(xiàn)名,然后編程將源文本文獻(xiàn)內(nèi)容追加到目的文本文獻(xiàn)原內(nèi)容之后,并編程實(shí)現(xiàn)在顯示器上
36、顯示源文獻(xiàn)和目的文獻(xiàn)文獻(xiàn)內(nèi)容,以此來(lái)驗(yàn)證程序執(zhí)行結(jié)果。 第53頁(yè)第53頁(yè)課外試驗(yàn)題目試驗(yàn)一 計(jì)算到期存款本息之和 已知銀行整存整取存款不同期限月息利率分別為:2.25% 期限一年2.43% 期限二年2.70% 期限三年2.88% 期限五年3.00% 期限八年要求輸入存錢本金和期限,求到期時(shí),能從銀行得到利息與本金累計(jì)。提醒:用switch語(yǔ)句編程。 第54頁(yè)第54頁(yè)課外試驗(yàn)題目試驗(yàn)二 存款預(yù)算 假設(shè)銀行一年整存零取月息為1.875%,現(xiàn)在某人手頭有一筆錢,他打算在此后五年中每年年終取出1000元作為孩子明年教育金,到第五年孩子畢業(yè)時(shí)剛好取完這筆錢,現(xiàn)在請(qǐng)你算一算第一年年初他應(yīng)存入銀行多少錢呢?
37、 第55頁(yè)第55頁(yè)課外試驗(yàn)題目試驗(yàn)二 存款預(yù)算 提醒:分析存錢和取錢過(guò)程可采用逆推辦法,然后采用迭代法求解。若第五年年終連本帶息要取出1000元,則第五年年初銀行中存款數(shù)額y5應(yīng)為:y5 = 1000 / (1 + 12 * 0.01875)按題意,由第五年年初銀行中存款數(shù)額y5,求得第四年年初銀行中存款數(shù)額y4應(yīng)為:y4 = (y5 + 1000) / (1 + 12 * 0.01875)依這類推,可由第n+1年年初銀行中存款數(shù)額yn+1求得第n年年初銀行中存款數(shù)額y n為:y n = (y n+1 + 1000) / (1 + 12 * 0.01875)以0作為y n+1初值,對(duì)上式進(jìn)行逆
38、推迭代,迭代5次結(jié)果即為第1年年初銀行中存款數(shù)額y 1,也就是他現(xiàn)在要存入銀行錢數(shù)。 第56頁(yè)第56頁(yè)課外試驗(yàn)題目試驗(yàn)三 尋找最正確存款方案 已知銀行整存整取存款不同期限月息利率分別為:2.25% 期限一年2.43% 期限二年2.70% 期限三年2.88% 期限五年3.00% 期限八年假設(shè)銀行對(duì)定時(shí)存款過(guò)期部分不付利息,現(xiàn)在某人有2000元錢,要存,問(wèn)怎樣存才干使后得到本利之和累計(jì)最多? 第57頁(yè)第57頁(yè)課外試驗(yàn)題目試驗(yàn)三 尋找最正確存款方案提醒:為了得到最多利息,存入銀行錢應(yīng)在到期時(shí)馬上就取出來(lái),然后立刻將原來(lái)本金和利息加起來(lái)再作為新本金存入銀行,這么本利不停地滾動(dòng)直到滿二十年為止。因?yàn)榇婵?/p>
39、利率不同,因此,不同存款方法(年限)存二十年得到利息也是不同。分析題意,設(shè)2000元存,其中一年期存了n1次,二年期存了n2次,三年期存了n3次,五年期存了n5次,八年期存了n8次,則到期時(shí)存款人應(yīng)得本利之和為:其中,rateN對(duì)應(yīng)存款年限利率。第58頁(yè)第58頁(yè)課外試驗(yàn)題目試驗(yàn)三 尋找最佳存款方案依據(jù)題意,還可得到下列限制條件:0 n8 20 n5 (20 8 * n8) / 50 n3 (20 8 * n8 5 * n5) / 30 n2 (20 8 * n8 5 * n5 3 * n3) / 2n1 = 20 8 * n8 5 * n5 3 * n3 2 * n2采用窮舉法窮舉所有n8,n
40、5,n3,n2,n1組合,代入本利計(jì)算公式,計(jì)算得到所有存款方案。求最大存款方案辦法為:將現(xiàn)行存款方案與過(guò)去統(tǒng)計(jì)最大存款方案max進(jìn)行比較,若現(xiàn)行存款方案可得到本利之和大,則統(tǒng)計(jì)現(xiàn)行存款方案(即n1,n2,n3,n5,n8值)和本利之和最大值max。 第59頁(yè)第59頁(yè)課外試驗(yàn)題目試驗(yàn)四 抓交通肇事犯 一輛卡車違反了交通規(guī)則,撞人后逃逸?,F(xiàn)場(chǎng)有三人目擊事件,但都沒(méi)有記住車號(hào),只記住車號(hào)一些特性。甲說(shuō):車號(hào)前兩位數(shù)字是相同;乙說(shuō):車號(hào)后兩位數(shù)字是相同,但與前兩位不同;丙是位數(shù)學(xué)家,他說(shuō):四位車號(hào)恰好是一個(gè)整數(shù)平方。現(xiàn)在請(qǐng)你依據(jù)以上線索幫助警方找出車號(hào)方便盡快破案。 第60頁(yè)第60頁(yè)課外試驗(yàn)題目試驗(yàn)
41、四 抓交通肇事犯 提醒:假設(shè)這個(gè)四位數(shù)前兩位數(shù)字都是i,后兩位數(shù)字都是j,則這個(gè)也許四位數(shù)k為:k = 1000 * i + 100 * i + 10 * j + j其中,i和j都在09之間改變?,F(xiàn)在還需使k滿足是一個(gè)整數(shù)m平方,由于k是一個(gè)四位數(shù),因此,m值不也許小于31,因此,可從31開(kāi)始試驗(yàn)是否滿足k = m*m,若不滿足,則m加1再試,直到找到滿足這些限制條件k為止結(jié)束測(cè)試。 第61頁(yè)第61頁(yè)課外試驗(yàn)題目試驗(yàn)五 求解不等式 已知立方和不等式為:13 + 23 + + m3 = n時(shí),利用break語(yǔ)句退出循環(huán),打印出相應(yīng)結(jié)果。這里,因立方運(yùn)算數(shù)值較大,n應(yīng)定義為長(zhǎng)整型。 第62頁(yè)第62
42、頁(yè)課外試驗(yàn)題目試驗(yàn)六 計(jì)算禮炮聲響次數(shù) 為慶?;顒?dòng),現(xiàn)在,A、B、C三條軍艦要同時(shí)開(kāi)始鳴放禮炮各21響。已知A艦每隔5秒放1次,B艦每隔6秒放1次,C艦每隔7秒放1次。假設(shè)各炮手對(duì)時(shí)間掌握非常準(zhǔn)確,那么請(qǐng)問(wèn)觀眾總共能夠聽(tīng)到幾次禮炮聲呢? 第63頁(yè)第63頁(yè)課外試驗(yàn)題目試驗(yàn)六 計(jì)算禮炮聲響次數(shù) 提醒:用n作為聽(tīng)到禮炮聲響計(jì)數(shù)器,用t表示時(shí)間,從第0秒開(kāi)始放第1響,到放完最后一響,最長(zhǎng)時(shí)間為20*7,因此,能夠用一個(gè)for循環(huán)來(lái)模擬每一秒鐘時(shí)間改變,即t從0開(kāi)始循環(huán)到t20*7時(shí)結(jié)束。在循環(huán)體中判斷:假如時(shí)間t是5整數(shù)倍且21響未放完,則A艦放一響,計(jì)數(shù)器n加1;假如時(shí)間t是6整數(shù)倍且21響未放完,則B艦放一響,計(jì)數(shù)器n加1;假如時(shí)間t是7整數(shù)倍且21響未放完,則C艦放一響,計(jì)數(shù)器n加1。但要注意:當(dāng)有兩艦或三艦同時(shí)鳴放時(shí),應(yīng)作1響統(tǒng)計(jì),即n不能同時(shí)計(jì)數(shù),只要有一個(gè)執(zhí)行了計(jì)數(shù),其它兩個(gè)就不能再進(jìn)行計(jì)數(shù)。 利用continue語(yǔ)句編程實(shí)現(xiàn)。 第64頁(yè)第64頁(yè)課外試驗(yàn)題目試驗(yàn)七 產(chǎn)值翻倍 假設(shè)當(dāng)年產(chǎn)值為100
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《廣告創(chuàng)意與設(shè)計(jì)》 課件 王樹(shù)良 項(xiàng)目1-6 理解廣告創(chuàng)意- 廣告設(shè)計(jì)基礎(chǔ)
- 電子政務(wù)模擬實(shí)驗(yàn)指導(dǎo)手冊(cè)
- 政治社會(huì)學(xué) 03政治社會(huì)學(xué)的理論范式學(xué)習(xí)資料
- 2025山東建筑安全員-B證考試題庫(kù)附答案
- 浙江溫州龍灣區(qū)農(nóng)村商業(yè)銀行專項(xiàng)考試模擬預(yù)測(cè)試卷(八) (42)學(xué)習(xí)資料
- 財(cái)務(wù)人員崗位合同
- 個(gè)人工作述職
- 電算化理論部分練習(xí)題
- 第十三屆全國(guó)交通運(yùn)輸行業(yè)公路收費(fèi)及監(jiān)控員職業(yè)技能競(jìng)賽考試題庫(kù)
- 園藝植物病蟲害防治74
- 婦科分級(jí)護(hù)理標(biāo)準(zhǔn)
- 山東省青島市城陽(yáng)區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期中考試語(yǔ)文試題
- 武漢大學(xué)介紹PPT
- 廣西桂林市國(guó)龍外國(guó)語(yǔ)學(xué)校2022-2023學(xué)年下學(xué)期期中考試八年級(jí)數(shù)學(xué)試題+
- 《雷鋒的故事》試題和答案
- 新各種疾病門診病歷范文(通用十二篇)
- 頸椎椎間盤突出癥病人護(hù)理
- 露天煤礦水文地質(zhì)類型劃分報(bào)告編制細(xì)則
- 智慧農(nóng)業(yè)的發(fā)展歷程與國(guó)內(nèi)外案例分析
- 浙江汽車職業(yè)技術(shù)學(xué)院?jiǎn)握新殰y(cè)參考試題庫(kù)(含答案)
- 醫(yī)院培訓(xùn)課件:《ERAS在胃腸外科的應(yīng)用》
評(píng)論
0/150
提交評(píng)論