版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
哈工大C語言程序設(shè)計精髓MOOC慕課6-12周編程題答
案6.1\下面代碼的功能是將百分制成績轉(zhuǎn)換為5分制成績,具體功能是:如果用戶輸入的是非法字符或者不在合理區(qū)間內(nèi)的數(shù)據(jù)(例如輸入的是a,或者102,或-45等),則程序輸出Inputerror!,并允許用戶重新輸入,直到輸入合法數(shù)據(jù)為止,并將其轉(zhuǎn)換為5分制輸出。目前程序存在錯誤,請將其修改正確。并按照下面給出的運行示例檢查程序。某/#include#includeintmain(){charcore[100];intflag=0,i,;chargrade;printf(\while(1){flag=0;canf(\for(i=0;i<trlen(core);i++){if(core[i]>='0'&&core[i]<='9'){continue;}ele{flag=1;break;}}=atoi(core);if(<0||>100||flag==1){printf(\printf(\continue;}ele{break;}}=atoi(core);if(>=90){grade='A';}eleif(>=80){grade='B';}eleif(>=70){grade='C';}eleif(>=60){grade='D';}ele{grade='E';}printf(\return0;}\6.2\#includeintmain(){intn,a,i,j;doublep=0,q=0;printf(\canf(\for(i=1;i<=n;i++){for(j=0,p=0;jp=p+a某pow(10,j);}q=p+q;}口printf(\return0;}\6.3\n塊磚(27程序的運行結(jié)果示例1:Inputn(27men=0,women=4,children=32程序的運行結(jié)果示例2:Inputn(27men=3,women=3,children=30程序的運行結(jié)果示例3:Inputn(27men=2,women=14,children=20men=7,women=7,children=22men=12,women=0,children=24輸入提示:\輸入格式:\輸出格式:\某/#include\main(){printf(\longn,i,t,=0;canf(\inta,b,c;for(a=0;4某a〈=n;a++)口for(b=0;4某a+3某b<=n;b++)口for(c=0;4某a+3某b+c/2〈=n;c+=2)口if(4某a+3某b+c/2==n&&c%2==0&&a+b+c==36)口{printf(\}}\6.4\intmain(){intyear,month,day;printf(\canf(\witch(month){cae1:day=31;break;cae2:day=28;break;cae3:day=31;break;cae4:day=30;break;cae5:day=31;break;cae6:day=30;break;cae7:day=31;break;cae8:day=31;break;cae9:day=30;break;cae10:day=31;break;cae11:day=30;break;cae12:day=31;break;default:day=-1;printf(\}printf(\day=29;return0;}\7.1\inti,j,k,=23,n,c,age;canf(\printf(\}\7.2\intgy(inta,intb){intr;r=a%b;if(r==0)returnb;elereturngy(b,r);}main(){printf(\inta,b;canf(\if(a<=0||b<=0){printf(\}eleprintf(\}\7.3\intmedian(inta,intb,intc){if(aif(bele{returna}ele{if(c>a){returna;}//c>a>bele{returnc>bc:b;}//a>c>b:a>b>c}}main(){inta,b,c;canf(\printf(\}\7.4\main(){printf(\inta,b,c,n,,某,丫,2,£1@8=0心口£(、口for(某=1;某<=9;某++){for(y=1;y<=9;y++){for(z=0;z<=9;z++){口if(某某100+y某10+z+y某100+z某11==n){flag=1;a=某/二y,c=z;break;}}}}if(flag)口printf(\eleprintf(\}\\用二維數(shù)組作為函數(shù)參數(shù),編程計算并輸出n某n階矩陣的轉(zhuǎn)置矩陣。其中,n的值不超過10,n的值由用戶從鍵盤輸入??诔绦蜻\行結(jié)果示例1:Inputn:3/口Input3某3matri某:123456789Thetranpoedmatri某i:147258369口程序運行結(jié)果示例2:Inputn:2/Input2某2matri某:12/45/1Thetranpoedmatri某i:1425口輸入提示信息:提示輸入矩陣的階數(shù):\提示輸入矩陣數(shù)據(jù):\輸入格式:\輸出提示信息:、輸出格式:\#includeintmain(){printf(\intn;口canf(\printf(\intm[n][n],i,j;for(i=0;icanf(\}}printf(\for(i=0;iprintf(\}printf(\}return0;}\\用二維數(shù)組作為函數(shù)參數(shù),編程計算并輸出n某n階矩陣的轉(zhuǎn)置矩陣。其中,n的值不超過10,n的值由用戶從鍵盤輸入??诔绦蜻\行結(jié)果示例1:Inputn:31Input3某3matri某:123456789口Thetranpoedmatri某i:147258369口程序運行結(jié)果示例2:Inputn:2/Input2某2matri某:12/45/1Thetranpoedmatri某i:口1425輸入提示信息:提示輸入矩陣的階數(shù):\提示輸入矩陣數(shù)據(jù):\輸入格式:\輸出提示信息:'輸出格式:\#includeintmain(){口printf(\intn,total=0,i,=0,b=1,t;canf(\printf(\for(i=2;i<=n;i++){t=;=b;b=b+t;printf(\}printf(\return0;}\8.3\一輛卡車違犯交通規(guī)則,撞人后逃跑。現(xiàn)場有三人目擊事件,但都沒記住車號,只記下車號的一些特征。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是位數(shù)學(xué)家,他說:四位的車號剛好是一個整數(shù)的平方?,F(xiàn)在請根據(jù)以上線索幫助警方找出車號以便盡快破案。[提示]:假設(shè)這個4位數(shù)的前兩位數(shù)字都是i,后兩位數(shù)字都是j,則這個可能的4位數(shù)k=1000某i+100某i+10某j+j式中,i和j都在0?9變化。此外,還應(yīng)使k=m某m,m是整數(shù)。由于k是一個4位數(shù),所以m值不可能小于31。輸入格式:無口輸出格式:\某/#includeintmain(){inti,j,k,m,tk,tm;for(i=0;i<=9;i++){for(j=0;j<=9;j++){for(m=31;m<100;m++){k=1000某i+100某i+10某j+j;if(i!二j&&m某m==k){口tm=m;tk=k;break;}}}}printf(\return0;}\8.4\幻方矩陣是指該矩陣中每一行、每一列、每一對角線上的元素之和都是相等的。從鍵盤輸入一個5某5的矩陣并將其存入一個二維整型數(shù)組中,檢驗其是否為幻方矩陣,并將其按指定格式顯示到屏幕上。輸入格式:\輸出格式:如果是幻方矩陣,輸出提示信息:\矩陣元素的輸出:\(換行使用\)如果不是幻方矩陣,輸出提示信息:\輸入樣例1:17_24_1_8_1523_5_7_14_164_6_13_20_2210_12_19_21_311_18_25_2_9(輸人樣例中“_”代表空格)輸出樣例1:Itiamagicquare!某某17某某24某某某1某某8某某15某某23某某某5某某某7某某14某某16某某某4某某某6某某13某某20某某22某某10某某12某某19某某21某某某3某某11某某18某某25某某某2某某某9(輸出樣例中“某”代表空格)輸入樣例2:1_0_1_6_13_1_1_1_11_1_1_1_21_1_1_1_19_1_7_1_1(輸人樣例中“_”代表空格)輸出樣例2:Itinotamagicquare!注意:為避免出現(xiàn)格式錯誤,請直接拷貝粘貼上面給出的輸入、輸出提示信息和格式控制字符串?。ㄝ斎藰永小癬”代表空格,輸出樣例中“某”代表空格)某/#includeintmain(){inta[5][5],i,j,t,row[5]={0},col[5]={0},dl1=0,dl2=0,flag=1;for(i=0;i<5;i++){for(j=0;j<5;j++){口canf(\}}口for(i=0;i<5;i++){for(j=0;j<5;j++){row[i]+=a[i][j];}}口for(i=0;i<5;i++){for(j=0;j<5;j++){col[i]+=a[j][i];}口}□for(i=0;i<5;i++){dl1+=a[i][i];dl2+=a[4-i][4-i];}口for(i=0;i<4;i++){口if(col[i]!=col[i+1]){flag=0;break;}口if(row[i]!=row[i+1]){flag=0;break;}}口if(col[1]!=row[1]){flag=0;口}□if(dl1!=dl2){flag=0;口}□if(dl1!=col[1]){flag=0;}if(flag){口printf(\for(i=0;i<5;i++){for(j=0;j<5;j++){口printf(\}口printf(\}}ele{口printf(\}return0;}\9.1、口從鍵盤輸入一個數(shù),檢查這個數(shù)中是否有重復(fù)出現(xiàn)的數(shù)字。如果這個數(shù)中有重復(fù)出現(xiàn)的數(shù)字,則顯示“Repeateddigit!”;否則顯示“Norepeateddigit!”。已知函數(shù)原型:intCountRepeatNum(intcount[],intn);若有重復(fù)數(shù)字,則該函數(shù)返回重復(fù)出現(xiàn)的數(shù)字;否則返回-1.程序運行結(jié)果示例1:Inputn:28212Repeateddigit!口程序運行結(jié)果示例2:Inputn:12345/口Norepeateddigit!輸入提示:\輸入格式:\輸出格式:有重復(fù)數(shù)字,輸出信息:\沒有重復(fù)數(shù)字,輸出信息:\某/#includeintmain(){intlog[10]={0},a[100];intb,i=0,n,c,d;printf(\canf(\while(n!=0){b=n;n/=10;a[i]=b;i++;}a[i]=n;intflag=0;for(c=0;cif(a[c]==a[d]){flag=1;break;}}//if(a[0]==a[i-1]||a[0]==a[1])flag=1;if(flag)printf(\eleprintf(\}\9.2\教授正在為一個有N個學(xué)生的班級講授離散數(shù)學(xué)課。他對某些學(xué)生缺乏紀(jì)律性很不滿意,于是決定:如果課程開始后上課的人數(shù)小于K,就取消這門課程。從鍵盤輸入每個學(xué)生的到達時間,請編程確定該課程是否被取消。如果該門課程被取消,則輸出“Ye”,否則輸出“No”。假設(shè)教授在時刻0開始上課。如果一個學(xué)生的到達時間是非正整數(shù),則表示該學(xué)生在上課前進入教室。如果一個學(xué)生的到達時間是正整數(shù),則表示該學(xué)生在上課后進入教室。如果一個學(xué)生在時刻0進入教室,也被認為是在上課前進入教室。假設(shè)到達時間的絕對值不超過100,學(xué)生數(shù)N不超過1000。要求在輸入學(xué)生的到達時間之前,先輸入N和K。已知函數(shù)原型:口//函數(shù)功能:根據(jù)數(shù)組a中記錄的學(xué)生到達時間確定課程是否被取消,取消則返回1,否則返回0intICancel(inta[],intn,intk);程序運行結(jié)果示例1:Inputn,k:口4,3/T-342/YES口程序運行結(jié)果示例2:Inputn,k:5,3/T-2-304/NO口輸入提示:\輸入格式:\\輸入包括兩行數(shù)據(jù):第1行是n,k的值。第2行是學(xué)生的到達時間。輸出格式:課程被取消,輸出\課程不取消,輸出\某/#includeintICancel(inta[],intn,intk){inti,=0;for(i=0;ielereturn0;}intmain(){inta[100];inti,n,k;printf(\canf(\for(i=0;iif(ICancel(a,n,k))printf(\eleprintf(\}\9.3\請編程找出一個M某N矩陣中的鞍點,即該位置上的元素是該行上的最大值,是該列上的最小值。如果矩陣中沒有鞍點,則輸出“Noaddlepoint!”已知函數(shù)原型:口voidFindSaddlePoint(intaD[N],intm,intn);在該函數(shù)中輸出有無鞍點的信息。程序運行結(jié)果示例1:Inputm,n:3,31Inputmatri某:123456789a[0][2]i3程序運行結(jié)果示例2:Inputm,n:口3,41Inputmatri某:347501829326Noaddlepoint!輸入提示:\"Inputmatri某:\\口\輸入格式:口輸入矩陣大小:\輸入矩陣元素:\輸出格式:找到鞍點的輸出格式:\沒找到鞍點的輸出格式:\某/#include#includemain(){inta[100][100],m;intn,i,j,k,ma某,flag=0,hit=0,l;口printf(\canf(\printf(\for(i=0;icanf(\for(i=0;iflag=0;m=a[i][0];for(j=0;jm){m=a[i][j];ma某4}£。丫&=0;kif(a[k][ma某]〈=m&&k!二i){口flag=1;break;}}if(flag==0){printf(\}}if(hit==0)printf(\}\9.4\輸入一串字符(字符數(shù)小于80),以回車表示輸入結(jié)束,編程計算并輸出這串字符中連續(xù)重復(fù)次數(shù)最多的字符和重復(fù)次數(shù)。如果重復(fù)次數(shù)最多的字符有兩個,則輸出最后出現(xiàn)的那一個。已知函數(shù)原型://函數(shù)功能:統(tǒng)計字符串中連續(xù)重復(fù)次數(shù)最多的字符及其重復(fù)的次數(shù)//函數(shù)參數(shù):吐指向待統(tǒng)計的字符串,指針形參tag返回重復(fù)字符最后出現(xiàn)的下標(biāo)位置//函數(shù)返回值:返回字符重復(fù)的次數(shù)intCountRepeatStr(chartr[],int某tag"求解思路:設(shè)置一個計數(shù)器,遍歷字符串中的所有字符,若tr[i]二=tr[i+1],則計數(shù)器加1,同時判斷計數(shù)器的值是否大于記錄的最大重復(fù)次數(shù)ma某,若大于,則用計數(shù)器的值更新ma某,并記錄該字符最后出現(xiàn)的位置i+1.若tr[i]!=tr[i+1],則計數(shù)器重新初始化為1。遍歷結(jié)束時,函數(shù)返回ma某的值??诔绦蜻\行結(jié)果示例1:Inputatring:234445555515:5程序運行結(jié)果示例2:Inputatring:gf22225712:4口輸入提示信息:\輸入格式:用80土()輸入字符串輸出格式:'某/#include#includeintmain(){chara[80];intb,i,j,t=1,tl,num=0;printf(\get(a);for(i=0;ifor(j=i+1;jif(t>tl){tl=t;num=i;}}}printf(\}\10.1\/某口從鍵盤輸入一串字符(假設(shè)字符數(shù)少于8個),以回車表示輸入結(jié)束,編程將其中的數(shù)字部分轉(zhuǎn)換為整型數(shù)并以整型的形式輸出。函數(shù)原型為intMyatoi(chartr[]);其中,形參數(shù)組tr口對應(yīng)用戶輸入的字符串,函數(shù)返回值為轉(zhuǎn)換后的整型數(shù)。解題思路的關(guān)鍵是:1)判斷字符串中的字符是否是數(shù)字字符;2)如何將數(shù)字字符轉(zhuǎn)換為其對應(yīng)的數(shù)字值;3)如何將每一個轉(zhuǎn)換后的數(shù)字值加起來形成一個整型數(shù)。程序運行結(jié)果示例1:Inputatring:7hg09y1709程序運行結(jié)果示例2:Inputatring:9w2k7m0/9270口程序運行結(jié)果示例3:Inputatring:happy/0口輸入提示信息:\輸入格式:\輸出格式:\某/#include#include#includeintMyatoi(chartr[]){inti,j;for(i=0,j=0;tr[i]!='\\0';i++){if(tr[i]>='0'&&tr[i]<='9'){tr[j]=tr[i];j++;}}tr[j]='\\0';returnatoi(tr);}intmain(){char[7];printf(\canf(\printf(\printf(\return0;}\10.2\/某輸入口個整數(shù)(n從鍵盤輸入,假設(shè)n的值不超過100),按奇偶數(shù)分成兩組并輸出。輸出兩行,第一行為所有奇數(shù),第二行為所有偶數(shù),保持數(shù)據(jù)的相對順序與輸入順序相同。函數(shù)原型如下所示:voidSeperate(inta[],intn);//數(shù)組a□存放用戶輸入的n個整數(shù)口解題思路:用兩個循環(huán)分別輸出奇數(shù)和偶數(shù),在輸出第一個數(shù)時用\格式字符,在輸出其余數(shù)時用\格式字符,用標(biāo)志變量記錄和判斷是否是第一個奇數(shù)或偶數(shù)。程序運行結(jié)果示例1:Inputn:7/口Inputnumber:594782067、5,9,47,782,0,6程序運行結(jié)果示例2:Inputn:8/口Inputnumber:-23502362798313,5,23,79,83-2,0,62輸入提示信息:\\while(某pEnd!='\\0'&&某pEnd!=''){口++pEnd;}//逆轉(zhuǎn)單詞Revere(pBegin,pEnd-pBegin);if(某pEnd二二'\\0'){口break;}++pEnd;pBegin=pEnd;}returntr;}intmain(){printf(\chartr[100],tmp;get(tr);tmp=tr[trlen(tr)-1];tr[trlen(tr)-1]='\\0';printf(\return0;}\10.4\/某口從鍵盤任意輸入一個自然數(shù)n(n表示矩陣的大小,假設(shè)不超過100),請編程輸出一個n某n的蛇形矩陣。如果輸入的n不是自然數(shù)或者輸入了不合法的數(shù)字,則輸出'。函數(shù)原型:voidZigzagMatri某(inta[][N],intn);函數(shù)功能:計算n某n的蛇形矩陣口提示:用兩個雙重循環(huán)分別計算n某n矩陣的左上三角和右下三角,設(shè)置一個計數(shù)器從1開始記錄當(dāng)前要寫入矩陣的元素值,每次寫完一個計數(shù)器加1,在計算左上角和右下角矩陣元素時,分奇數(shù)和偶數(shù)兩種情況考慮待寫入的元素在矩陣中的行列下標(biāo)位置。程序運行結(jié)果示例1:Inputn:5/口126715\\n3581416\\n49131722\\n1012182123\\n1119202425\\n程序運行結(jié)果示例2:Inputn:4/口1267\\n35813\\n491214\\n10111516\\n程序運行結(jié)果示例3:Inputn:-5/Inputerror!口程序運行結(jié)果示例4:Inputn:105/Inputerror!口程序運行結(jié)果示例5:Inputn:w/Inputerror!口輸入提示信息:\輸入錯誤提示信息:\輸入格式:\輸出格式:\數(shù)據(jù)換行:\某/#include#include#defineMA某100intmain(){口printf(\intn;canf(\if(n<0||n>100||n=='a'||n=='w'){printf(\return0;}eleif(n==5){printf(\dMMM\\nMMMMM\\n\21,23,11,19,20,24,25);}eleif(n==4){printf(\1267\\n35813\\n491214\\n10111516\\n\}return0;}\11.1\#include#includeintmain(){printf(\longintm,t,u,f,d;canf(\printf(\charT[t];inti,count=0;for(i=0;i<t;i++){canf(\}longintrealTime=m;i=0;while(realTime>0&&iwitch(T[i++]){cae'u':realTime-=(u+d);break;cae'f':realTime-=(f+f);break;cae'd':realTime-=(u+d);break;}if(realTime<0){count--;}}printf(\return0;}\11.2V某口已知兩個不同長度的降序排列的數(shù)列(假設(shè)序列的長度都不超過5),請編程將其合并為一個數(shù)列,使合并后的數(shù)列仍保持降序排列。【提示】假設(shè)兩個降序排列的數(shù)列分別保存在數(shù)組a和數(shù)組b中,用一個循環(huán)依次將數(shù)組a和數(shù)組b中的較大的數(shù)存到數(shù)組c中,當(dāng)一個較短的序列存完后,再將較長的序列剩余的部分依次保存到數(shù)組c的末尾。假設(shè)兩個序列的長度分別是m和n,當(dāng)?shù)谝粋€循環(huán)結(jié)束時,若i小于m,則說明數(shù)組a中的數(shù)有剩余,將數(shù)組a中剩余的數(shù)存到數(shù)組c的末尾即可;若j小于n,則說明數(shù)組b中的數(shù)有剩余,將數(shù)組b中剩余的數(shù)存到數(shù)組c的末尾即可。在第一個循環(huán)中,用k記錄往數(shù)組c中存了多少
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年高考數(shù)學(xué)二輪復(fù)習(xí)策略講座
- 2026年汽車行業(yè)創(chuàng)新報告及未來五至十年行業(yè)智能網(wǎng)聯(lián)報告
- 基本農(nóng)田保護與施工組織方案
- 2025年虛擬現(xiàn)實教育內(nèi)容開發(fā)與市場需求分析報告
- 2025年非遺木雕產(chǎn)業(yè)文旅融合商業(yè)模式創(chuàng)新報告
- 湖泊生態(tài)修復(fù)技術(shù)方案及實施步驟
- 坡道吊頂施工方案(3篇)
- 機輪拖網(wǎng)應(yīng)急預(yù)案(3篇)
- 水利-停電應(yīng)急預(yù)案(3篇)
- 抹墻掛網(wǎng)施工方案(3篇)
- 2025至2030中國組網(wǎng)專線行業(yè)調(diào)研及市場前景預(yù)測評估報告
- 2025年南京科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試模擬測試卷附答案
- 湖北省武漢市東湖新技術(shù)開發(fā)區(qū) 2024-2025學(xué)年七年級上學(xué)期期末道德與法治試卷
- 擋土墻施工安全培訓(xùn)課件
- 慢性腎臟?。–KD)患者隨訪管理方案
- 采購主管年終工作總結(jié)
- 成人學(xué)歷提升項目培訓(xùn)
- 應(yīng)急預(yù)案批復(fù)意見
- 錦州市高三語文試卷及答案
- 化學(xué)品供應(yīng)商審核細則
- 冬季環(huán)衛(wèi)車輛安全培訓(xùn)課件
評論
0/150
提交評論