版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)教學(xué)的學(xué)習(xí)教案第1頁(yè)/共76頁(yè)主教材:蘇小紅等,《C語(yǔ)言大學(xué)實(shí)用教程》,電子工業(yè)出版社,2004,8蘇小紅等,《C語(yǔ)言大學(xué)實(shí)用教程(第2版)》,電子工業(yè)出版社,2007,2實(shí)驗(yàn)教材:蘇小紅等,《C語(yǔ)言大學(xué)實(shí)用教程習(xí)題與實(shí)驗(yàn)指導(dǎo)》,電子工業(yè)出版社,2004,8蘇小紅等,《C語(yǔ)言大學(xué)實(shí)用教程學(xué)習(xí)指導(dǎo)》,電子工業(yè)出版社,2007,4第2頁(yè)/共76頁(yè)實(shí)驗(yàn)內(nèi)容第3頁(yè)/共76頁(yè)實(shí)驗(yàn)1:熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)——鍵盤(pán)輸入與屏幕輸出練習(xí)
問(wèn)題1:要使下面程序的輸出語(yǔ)句在屏幕上顯示1,2,34,則從鍵盤(pán)輸入的數(shù)據(jù)格式應(yīng)為以下備選答案中的哪一個(gè)?#include<stdio.h>main(){ chara,b;intc;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c);}A)1234 B)1,2,34C)’1’,’2’,34 D)1234第4頁(yè)/共76頁(yè)實(shí)驗(yàn)1:熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)——鍵盤(pán)輸入與屏幕輸出練習(xí)
問(wèn)題2:與上面程序的鍵盤(pán)輸入相同的情況下,要使上面程序的輸出語(yǔ)句在屏幕上顯示1234,則應(yīng)修改程序中的哪條語(yǔ)句?怎樣修改?#include<stdio.h>main(){ chara,b;intc;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c);}第5頁(yè)/共76頁(yè)問(wèn)題3:要使上面程序的鍵盤(pán)輸入數(shù)據(jù)格式為1,2,34,輸出語(yǔ)句在屏幕上顯示的結(jié)果也為1,2,34,則應(yīng)修改程序中的哪條語(yǔ)句?怎樣修改?#include<stdio.h>main(){ chara,b;intc;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c);}實(shí)驗(yàn)1:熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)——鍵盤(pán)輸入與屏幕輸出練習(xí)第6頁(yè)/共76頁(yè)問(wèn)題4:要使上面程序的鍵盤(pán)輸入數(shù)據(jù)格式為1,2,34,而輸出語(yǔ)句在屏幕上顯示的結(jié)果為’1’,’2’,34,則應(yīng)修改程序中的哪條語(yǔ)句?怎樣修改?[提示:利用轉(zhuǎn)義字符輸出字符單引號(hào)字符。]#include<stdio.h>main(){ chara,b;intc;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c);}實(shí)驗(yàn)1:熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)——鍵盤(pán)輸入與屏幕輸出練習(xí)第7頁(yè)/共76頁(yè)問(wèn)題5:要使上面程序的鍵盤(pán)輸入無(wú)論用下面哪種格式輸入數(shù)據(jù),程序在屏幕上的輸出結(jié)果都為’1’,’2’,34,則程序應(yīng)修改程序中的哪條語(yǔ)句?怎樣修改?第一種輸入方式:1,2,34↙(以逗號(hào)作為分隔符)第二種輸入方式:1234↙(以空格作為分隔符)第三種輸入方式:1234↙(以Tab鍵作為分隔符)第四種輸入方式:1↙2↙34↙(以回車(chē)符作為分隔符)實(shí)驗(yàn)1:熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)——鍵盤(pán)輸入與屏幕輸出練習(xí)第8頁(yè)/共76頁(yè)實(shí)驗(yàn)1:熟悉上機(jī)環(huán)境和順序結(jié)構(gòu)編程練習(xí)——計(jì)算定期存款本利之和設(shè)銀行定期存款的年利率rate為2.25%,并已知存款期為n年,存款本金為capital元,試編程計(jì)算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由鍵盤(pán)輸入。第9頁(yè)/共76頁(yè)實(shí)驗(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.923+moHeight)/2(cm)此外,如果喜愛(ài)體育鍛煉,那么可增加身高2%,如果有良好的衛(wèi)生飲食習(xí)慣,那么可增加身高1.5%。第10頁(yè)/共76頁(yè)實(shí)驗(yàn)2:選擇結(jié)構(gòu)編程練習(xí)
——身高預(yù)測(cè)
編程從鍵盤(pán)輸入你的性別(用字符型變量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è)。第11頁(yè)/共76頁(yè)實(shí)驗(yàn)2:選擇結(jié)構(gòu)編程練習(xí)
——簡(jiǎn)單的計(jì)算器程序要求用switch語(yǔ)句編程設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序。要求根據(jù)用戶(hù)從鍵盤(pán)輸入的表達(dá)式:操作數(shù)1運(yùn)算符op操作數(shù)2計(jì)算表達(dá)式的值,指定的算術(shù)運(yùn)算符為加(+)、減(-)、乘(*)、除(/)。第12頁(yè)/共76頁(yè)例4.8:計(jì)算器程序編程設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序,要求根據(jù)用戶(hù)從鍵盤(pán)輸入如下形式的表達(dá)式:操作數(shù)1運(yùn)算符op操作數(shù)2
然后,計(jì)算并輸出表達(dá)式的值指定的運(yùn)算符為加(+)減(-)乘(*)除(/)第13頁(yè)/共76頁(yè)main(){
intdata1,data2;/*定義兩個(gè)操作符*/
charop;/*定義運(yùn)算符*/ printf("Pleaseentertheexpression:"); scanf("%d%c%d",&data1,&op,&data2);/*輸入運(yùn)算表達(dá)式*/
switch(op) {
case'+':/*處理加法*/ printf("%d+%d=%d\n",data1,data2,data1+data2);
break;
case'-':/*處理減法*/ printf("%d-%d=%d\n",data1,data2,data1-data2);
break;
case'*':/*處理乘法*/ printf("%d*%d=%d\n",data1,data2,data1*data2);
break;
case'/':/*處理除法*/
if(0==data2) printf("Divisionbyzero!\n");
else
printf("%d/%d=%d\n",data1,data2,data1/data2);
break;
default: printf("Unknownoperator!\n"); }}例4.8第14頁(yè)/共76頁(yè)實(shí)驗(yàn)2:選擇結(jié)構(gòu)編程練習(xí)
——簡(jiǎn)單的計(jì)算器程序本實(shí)驗(yàn)程序是在例4.8基礎(chǔ)上,增加如下要求:(1)如果要求程序能進(jìn)行浮點(diǎn)數(shù)的算術(shù)運(yùn)算,程序應(yīng)該如何修改?如何比較實(shí)型變量data2和常數(shù)0是否相等?(2)如果要求輸入的算術(shù)表達(dá)式中的操作數(shù)和運(yùn)算符之間可以加入任意多空白符,那么程序如何修改?(3)(選作題)如果要求連續(xù)做多次算術(shù)運(yùn)算,每次運(yùn)算結(jié)束后,程序都給出提示:Doyouwanttocontinue(Y/Nory/n)?如果用戶(hù)輸入Y或y時(shí),程序繼續(xù)進(jìn)行其它算術(shù)運(yùn)算,否則程序才退出運(yùn)行狀態(tài)。那么,程序如何修改?第15頁(yè)/共76頁(yè)語(yǔ)句if(0==data2)的必要性1998年11月《科學(xué)美國(guó)人》雜志,描述了美國(guó)導(dǎo)彈巡洋艦約克敦號(hào)上的一起事故,除零錯(cuò)導(dǎo)致軍艦推進(jìn)系統(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ù)表達(dá)式中的操作數(shù)和運(yùn)算符之間可以加入任意多個(gè)空格符,那么程序如何修改?scanf("%d%c%d",&data1,&op,&data2);scanf("%d%1s%d",&data1,&op,&data2);實(shí)驗(yàn)2:選擇結(jié)構(gòu)編程練習(xí)
——簡(jiǎn)單的計(jì)算器程序第16頁(yè)/共76頁(yè)實(shí)驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)
——猜數(shù)游戲在這個(gè)實(shí)驗(yàn)中,我們將嘗試編寫(xiě)一個(gè)猜數(shù)游戲程序,這個(gè)程序看上去有些難度,但是如果你按下列要求以循序漸進(jìn)方式進(jìn)行編程實(shí)現(xiàn),你就會(huì)發(fā)現(xiàn)其實(shí)這個(gè)程序是很容易實(shí)現(xiàn)的。先編寫(xiě)第一個(gè)程序,然后試著在第一個(gè)程序的基礎(chǔ)上編寫(xiě)第二個(gè)程序,……。程序1:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則計(jì)算機(jī)給出提示:“Right!”,否則提示:“Wrong!”,并告訴人所猜的數(shù)是大(Toohigh)還是小(Toolow),然后結(jié)束游戲。要求每次運(yùn)行程序時(shí)機(jī)器所“想”的數(shù)不能都是一樣的。第17頁(yè)/共76頁(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è)/共76頁(yè)#include<stdlib.h>#include<stdio.h>main(){
intmagic;
intguess;
intcounter; unsignedint
seed;
printf("Pleaseenterseed:"); scanf("%u",&seed); srand(seed); magic=rand()%100+1; counter=0;
do{ printf("Pleaseguessamagicnumber:"); scanf("%d",&guess); counter++;
if(guess>magic) printf("Wrong!Toohigh!\n");
elseif(guess<magic) printf("Wrong!Toolow!\n"); }while(guess!=magic);
printf("Right!\n"); printf("counter=%d\n",counter);}第19頁(yè)/共76頁(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<time.h>srand(time(NULL));magic=rand()%100+1;第20頁(yè)/共76頁(yè)#include<stdlib.h>#include<stdio.h>#include<time.h>main(){
intmagic;
intguess; intcounter;
srand(time(NULL)); magic=rand()%100+1; counter=0;
do{ printf("Pleaseguessamagicnumber:"); scanf("%d",&guess); counter++;
if(guess>magic) printf("Wrong!Toohigh!\n");
elseif(guess<magic) printf("Wrong!Toolow!\n"); }while(guess!=magic);
printf("Right!\n"); printf("counter=%d\n",counter);}第21頁(yè)/共76頁(yè)程序2:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對(duì)為止。實(shí)驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)
——猜數(shù)游戲第22頁(yè)/共76頁(yè)程序3:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話(huà),則結(jié)束游戲。實(shí)驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)
——猜數(shù)游戲第23頁(yè)/共76頁(yè)#include<stdlib.h>#include<stdio.h>#include<time.h>main(){
intmagic;
intguess;
intcounter; srand(time(NULL)); magic=rand()%100+1; counter=0;
do{ printf("Pleaseguessamagicnumber:"); scanf("%d",&guess); counter++;
if(guess>magic) printf("Wrong!Toohigh!\n");
elseif(guess<magic) printf("Wrong!Toolow!\n");
else
printf("Right!\n"); }while((guess!=magic)&&(counter<10));
printf("counter=%d\n",counter);}第24頁(yè)/共76頁(yè)程序4:編程先由計(jì)算機(jī)“想”一個(gè)1到100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平,且結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話(huà),則停止本次猜數(shù),然后繼續(xù)猜下一個(gè)數(shù)。每次運(yùn)行程序可以反復(fù)猜多個(gè)數(shù),直到操作者想停止時(shí)才結(jié)束。實(shí)驗(yàn)3:循環(huán)結(jié)構(gòu)編程練習(xí)
——猜數(shù)游戲第25頁(yè)/共76頁(yè)實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題程序1:通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Notcorrect!Tryagain!”;第26頁(yè)/共76頁(yè)實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題/*函數(shù)功能:計(jì)算兩整型數(shù)之和,如果與用戶(hù)輸入的答案相同,則返回1,否則返回0
函數(shù)參數(shù):整型變量a和b,分別代表被加數(shù)和加數(shù)函數(shù)返回值:當(dāng)a加b的結(jié)果與用戶(hù)輸入的答案相同時(shí),返回1,否則返回0*/intAddTest(inta,intb){
intanswer; printf("%d+%d=",a,b); scanf("%d",&answer);
if(a+b==answer)
return1;
else
return0;}voidPrint(intflag){if(flag)printf("Right!\n");else printf("Notcorrect!\n");}第27頁(yè)/共76頁(yè)實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題程序2:通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Notcorrect!Tryagain!”,直到做對(duì)為止;第28頁(yè)/共76頁(yè)main(){inta,b,answer;printf("Inputa,b:");scanf("%d,%d",&a,&b); answer=AddTest(a,b); Print(answer);}do{
}while(answer==0);實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題第29頁(yè)/共76頁(yè)實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題程序3:通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,如果輸入答案正確,則顯示“Right!”,否則提示重做,顯示“Notcorrect!Tryagain!”,最多給三次機(jī)會(huì),如果三次仍未做對(duì),則顯示“Notcorrect.Youhavetriedthreetimes!Testover!”程序結(jié)束;第30頁(yè)/共76頁(yè)main(){
answer=AddTest(a,b);
Print(answer,chance);
}chance=0;
do{
chance++;}while(answer==0&&chance<3);實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題第31頁(yè)/共76頁(yè)實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題程序4:連續(xù)做10道題,通過(guò)計(jì)算機(jī)隨機(jī)產(chǎn)生兩個(gè)1~10之間的加數(shù)給學(xué)生出一道加法運(yùn)算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Notcorrect!”,不給機(jī)會(huì)重做,10道題做完后,按每題10分統(tǒng)計(jì)總得分,然后打印出總分和做錯(cuò)的題目數(shù)量。第32頁(yè)/共76頁(yè)
srand(time(NULL));error=0;score=0;
for(i=0;i<10;i++){
a=rand()%10+1;b=rand()%10+1;answer=AddTest(a,b);Print(answer);
if(answer==1)score=score+10;
elseerror++; }實(shí)驗(yàn)4:函數(shù)編程練習(xí)
——小學(xué)生加法考試題第33頁(yè)/共76頁(yè)實(shí)驗(yàn)5:數(shù)組編程練習(xí)
——檢驗(yàn)并打印魔方矩陣在下面的5×5魔方矩陣中,每一行、每一列、每一對(duì)角線(xiàn)上的元素之和都是相等的,試編寫(xiě)程序?qū)⑦@些魔方矩陣中的元素讀到一個(gè)二維整型數(shù)組中,然后,檢驗(yàn)其是否為魔方矩陣,并將其按如下格式顯示到屏幕上。17241815235714164613202210121921311182529第34頁(yè)/共76頁(yè)實(shí)驗(yàn)5:數(shù)組編程練習(xí)
——餐飲服務(wù)質(zhì)量調(diào)查打分有40個(gè)學(xué)生被邀請(qǐng)給自助餐廳的食品和服務(wù)質(zhì)量打分(1~10等級(jí)),統(tǒng)計(jì)調(diào)查結(jié)果,并用*打印如下形式的統(tǒng)計(jì)結(jié)果直方圖
GradeCount Histogram1 5 *****2 10 **********3 7 ******* ...第35頁(yè)/共76頁(yè)實(shí)驗(yàn)5:數(shù)組編程練習(xí)
——餐飲服務(wù)質(zhì)量調(diào)查打分提示定義數(shù)組score存放打的分?jǐn)?shù)定義數(shù)組count為計(jì)數(shù)器(count[0]不用)計(jì)算統(tǒng)計(jì)結(jié)果:設(shè)置一個(gè)循環(huán),依次檢查數(shù)組元素值score[i],是1則將數(shù)組元素count[1]加1,是2則將數(shù)組元素count[2]加1,依此類(lèi)推 for(i=0;i<STUDENTS;i++) { count[score[i]]++; }打印統(tǒng)計(jì)結(jié)果,設(shè)置一個(gè)循環(huán),按count數(shù)組元素的值,打印相應(yīng)個(gè)數(shù)的符號(hào)’*’第36頁(yè)/共76頁(yè)實(shí)驗(yàn)6:一維數(shù)組和函數(shù)綜合編程練習(xí)——學(xué)生成績(jī)統(tǒng)計(jì)從鍵盤(pán)輸入一個(gè)班(全班最多不超過(guò)30人)學(xué)生某門(mén)課的成績(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è)/共76頁(yè)實(shí)驗(yàn)6:一維數(shù)組和函數(shù)綜合編程練習(xí)——學(xué)生成績(jī)統(tǒng)計(jì)提示:(1)用num[i]存放第i+1個(gè)學(xué)生的學(xué)號(hào),用score[i]存放第i+1個(gè)學(xué)生的成績(jī)。設(shè)置計(jì)數(shù)器count,當(dāng)score[i]<60分時(shí),計(jì)數(shù)器count計(jì)數(shù)一次,并打印num[i]和score[i]。(2)先計(jì)算全班平均分aver,當(dāng)?shù)趇個(gè)學(xué)生的成績(jī)score[i]>=aver時(shí),打印num[i]和score[i]。(3)將成績(jī)分為六個(gè)分?jǐn)?shù)段,60分以下為第0段,60~69為第1段,70~79為第2段,80~89為第3段,90~99為第4段,100分為第5段,因此,成績(jī)與分?jǐn)?shù)段的對(duì)應(yīng)關(guān)系為:各分?jǐn)?shù)段的學(xué)生人數(shù)保存在數(shù)組stu中,用stu[i]存放第i段的學(xué)生人數(shù)。對(duì)于每個(gè)學(xué)生的成績(jī),先計(jì)算出該成績(jī)所對(duì)應(yīng)的分?jǐn)?shù)段,然后將相應(yīng)的分?jǐn)?shù)段的人數(shù)加1,即stu[i]++。第38頁(yè)/共76頁(yè)實(shí)驗(yàn)7:二維數(shù)組、函數(shù)和常用算法綜合編程練習(xí)——成績(jī)排名次某班期末考試科目為數(shù)學(xué)(MT)、英語(yǔ)(EN)和物理(PH),有最多不超過(guò)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ù)第39頁(yè)/共76頁(yè)實(shí)驗(yàn)7:二維數(shù)組、函數(shù)和常用算法綜合編程練習(xí)——成績(jī)排名次提示:用二維數(shù)組score存放每個(gè)學(xué)生各門(mén)課程的成績(jī),用一維數(shù)組num存放每個(gè)學(xué)生的學(xué)號(hào),用一維數(shù)組sum存放每個(gè)學(xué)生的總分,用一維數(shù)組aver存放每個(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è)/共76頁(yè)實(shí)驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí)——打印最高分和學(xué)號(hào)假設(shè)每班人數(shù)最多不超過(guò)40人,具體人數(shù)由鍵盤(pán)輸入,試編程打印最高分及其學(xué)號(hào)。程序1:用一維數(shù)組和指針變量作函數(shù)參數(shù),編程打印某班一門(mén)課成績(jī)的最高分和學(xué)號(hào)。intFindMax(intscore[],longnum[],intn,long*pMaxNum);
第41頁(yè)/共76頁(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ù)返回值:最高分*/intFindMax(intscore[],longnum[],intn,long*pMaxNum){ inti; intmaxScore; maxScore=score[0]; *pMaxNum=num[0]; for(i=1;i<n;i++) if(score[i]>maxScore){ maxScore=score[i]; *pMaxNum=num[i];} return(maxScore);}第42頁(yè)/共76頁(yè)實(shí)驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí)——打印最高分和學(xué)號(hào)程序2:用二維數(shù)組和指針變量作函數(shù)參數(shù),編程打印3個(gè)班學(xué)生(假設(shè)每班4個(gè)學(xué)生)的某門(mén)課成績(jī)的最高分,并指出具有該最高分成績(jī)的學(xué)生是第幾個(gè)班的第幾個(gè)學(xué)生。intFindMax(intscore[CLASS][STU],intm,int*pRow,int*pCol);第43頁(yè)/共76頁(yè)intFindMax(intscore[][STU],intm,int*pRow,int*pCol){ inti,j,maxScore; maxScore=score[0][0]; *pRow=0; *pCol=0; for(i=0;i<m;i++) { for(j=0;j<STU;j++) { if(score[i][j]>maxScore) { maxScore=score[i][j]; *pRow=i; *pCol=j; } } } return(maxScore);}實(shí)驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí)——打印最高分和學(xué)號(hào)第44頁(yè)/共76頁(yè)實(shí)驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí)——打印最高分和學(xué)號(hào)程序3:用指向二維數(shù)組第0行第0列元素的指針作函數(shù)參數(shù),編寫(xiě)一個(gè)能計(jì)算任意m行n列的二維數(shù)組中的最大值,并指出其所在的行列下標(biāo)值的函數(shù),利用該函數(shù)計(jì)算3個(gè)班學(xué)生(假設(shè)每班4個(gè)學(xué)生)的某門(mén)課成績(jī)的最高分,并指出具有該最高分成績(jī)的學(xué)生是第幾個(gè)班的第幾個(gè)學(xué)生。intFindMax(int*p,intm,intn,int*pRow,int*pCol);
第45頁(yè)/共76頁(yè)intFindMax(int*p,intm,intn,int*pRow,int*pCol){ inti,j,maxScore; maxScore=p[0]; *pRow=0; *pCol=0; for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(p[i*n+j]>maxScore) { maxScore=p[i*n+j]; *pRow=i; *pCol=j; } } } return(maxScore);}實(shí)驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí)——打印最高分和學(xué)號(hào)第46頁(yè)/共76頁(yè)實(shí)驗(yàn)8:數(shù)組、指針和函數(shù)綜合編程練習(xí)——打印最高分和學(xué)號(hào)程序4:編寫(xiě)一個(gè)能計(jì)算任意m行n列的二維數(shù)組中的最大值,并指出其所在的行列下標(biāo)值的函數(shù),利用該函數(shù)和動(dòng)態(tài)內(nèi)存分配方法,計(jì)算任意m個(gè)班、每班n個(gè)學(xué)生的某門(mén)課成績(jī)的最高分,并指出具有該最高分成績(jī)的學(xué)生是第幾個(gè)班的第幾個(gè)學(xué)生。intFindMax(int*p,intm,intn,int*pRow,int*pCol);第47頁(yè)/共76頁(yè)實(shí)驗(yàn)9:結(jié)構(gòu)體編程練習(xí)——
在屏幕上模擬顯示一個(gè)數(shù)字式時(shí)鐘
定義一個(gè)時(shí)鐘結(jié)構(gòu)體類(lèi)型:structclock{
inthour;
intminute;
intsecond;};typedef
structclockCLOCK;然后,將下列用全局變量編寫(xiě)的時(shí)鐘模擬顯示程序改成用CLOCK結(jié)構(gòu)體變量類(lèi)型重新編寫(xiě)。
時(shí):分:秒第48頁(yè)/共76頁(yè)voidupdate(CLOCK*t){t->second++;
if(t->second==60){t->second=0;t->minute++;}
if(t->minute==60){t->minute=0;t->hour++;}
if(t->hour==24)t->hour=0;}voiddisplay(CLOCK*t){printf("%2d:%2d:%2d\r",t->hour, t->minute, t->second);}實(shí)驗(yàn)9:結(jié)構(gòu)體編程練習(xí)——
在屏幕上模擬顯示一個(gè)數(shù)字式時(shí)鐘第49頁(yè)/共76頁(yè)實(shí)驗(yàn)10:文件編程練習(xí)
——文件拷貝程序1:根據(jù)程序提示從鍵盤(pán)輸入一個(gè)已存在的文本文件的完整文件名,并再輸入一個(gè)新文本文件的完整文件名,然后編程將已存在文本文件中的內(nèi)容全部拷貝到新文本文件中去,利用文本編輯軟件,通過(guò)查看文件內(nèi)容驗(yàn)證程序執(zhí)行結(jié)果。第50頁(yè)/共76頁(yè)實(shí)驗(yàn)10:文件編程練習(xí)
——文件拷貝程序2:模擬DOS命令下的COPY命令,在DOS狀態(tài)下鍵入命令行,以實(shí)現(xiàn)將一個(gè)已存在文本文件中的內(nèi)容全部拷貝到新文本文件中去,利用文本編輯軟件,通過(guò)查看文件內(nèi)容驗(yàn)證程序執(zhí)行結(jié)果。第51頁(yè)/共76頁(yè)實(shí)驗(yàn)10:文件編程練習(xí)
——文件拷貝程序3:(選作)根據(jù)提示從鍵盤(pán)輸入一個(gè)已存在的文本文件的完整文件名,并再輸入另一個(gè)已存在的文本文件的完整文件名,然后編程將第一個(gè)文本文件的內(nèi)容追加到第二個(gè)文本文件的原內(nèi)容之后,利用文本編輯軟件,通過(guò)查看文件內(nèi)容驗(yàn)證程序執(zhí)行結(jié)果。第52頁(yè)/共76頁(yè)實(shí)驗(yàn)10:文件編程練習(xí)
——文件拷貝程序4:(選作)根據(jù)提示從鍵盤(pán)輸入一個(gè)已存在的文本文件的完整文件名,并再輸入另一個(gè)已存在的文本文件的完整文件名,然后編程將源文本文件的內(nèi)容追加到目的文本文件的原內(nèi)容之后,并編程實(shí)現(xiàn)在顯示器上顯示源文件和目的文件的文件內(nèi)容,以此來(lái)驗(yàn)證程序執(zhí)行結(jié)果。
第53頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)一計(jì)算到期存款本息之和已知銀行整存整取存款不同期限的月息利率分別為:2.25%期限一年2.43%期限二年2.70%期限三年2.88%期限五年3.00%期限八年要求輸入存錢(qián)的本金和期限,求到期時(shí),能從銀行得到的利息與本金的合計(jì)。提示:用switch語(yǔ)句編程。第54頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)二存款預(yù)算
假設(shè)銀行一年整存零取的月息為1.875%,現(xiàn)在某人手頭有一筆錢(qián),他打算在今后的五年中每年的年底取出1000元作為孩子來(lái)年的教育金,到第五年孩子畢業(yè)時(shí)剛好取完這筆錢(qián),現(xiàn)在請(qǐng)你算一算第一年年初他應(yīng)存入銀行多少錢(qián)呢?第55頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)二存款預(yù)算
提示:分析存錢(qián)和取錢(qián)的過(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)依此類(lèi)推,可由第n+1年年初銀行中的存款數(shù)額yn+1求得第n年年初銀行中的存款數(shù)額yn為:yn=(yn+1+1000)/(1+12*0.01875)以0作為yn+1的初值,對(duì)上式進(jìn)行逆推迭代,迭代5次的結(jié)果即為第1年年初銀行中的存款數(shù)額y1,也就是他現(xiàn)在要存入銀行的錢(qián)數(shù)。第56頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)三尋找最佳存款方案已知銀行整存整取存款不同期限的月息利率分別為:2.25%期限一年2.43%期限二年2.70%期限三年2.88%期限五年3.00%期限八年假設(shè)銀行對(duì)定期存款過(guò)期部分不付利息,現(xiàn)在某人有2000元錢(qián),要存20年,問(wèn)怎樣存才能使20年后得到的本利之和合計(jì)最多?第57頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)三尋找最佳存款方案提示:為了得到最多的利息,存入銀行的錢(qián)應(yīng)在到期時(shí)馬上就取出來(lái),然后立刻將原來(lái)的本金和利息加起來(lái)再作為新的本金存入銀行,這樣本利不斷地滾動(dòng)直到滿(mǎn)二十年為止。由于存款的利率不同,所以,不同的存款方法(年限)存二十年得到的利息也是不一樣的。分析題意,設(shè)2000元存20年,其中一年期存了n1次,二年期存了n2次,三年期存了n3次,五年期存了n5次,八年期存了n8次,則到期時(shí)存款人應(yīng)得的本利之和為:其中,rateN對(duì)應(yīng)存款年限的利率。第58頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(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,n5,n3,n2,n1組合,代入本利計(jì)算公式,計(jì)算得到所有的存款方案。求最大存款方案的方法為:將現(xiàn)行存款方案與過(guò)去記錄的最大存款方案max進(jìn)行比較,若現(xiàn)行存款方案可得到的本利之和大,則記錄現(xiàn)行存款方案(即n1,n2,n3,n5,n8的值)和本利之和的最大值max。
第59頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)四抓交通肇事犯一輛卡車(chē)違反了交通規(guī)則,撞人后逃逸。現(xiàn)場(chǎng)有三人目擊事件,但都沒(méi)有記住車(chē)號(hào),只記住車(chē)號(hào)的一些特征。甲說(shuō):車(chē)號(hào)的前兩位數(shù)字是相同的;乙說(shuō):車(chē)號(hào)的后兩位數(shù)字是相同的,但與前兩位不同;丙是位數(shù)學(xué)家,他說(shuō):四位的車(chē)號(hào)正好是一個(gè)整數(shù)的平方?,F(xiàn)在請(qǐng)你根據(jù)以上線(xiàn)索幫助警方找出車(chē)號(hào)以便盡快破案。第60頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)四抓交通肇事犯提示:假設(shè)這個(gè)四位數(shù)的前兩位數(shù)字都是i,后兩位數(shù)字都是j,則這個(gè)可能的四位數(shù)k為:k=1000*i+100*i+10*j+j其中,i和j都在0~9之間變化。現(xiàn)在還需使k滿(mǎn)足是一個(gè)整數(shù)m的平方,由于k是一個(gè)四位數(shù),所以,m值不可能小于31,因此,可從31開(kāi)始試驗(yàn)是否滿(mǎn)足k==m*m,若不滿(mǎn)足,則m加1再試,直到找到滿(mǎn)足這些限制條件的k為止結(jié)束測(cè)試。第61頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)五求解不等式已知立方和不等式為:13+23+…+m3<n對(duì)指定的n值,試求滿(mǎn)足上述立方和不等式的m的整數(shù)解。提示:對(duì)指定的n值,設(shè)置累加求和的循環(huán),從i=1開(kāi)始,i遞增1取值,把i*i*i累加到和變量sum中去,直到sum>=n時(shí),利用break語(yǔ)句退出循環(huán),打印出相應(yīng)的結(jié)果。這里,因立方運(yùn)算數(shù)值較大,n應(yīng)定義為長(zhǎng)整型。第62頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(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è)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(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)到t>20*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è)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)七產(chǎn)值翻番假設(shè)當(dāng)年產(chǎn)值為100,工業(yè)產(chǎn)值的增長(zhǎng)率為每年c%,當(dāng)c分別為6,8,10,12時(shí),試求工業(yè)產(chǎn)值分別過(guò)多少年可實(shí)現(xiàn)翻番(即增加一倍)。第65頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)七產(chǎn)值翻番提示:增長(zhǎng)率存于數(shù)組c[i]中,并用6,8,10,12初始化。產(chǎn)值翻番所需年數(shù)存于變量y中,各年對(duì)應(yīng)的產(chǎn)值存于變量s中。設(shè)置i的循環(huán),對(duì)增長(zhǎng)率c[i],設(shè)產(chǎn)值翻番所需年數(shù)為y,年數(shù)y每增1一次,產(chǎn)值的計(jì)算方法為:s=s*(1+c[i]/100.0)利用迭代法計(jì)算,執(zhí)行循環(huán),計(jì)算下一年產(chǎn)值,并增長(zhǎng)年數(shù),直到s[i]>=200時(shí)為止,當(dāng)s[i]>=200時(shí),表示已達(dá)到翻番,繼續(xù)對(duì)下一個(gè)增長(zhǎng)率計(jì)算翻番所需的年數(shù),對(duì)所有增長(zhǎng)率全部計(jì)算完后,打印相應(yīng)的增長(zhǎng)率、翻番所需年數(shù)以及翻番后的產(chǎn)值。第66頁(yè)/共76頁(yè)課外實(shí)驗(yàn)題目實(shí)驗(yàn)八簡(jiǎn)單的口令檢查程序按下述要求編寫(xiě)口令檢查程序(假設(shè)正確的口令為8888)。(1)若輸入口令正確,則提示“Youarewelcom!”,程序結(jié)束;(2)若輸入口令不正確,則提示“Wrongpassward!”,同時(shí)檢查口令是否已輸入三次,若未輸入三次,則提示”Enteragain:”,且允許用戶(hù)再次輸入口令,相反,若已輸入了三次,則提示“Youhaveenteredthreetimes!Youarenotwelcom!”,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑承包合同
- 2025年畢業(yè)前國(guó)旗下講話(huà)稿(3篇)
- cng清潔汽車(chē)行業(yè)重大安全事故應(yīng)急預(yù)案(2篇)
- 生產(chǎn)統(tǒng)計(jì)員工作職責(zé)描述模版(3篇)
- 預(yù)應(yīng)力鋼筋張拉工安全操作規(guī)程(3篇)
- 公司財(cái)務(wù)2025年上半年工作總結(jié)范文(2篇)
- 2025年財(cái)務(wù)部門(mén)工作總結(jié)經(jīng)典版(3篇)
- 知路愛(ài)路護(hù)路活動(dòng)方案樣本(2篇)
- 2025年夢(mèng)想主題演講稿例文(2篇)
- 托輥旋轉(zhuǎn)阻力測(cè)試儀操作規(guī)程模版(3篇)
- 選礦廠建設(shè)課件
- 部編人教版7-9年級(jí)語(yǔ)文目錄
- 人教版小學(xué)數(shù)學(xué)五年級(jí)上冊(cè)七單元《數(shù)學(xué)廣角-植樹(shù)問(wèn)題》單元集體備課整體設(shè)計(jì)
- 中國(guó)超重肥胖醫(yī)學(xué)營(yíng)養(yǎng)治療指南
- 嚴(yán)重精神障礙患者家屬護(hù)理教育
- 汽車(chē)4S店市場(chǎng)部工作計(jì)劃
- 現(xiàn)代營(yíng)銷(xiāo)學(xué)原理課件
- 德語(yǔ)語(yǔ)言學(xué)導(dǎo)論智慧樹(shù)知到期末考試答案2024年
- 拒絕早戀主題班會(huì) 課件(34張)2023-2024學(xué)年主題班會(huì)
- 離婚協(xié)議書(shū)完整版Word模板下載
- 招標(biāo)代理機(jī)構(gòu)內(nèi)部監(jiān)督管理制度
評(píng)論
0/150
提交評(píng)論