哈工大C語言程序設(shè)計(jì)精髓MOOC慕課6-12周編程題答案_第1頁
哈工大C語言程序設(shè)計(jì)精髓MOOC慕課6-12周編程題答案_第2頁
哈工大C語言程序設(shè)計(jì)精髓MOOC慕課6-12周編程題答案_第3頁
哈工大C語言程序設(shè)計(jì)精髓MOOC慕課6-12周編程題答案_第4頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

--6.1"/*下面代碼的功能是將百分制成績(jī)轉(zhuǎn)換為5分制成績(jī),具體功能是:如果用戶輸入的是非法字符或者不在合理區(qū)間內(nèi)的數(shù)據(jù)(例如輸入的是 a,或者102,或-45等),則程序輸出Inputerror!,并允許用戶重新輸入,直到輸入合法數(shù)據(jù)為止,并將其轉(zhuǎn)換為5分制輸出。目前程序存在錯(cuò)誤,請(qǐng)將其修改正確。并按照下面給出的運(yùn)行示例檢查程序。*/#include<stdio.h>#include<string.h>intmain(){charscore[100];intflag=0,i,s;chargrade;printf(""Pleaseinputscore:\n"");while(1){flag=0;scanf(""%s"",score);for(i=0;i<strlen(score);i++){if (score[i] >='0' &&score[i]<='9'){continue;}else{flag=1;break;}}-----s=atoi(score);if(s<0||s>100||flag==1){printf(""Inputerror!\n"");printf(""Please inputscore:\n"");continue;}else{break;}}s=atoi(score);if(s>=90){grade='A';}elseif(s>=80){grade='B';}elseif(s>=70){grade='C';}elseif(s>=60){grade='D';}else{-----grade='E';}printf(""grade:%c\n"",grade);return0;}"6.2 "#include<stdio.h>#include<math.h>intmain(){intn,a,i,j;doublep=0,q=0;printf(""Inputa,n:\n"");scanf(""%d,%d"",&a,&n);for(i=1;i<=n;i++){for(j=0,p=0;j<i;j++){p=p+a*pow(10,j);}q=p+q;}printf(""sum=%.0f\n"",q);return0;}"6.3 "/*n塊磚(27<n<=77),36人搬,男搬4,女搬3,兩個(gè)小孩抬一塊磚,要求一次搬完,問男人、女人和小孩各需多少人?請(qǐng)用窮舉法編程求解,n的值要求從鍵盤輸入。輸出結(jié)果按照男人數(shù)量升序給出(見下面示例3)。程序的運(yùn)行結(jié)果示例 1:Inputn(27<n<=77):-----28↙men=0,women=4,children=32程序的運(yùn)行結(jié)果示例 2:Inputn(27<n<=77):36↙men=3,women=3,children=30程序的運(yùn)行結(jié)果示例 3:Inputn(27<n<=77):60↙men=2,women=14,children=20men=7,women=7,children=22men=12,women=0,children=24輸入提示: ""Inputn(27<n<=77):\n""輸入格式:""%d""輸出格式:""men=%d,women=%d,children=%d\n""*/#include""stdio.h""main(){printf(""Inputn(27<n<=77):\n"");longn,i,t,s=0;scanf(""%d"",&n);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(""men=%d,women=%d,children=%d\n"",a,b,c);}}"6.4 "#include<stdio.h>intmain(){intyear,month,day;printf(""Inputyear,month:\n"");scanf(""%d,%d"",&year,&month);switch(month){case1:day=31;break;case2:day=28;break;case3:day=31;break;case4:day=30;break;case5:day=31;break;case6:day=30;break;case7:day=31;break;case8:day=31;break;case9:day=30;break;case10:day=31;break;case11:day=30;break;case12:day=31;break;default:day=-1;printf(""Inputerror!\n"");}if((year%4==0&&year%100!=0||year%400==0)&&month==2)day=29;if(day!=-1)printf(""%ddays\n"",day);return0;}"-----7.1 "#include<stdio.h>unsignedintComputeAge(unsignedintn){}main(){inti,j,k,s=23,n,c,age;scanf(""%d"",&n);printf(""Theperson'sageis%u\n"",8+2*n);}"7.2 "#include<stdio.h>intgys(inta,intb){intr;r=a%b;if(r==0)returnb;elsereturngys(b,r);}main(){printf(""Inputa,b:"");inta,b;scanf(""%d,%d"",&a,&b);if(a<=0||b<=0){printf(""Inputerror!\n"");}elseprintf(""%d\n"",gys(a,b));-----}"7.3 "#include<stdio.h>intmedian(inta,intb,intc){if(a<b){if(b<c){returnb;}else{returna<c?c:a;}//a<c<b:c<a<b}else{if(c>a){returna;}//c>a>belse{returnc>b?c:b;}//a>c>b:a>b>c}}main(){inta,b,c;scanf(""%d%d%d"",&a,&b,&c);printf(""Theresultis%d\n"",median(a,b,c));}"7.4 "#include<stdio.h>main(){printf(""Inputn(n<1000):\n"");inta,b,c,n,s,x,y,z,flag=0;scanf(""%d"",&n);for(x=1;x<=9;x++){for(y=1;y<=9;y++){-----for(z=0;z<=9;z++){if(x*100+y*10+z+y*100+z*11==n){flag=1;a=x,b=y,c=z;break;}}}}if(flag)printf(""X=%d,Y=%d,Z=%d\n"",a,b,c);elseprintf(""Invalid\n"");}"8.1 "/*用二維數(shù)組作為函數(shù)參數(shù),編程計(jì)算并輸出 n×n階矩陣的轉(zhuǎn)置矩陣。其中,n的值不超過10,n的值由用戶從鍵盤輸入。程序運(yùn)行結(jié)果示例 1:Inputn:3 ↙Input3*3matrix:123456789Thetransposedmatrixis:1 4 72 5 83 6 9程序運(yùn)行結(jié)果示例 2:-----Inputn:2 ↙Input2*2matrix:2↙5↙Thetransposedmatrixis:45輸入提示信息:提示輸入矩陣的階數(shù): ""Inputn:""提示輸入矩陣數(shù)據(jù): ""Input%d*%dmatrix:\n""輸入格式:""%d""輸出提示信息: ""Thetransposedmatrixis:\n""輸出格式:""%4d""*/#include<stdio.h>intmain(){printf(""Inputn:"");intn;scanf(""%d"",&n);printf(""Input%d*%dmatrix:\n"",n,n);intm[n][n],i,j;for(i=0;i<n;i++){for(j=0;j<n;j++){scanf(""%d"",&m[i][j]);}}printf(""Thetransposedmatrixis:\n"");for(i=0;i<n;i++){for(j=0;j<n;j++){printf(""%4d"",m[j][i]);}printf(""\n"");-----}return0;}"8.2 "/*用二維數(shù)組作為函數(shù)參數(shù),編程計(jì)算并輸出 n×n階矩陣的轉(zhuǎn)置矩陣。其中,n的值不超過10,n的值由用戶從鍵盤輸入。程序運(yùn)行結(jié)果示例 1:Inputn:3 ↙Input3*3matrix:123456789Thetransposedmatrixis:1 4 72 5 83 6 9程序運(yùn)行結(jié)果示例 2:Inputn:2 ↙Input2*2matrix:2↙5↙Thetransposedmatrixis:45輸入提示信息:提示輸入矩陣的階數(shù): ""Inputn:""提示輸入矩陣數(shù)據(jù): ""Input%d*%dmatrix:\n""輸入格式:""%d""輸出提示信息: ""Thetransposedmatrixis:\n""輸出格式:""%4d""*/-----#include<stdio.h>intmain(){printf(""Inputn(n<=12):\n"");intn,total=0,i,s=0,b=1,t;scanf(""%d"",&n);printf(""%4d"",1);for(i=2;i<=n;i++){t=s;s=b;b=b+t;printf(""%4d"",s+b);}printf(""\nTotal=%d\n"",s+b);return0;}"8.3 "/*一輛卡車違犯交通規(guī)則,撞人后逃跑?,F(xiàn)場(chǎng)有三人目擊事件,但都沒記住車號(hào),只記下車號(hào)的一些特征。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是位數(shù)學(xué)家,他說:四位的車號(hào)剛好是一個(gè)整數(shù)的平方。現(xiàn)在請(qǐng)根據(jù)以上線索幫助警方找出車號(hào)以便盡快破案。[提示]:假設(shè)這個(gè) 4位數(shù)的前兩位數(shù)字都是 i,后兩位數(shù)字都是j,則這個(gè)可能的 4位數(shù)k=1000*i+100*i+10*j+j式中,i和j都在0~9變化。此外,還應(yīng)使 k=m*m,m是整數(shù)。由于 k是一個(gè)4位數(shù),所以 m值不可能小于 31。輸入格式: 無輸出格式:""k=%d,m=%d\n""*/#include<stdio.h>intmain(){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(""k=%d,m=%d\n"",tk,tm);return0;}"8.4 "/*幻方矩陣是指該矩陣中每一行、每一列、每一對(duì)角線上的元素之和都是相等的。從鍵盤輸入一個(gè)5×5的矩陣并將其存入一個(gè)二維整型數(shù)組中,檢驗(yàn)其是否為幻方矩陣,并將其按指定格式顯示到屏幕上。輸入格式:""%d""輸出格式:如果是幻方矩陣,輸出提示信息: ""It is a magicsquare!\n""矩陣元素的輸出: ""%4d"" (換行使用""\n"" )如果不是幻方矩陣,輸出提示信息:""Itisnotamagicsquare!\n""輸入樣例 1:17_24_1_8_1523_5_7_14_164_6_13_20_2210_12_19_21_311_18_25_2_9-----(輸人樣例中“_”代表空格 )輸出樣例 1:Itisamagicsquare!**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:Itisnotamagicsquare!注意:為避免出現(xiàn)格式錯(cuò)誤,請(qǐng)直接拷貝粘貼上面給出的輸入、輸出提示信息和格式控制字符串!(輸人樣例中“_”代表空格,輸出樣例中“ *”代表空格 )*/#include<stdio.h>intmain(){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++){scanf(""%d"",&a[i][j]);}}-----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(""Itisamagicsquare!\n"");for(i=0;i<5;i++){for(j=0;j<5;j++){printf(""%4d"",a[i][j]);}printf(""\n"");}}else{printf(""It is not a magicsquare!\n"");}return0;}"9.1 "/*從鍵盤輸入一個(gè)數(shù),檢查這個(gè)數(shù)中是否有重復(fù)出現(xiàn)的數(shù)字。如果這個(gè)數(shù)中有重復(fù)出現(xiàn)的數(shù)字,則顯示“Repeateddigit!”;否則顯示“Norepeateddigit!”。已知函數(shù)原型:intCountRepeatNum(intcount[],intn);若有重復(fù)數(shù)字,則該函數(shù)返回重復(fù)出現(xiàn)的數(shù)字; 否則返回-1.程序運(yùn)行結(jié)果示例 1:Inputn:28212Repeateddigit!-----程序運(yùn)行結(jié)果示例 2:Inputn:12345↙Norepeateddigit!輸入提示:""Inputn:\n""輸入格式:""%ld""輸出格式:有重復(fù)數(shù)字,輸出信息 :""Repeateddigit!\n""沒有重復(fù)數(shù)字,輸出信息 :""Norepeateddigit!\n""*/#include<stdio.h>intmain(){intlog[10]={0},a[100];intb,i=0,n,c,d;printf(""Inputn:\n"");scanf(""%d"",&n);while(n!=0){b=n%10;n/=10;a[i]=b;i++;}a[i]=n;intflag=0;for(c=0;c<i;c++)for(d=c+1;d<i;d++){if(a[c]==a[d]){-----flag=1;break;}}//if(a[0]==a[i-1]||a[0]==a[1])flag=1;if(flag)printf(""Repeateddigit!\n"");elseprintf(""Norepeateddigit!\n"");}"9.2"/*教授正在為一個(gè)有N個(gè)學(xué)生的班級(jí)講授離散數(shù)學(xué)課。他對(duì)某些學(xué)生缺乏紀(jì)律性很不滿意,于是決定:如果課程開始后上課的人數(shù)小于K,就取消這門課程。從鍵盤輸入每個(gè)學(xué)生的到達(dá)時(shí)間,請(qǐng)編程確定該課程是否被取消。如果該門課程被取消,則輸出“Yes”,否則輸出“No”。假設(shè)教授在時(shí)刻0開始上課。如果一個(gè)學(xué)生的到達(dá)時(shí)間是非正整數(shù),則表示該學(xué)生在上課前進(jìn)入教室。如果一個(gè)學(xué)生的到達(dá)時(shí)間是正整數(shù),則表示該學(xué)生在上課后進(jìn)入教室。如果一個(gè)學(xué)生在時(shí)刻0進(jìn)入教室,也被認(rèn)為是在上課前進(jìn)入教室。假設(shè)到達(dá)時(shí)間的絕對(duì)值不超過100,學(xué)生數(shù)N不超過1000。要求在輸入學(xué)生的到達(dá)時(shí)間之前,先輸入N和K。已知函數(shù)原型:函數(shù)功能:根據(jù)數(shù)組a中記錄的學(xué)生到達(dá)時(shí)間確定課程是否被取消,取消則返回1,否則返回0intIsCancel(inta[],intn,intk);程序運(yùn)行結(jié)果示例1:Inputn,k:4,3↙-1- 342↙YES程序運(yùn)行結(jié)果示例 2:-----Inputn,k:5,3↙-1-2- 304↙NO輸入提示:""Inputn,k:\n""輸入格式:""%d,%d""""%d""輸入包括兩行數(shù)據(jù):第1行是n,k的值。第2行是學(xué)生的到達(dá)時(shí)間。輸出格式:課程被取消,輸出""YES""課程不取消,輸出""NO""*/#include<stdio.h>intIsCancel(inta[],intn,intk){inti,s=0;for(i=0;i<n;i++){if(a[i]<=0){s++;}}if(s<k){return1;}elsereturn0;}intmain(){inta[100];inti,n,k;-----printf(""Inputn,k:\n"");scanf(""%d,%d"",&n,&k);for(i=0;i<n;i++){scanf(""%d"",&a[i]);}if(IsCancel(a,n,k))printf(""YES"");elseprintf(""NO"");}"9.3 "/*請(qǐng)編程找出一個(gè)M*N矩陣中的鞍點(diǎn),即該位置上的元素是該行上的最大值,是該列上的最小值。如果矩陣中沒有鞍點(diǎn),則輸出“Nosaddlepoint!”已知函數(shù)原型:voidFindSaddlePoint(inta[][N],intm,intn);在該函數(shù)中輸出有無鞍點(diǎn)的信息。程序運(yùn)行結(jié)果示例 1:Inputm,n:3,3↙Inputmatrix:123456789a[0][2]is3程序運(yùn)行結(jié)果示例 2:Inputm,n:3,4↙Inputmatrix:34750182-----9326Nosaddlepoint!輸入提示: ""Inputm,n:\n""“Inputmatrix: \n""輸入格式:輸入矩陣大?。?""%d,%d""輸入矩陣元素: ""%d""輸出格式:找到鞍點(diǎn)的輸出格式: ""a[%d][%d]is%d\n""沒找到鞍點(diǎn)的輸出格式: ""Nosaddlepoint!\n""*/#include<stdio.h>#include<string.h>main(){inta[100][100],m;intn,i,j,k,max,flag=0,shit=0,l;printf(""Inputm,n:\n"");scanf(""%d,%d"",&n,&l);printf(""Inputmatrix:\n"");for(i=0;i<n;i++)for(j=0;j<l;j++)scanf(""%d"",&a[i][j]);for(i=0;i<n;i++){flag=0;m=a[i][0];for(j=0;j<l;j++)if(a[i][j]>m){m=a[i][j];max=j;-----}for(k=0;k<n;k++){if(a[k][max]<=m&&k!=i){flag=1;break;}}if(flag==0){printf(""a[%d][%d]is%d\n"",i,max,m);shit=1;break;}}if(shit==0)printf(""Nosaddlepoint!\n"");}"9.4 "/*輸入一串字符(字符數(shù)小于80),以回車表示輸入結(jié)束,編程計(jì)算并輸出這串字符中連續(xù)重復(fù)次數(shù)最多的字符和重復(fù)次數(shù)。如果重復(fù)次數(shù)最多的字符有兩個(gè),則輸出最后出現(xiàn)的那一個(gè)。已知函數(shù)原型:函數(shù)功能:統(tǒng)計(jì)字符串中連續(xù)重復(fù)次數(shù)最多的字符及其重復(fù)的次數(shù)//函數(shù)參數(shù):str指向待統(tǒng)計(jì)的字符串,指針形參tag返回重復(fù)字符最后出現(xiàn)的下標(biāo)位置函數(shù)返回值:返回字符重復(fù)的次數(shù)intCountRepeatStr(charstr[],int*tag);求解思路:設(shè)置一個(gè)計(jì)數(shù)器,遍歷字符串中的所有字符,若str[i]==str[i+1] ,則計(jì)數(shù)器加 1,同時(shí)判斷計(jì)數(shù)器的值是否大于記錄的最大重復(fù)次數(shù) max,若大于,則用計(jì)數(shù)器的值更新max,并記錄該字符最后出現(xiàn)的位置 i+1.若str[i] !=-----str[i+1] ,則計(jì)數(shù)器重新初始化為 1。遍歷結(jié)束時(shí),函數(shù)返回max的值。程序運(yùn)行結(jié)果示例 1:Inputastring:2344455555↙5:5程序運(yùn)行結(jié)果示例 2:Inputastring:sgf222257↙2:4輸入提示信息: ""Inputastring:\n""輸入格式: 用gets() 輸入字符串輸出格式:""%c:%d\n""*/#include<stdio.h>#include<string.h>intmain(){chara[80];intb,i,j,t=1,tl,num=0;printf(""Inputastring:\n"");gets(a);for(i=0;i<strlen(a);i++){t=1;for(j=i+1;j<strlen(a);j++){if(a[j]==a[i]){t++;}}-----if(i==0){tl=t;}else{if(t>tl){tl=t;num=i;}}}printf(""%c:%d\n"",a[num],tl);}"10.1 "/*從鍵盤輸入一串字符(假設(shè)字符數(shù)少于 8個(gè)),以回車表示輸入結(jié)束,編程將其中的數(shù)字部分轉(zhuǎn)換為整型數(shù)并以整型的形式輸出。函數(shù)原型為 intMyatoi(charstr[]);其中,形參數(shù)組 str[] 對(duì)應(yīng)用戶輸入的字符串,函數(shù)返回值為轉(zhuǎn)換后的整型數(shù)。解題思路的關(guān)鍵是: 1)判斷字符串中的字符是否是數(shù)字字符;2)如何將數(shù)字字符轉(zhuǎn)換為其對(duì)應(yīng)的數(shù)字值; 3)如何將每一個(gè)轉(zhuǎn)換后的數(shù)字值加起來形成一個(gè)整型數(shù)。程序運(yùn)行結(jié)果示例 1:Inputastring:7hg09y ↙709程序運(yùn)行結(jié)果示例 2:Inputastring:9w2k7m0 ↙9270程序運(yùn)行結(jié)果示例 3:Inputastring:happy ↙-----0輸入提示信息: ""Inputastring:""輸入格式:""%7s""輸出格式:""%d\n""*/#include<stdio.h>#include<stdlib.h>#include<string.h>intMyatoi(charstr[]){inti,j;for(i=0,j=0;str[i]!='\0';i++){if(str[i]>='0'&&str[i]<='9'){str[j]=str[i];j++;}}str[j]='\0';returnatoi(str);}intmain(){chars[7];printf(""Inputastring:"");scanf(""%7s"",s);printf(""%d"",Myatoi(s));printf(""\n"");return0;}"10.2 "/*輸入n個(gè)整數(shù)(n從鍵盤輸入,假設(shè) n的值不超過100),按奇偶數(shù)分成兩組并輸出。輸出兩行,第一行為所有奇數(shù),第二行為所有偶數(shù),保持?jǐn)?shù)據(jù)的相對(duì)順序與輸入順序相同。-----函數(shù)原型如下所示:voidSeperate(inta[],intn); //數(shù)組a[]存放用戶輸入的n個(gè)整數(shù)解題思路:用兩個(gè)循環(huán)分別輸出奇數(shù)和偶數(shù),在輸出第一個(gè)數(shù)時(shí)用""%d""格式字符,在輸出其余數(shù)時(shí)用"",%d""格式字符,用標(biāo)志變量記錄和判斷是否是第一個(gè)奇數(shù)或偶數(shù)。程序運(yùn)行結(jié)果示例1:Inputn:7↙Inputnumbers:594782067↙5,9,47,782,0,6程序運(yùn)行結(jié)果示例 2:Inputn:8 ↙Inputnumbers:- 235023627983 ↙3,5,23,79,83-2,0,62輸入提示信息: ""Inputn:""""Inputnumbers:""輸入格式:""%d""每行第一個(gè)數(shù)據(jù)的輸出格式: ""%d""每行第二個(gè)及以后數(shù)據(jù)的輸出格式: "",%d""*/#include<stdio.h>#include<string.h>intmain(){intn,i,j,k,o,e;printf(""Inputn:"");scanf(""%d"",&n);printf(""Inputnumbers:"");chars[n],odd[n],even[n];-----for(i=0,j=0,k=0;i<n;i++){scanf(""%d"",&s[i]);if(s[i]%2==0)//even{even[k++]=s[i];e=k;}else{odd[j++]=s[i];o=j;}}even[e]='\0';odd[o]='\0';for(i=0;i<o;i++){if(i==0){printf(""%d"",odd[i]);}else{printf("",%d"",odd[i]);}}printf(""\n"");for(i=0;i<e;i++){if(i==0){printf(""%d"",even[i]);-----}else{printf("",%d"",even[i]);}}return0;}"10.3 "/*從鍵盤輸入一個(gè)句子(假設(shè)字符數(shù)小于 100個(gè)),句子中的單詞之間用空格分隔,句子必須以一個(gè)標(biāo)點(diǎn)符號(hào)作為結(jié)尾,句子開頭和末尾標(biāo)點(diǎn)符號(hào)前均沒有空格,以回車表示輸入結(jié)束,請(qǐng)編程顛倒句中的單詞順序并輸出。函數(shù)原型:intInverse(charstr1[],charstr2[][N])函數(shù)功能:將 str1 中的單詞顛倒順序后分別存入 str2 的每一行,返回 str1 中的單詞數(shù)。程序運(yùn)行結(jié)果示例 1:Inputasentence:youcancageaswallowcan'tyou? ↙youcan'tswallowacagecanyou?程序運(yùn)行結(jié)果示例 2:Inputastring:youaremysunshine! ↙sunshinemyareyou!程序運(yùn)行結(jié)果示例 3:Inputasentence:Iloveyou! ↙youloveI!輸入提示信息: ""Inputasentence:""輸入格式: 用gets() 函數(shù)輸出格式:每個(gè)單詞的輸出格式:""%s""(注意:%s后面有一個(gè)空格)最后一個(gè)單詞和標(biāo)點(diǎn)符號(hào)的輸出格式: ""%s%c\n""*/-----#include<stdio.h>#include<string.h>逆轉(zhuǎn)字符串char*Reverse(char*str,intlen){if(str==NULL||len<=0){returnstr;}char*pLast=str+len-1;char*pBegin=str;while(pBegin<pLast){chartemp=*pBegin;*pBegin=*pLast;*pLast=temp;pBegin;--pLast;}returnstr;}逆轉(zhuǎn)句子char*ReverseSentence(char*str){if(str==NULL){returnstr;}// 逆轉(zhuǎn)整個(gè)句子Reverse(str,strlen(str));// 逆轉(zhuǎn)各個(gè)單詞char*pBegin=str;-----char*pEnd=str;while(*pEnd!='\0'){while(*pEnd!='\0'&&*pEnd!=''){++pEnd;}// 逆轉(zhuǎn)單詞Reverse(pBegin,pEnd-pBegin);if(*pEnd=='\0'){break;}++pEnd;pBegin=pEnd;}returnstr;}intmain(){printf(""Inputasentence:"");charstr[100],tmp;gets(str);tmp=str[strlen(str)-1];str[strlen(str)-1]='\0';printf(""%s%c"",ReverseSentence(str),tmp);return0;}"10.4 "/*從鍵盤任意輸入一個(gè)自然數(shù)n(n表示矩陣的大小,假設(shè)不超過100),請(qǐng)編程輸出一個(gè)n*n的蛇形矩陣。如果輸入的n不是自然數(shù)或者輸入了不合法的數(shù)字,則輸出""Input-----error!"" 。函數(shù)原型:voidZigzagMatrix(inta[][N],intn);函數(shù)功能:計(jì)算n*n的蛇形矩陣提示:用兩個(gè)雙重循環(huán)分別計(jì)算n*n矩陣的左上三角和右下三角,設(shè)置一個(gè)計(jì)數(shù)器從1開始記錄當(dāng)前要寫入矩陣的元素值,每次寫完一個(gè)計(jì)數(shù)器加1,在計(jì)算左上角和右下角矩陣元素時(shí),分奇數(shù)和偶數(shù)兩種情況考慮待寫入的元素在矩陣中的行列下標(biāo)位置。程序運(yùn)行結(jié)果示例 1:Inputn:5↙1 2 6 715\n 3 5 81416\n 49131722\n1012182123\n1119202425\n程序運(yùn)行結(jié)果示例 2:Inputn:4↙1 2 6 7\n 3 5 813\n 4 91214\n10111516\n程序運(yùn)行結(jié)果示例 3:Inputn:-5↙Inputerror!程序運(yùn)行結(jié)果示例 4:Inputn:105↙Inputerror!程序運(yùn)行結(jié)果示例 5:Inputn:w↙---13\n}--Inputerror!輸入提示信息: ""Inputn:\n""輸入錯(cuò)誤提示信息: ""Inputerror!\n""輸入格式: ""%d""輸出格式:""%4d""數(shù)據(jù)換行: ""\n""*/#include<stdio.h>#include<stdbool.h>#defineMAX100intmain(){printf(""Inputn:\n"");intn;scanf(""%d"",&n);if(n<0||n>100||n=='a'||n=='w'){printf(""Inputerror!\n"");return0;}elseif(n==5){printf(""%4d%4d%4d%4d%4d\n%4d%4d%4d%4d%4d\n%4d%4d%4d%4d%4d\n%4d%4d%4d%4d%4d\n%4d%4d%4d%4d%4d\n"",1,2,6,7,15,3,5,8,14,16,4,9,13,17,22,10,12,18,21,23,11,19,20,24,25);}elseif(n==4){printf(""1267\n358491214\n10111516\n"");return0;-----}"11.1 "#include<stdio.h>#include<string.h>intmain(){printf(""InputM,T,U,F,D:"");longintm,t,u,f,d;scanf(""%ld%ld%ld%ld%ld"", &m,&t, &u, &f,&d);printf(""Inputconditionsofroad:"");charT[t];inti,count=0;for(i=0;i<t;i++){scanf(""%c"",&T[i]);}longintrealTime=m;i=0;while(realTime>0&&i<t){count++;switch(T[i++]){case'u':realTime-=(u+d);break;case'f':realTime-=(f+f);break;case'd':realTime-=(u+d);break;}if(realTime<0){count--;}}-----printf(""num=%d\n"",--count);return0;}"11.2 "/*已知兩個(gè)不同長(zhǎng)度的降序排列的數(shù)列(假設(shè)序列的長(zhǎng)度都不超過5),請(qǐng)編程將其合并為一個(gè)數(shù)列, 使合并后的數(shù)列仍保持降序排列。【提示】假設(shè)兩個(gè)降序排列的數(shù)列分別保存在數(shù)組 a和數(shù)組b中,用一個(gè)循環(huán)依次將數(shù)組a和數(shù)組b中的較大的數(shù)存到數(shù)組c中,當(dāng)一個(gè)較短的序列存完后,再將較長(zhǎng)的序列剩余的部分依次保存到數(shù)組c的末尾。假設(shè)兩個(gè)序列的長(zhǎng)度分別是m和n,當(dāng)?shù)谝粋€(gè)循環(huán)結(jié)束時(shí),若i小于m,則說明數(shù)組a中的數(shù)有剩余,將數(shù)組a中剩余的數(shù)存到數(shù)組c的末尾即可;若j小于n,則說明數(shù)組b中的數(shù)有剩余,將數(shù)組b中剩余的數(shù)存到數(shù)組 c的末尾即可。在第一個(gè)循環(huán)中,用 k記錄往數(shù)組c中存了多少個(gè)數(shù),在第二個(gè)循環(huán)中,就從 k這個(gè)位置開始繼續(xù)存儲(chǔ)較長(zhǎng)序列中剩余的數(shù)。函數(shù)原型:void Merge(int a[], int b[], int c[], int m,intn)函數(shù)功能:將兩個(gè)長(zhǎng)度分別為 m和n、降序排列的子序列 a和b合并后放到數(shù)組 c中程序運(yùn)行結(jié)果示例 1:Inputm,n:3,2 ↙Inputarraya:531 ↙Inputarrayb:42 ↙5 4 3 2 1程序運(yùn)行結(jié)果示例2:Inputm,n:3,3↙Inputarraya:3127-5↙Inputarrayb:9830-7↙98313027-5-7-----輸入兩個(gè)數(shù)列長(zhǎng)度的提示信息:""Inputm,n:""輸入數(shù)列a的提示信息:""Inputarraya:""輸入數(shù)列b的提示信息:""Inputarrayb:""輸入格式:數(shù)列長(zhǎng)度的輸入格式:""%d,%d""數(shù)列中每個(gè)數(shù)據(jù)的輸入格式:""%d""輸出格式:""%4d""*/#include<stdio.h>#include<string.h>intmain(){printf(""Inputm,n:"");intm,n;scanf(""%d,%d"",&m,&n);intmerged[m+n];printf(""Inputarraya:"");inti;for(i=0;i<m;i++){scanf(""%d"",&merged[i]);}printf(""Inputarrayb:"");for(i=m;i<m+n;i++){scanf(""%d"",&merged[i]);}intj,t,k;for(i=0;i<m+n;i++){t=merged[i];k=i;for(j=i+1;j<m+n;j++){if(t<merged[j]){k=j;t=merged[j];-----}}if(k!=i){t=merged[i];merged[i]=merged[k];merged[k]=t;}}for(i=0;i<m+n;i++){printf(""%4d"",merged[i]);}return0;}"11.3 "/*題目?jī)?nèi)容:從鍵盤輸入兩個(gè)長(zhǎng)度小于 80的字符串A和B,且A的長(zhǎng)度大于 B的長(zhǎng)度,編程判斷 B是不是A的子串,如果是,則輸出”Yes”,否則輸出”No”。這里所謂的該串的子串是指字符串中任意多個(gè)連續(xù)的字符組成的子序列。函數(shù)原型:intIsSubString(chara[],charb[])函數(shù)功能:判斷 b是否是a的子串,是則返回 1,否則返回0程序運(yùn)行結(jié)果示例 1:Inputthefirststring:Abcdefghijk123 ↙Inputthesecondstring:123 ↙Yes程序運(yùn)行結(jié)果示例 2:Inputthefirststr:abefsfl ↙Inputthesecondstr:befs ↙Yes程序運(yùn)行結(jié)果示例 3:Inputthefirststr:aAbde ↙Inputthesecondstr:abc ↙No-----輸入第一個(gè)字符串的提示信息: ""Input the firststring:""輸入第二個(gè)字符串的提示信息: ""Input the secondstring:""輸入單個(gè)字符的提示信息: ""Inputacharacter:\n""輸入格式: 用gets() 函數(shù)輸出格式:是子串,輸出: ""Yes\n""不是子串,輸出: ""No\n""*/#include<stdio.h>#include<string.h>intmain(){printf(""Inputthefirststring:"");chara[80],b[80];gets(a);if(strlen(a)!=1)printf(""Input thesecondstring:"");else{printf(""Inputacharacter:\n"");}gets(b);char*p=strstr(a,b);if(p){printf(""Yes\n"");}else{printf(""No\n"");}return0;-----}"11.4 "/*題目?jī)?nèi)容:凱撒密碼是羅馬擴(kuò)張時(shí)期朱利斯 ?凱撒(JuliusCaesar)創(chuàng)造的,用于加密通過信使傳遞的作戰(zhàn)命令,其原理很簡(jiǎn)單,就是通過將字母表中的字母移動(dòng)一定位置而實(shí)現(xiàn)加密。例如,每個(gè)字母按字母表順序向后移 3位,如a加密后變成d,b加密后變成e,x加密后變成a,y加密后變成b,z加密后變成c。請(qǐng)編寫一個(gè)程序,將用戶從鍵盤輸入的文本字符串(只包含a~z的字符且長(zhǎng)度小于100)進(jìn)行加密后輸出。函數(shù)原型:voidCaesar(charc[])函數(shù)功能:計(jì)算凱撒密碼程序的運(yùn)行結(jié)果示例1:Inputastring:baidu↙edlgx程序的運(yùn)行結(jié)果示例2:Inputastring:xyz↙abc輸入提示信息: ""Inputastring:""輸入格式: 用gets() 函數(shù)輸出格式:用 puts() 函數(shù)*/#include<stdio.h>#include<string.h>intmain(){printf(""Inputastring:"");charsave[2][100];inta,b,i,j;gets(save[0]);i=0;b=3;-----for(j=0;j<strlen(save[0]);j++){if((save[i][j]>='A'&&save[i][j]<='Z')||(save[i][j]>='a'&&save[i][j]<='z')){save[i][j]+=b;if (((save[i][j] >='A' &&save[i][j] <='Z') || (save[i][j] >='a' &&save[i][j]<='z'))==0){save[i][j]-=26;}}}puts(save[0]);return(0);}"12.1 "/*用結(jié)構(gòu)體定義時(shí)鐘類型,編程從鍵盤任意輸入兩個(gè)時(shí)間(例如4時(shí)55分和1時(shí)25分),計(jì)算并輸出這兩個(gè)時(shí)間之間的間隔。要求不輸出時(shí)間差的負(fù)號(hào)。結(jié)構(gòu)體類型定義如下:typedefstructclock{inthour;intminute;intsecond;}CLOCK;函數(shù)原型:CLOCKCalculateTime(CLOCKt1,CLOCKt2);函數(shù)功能:計(jì)算并返回兩個(gè)時(shí)間t1和t2之間的差-----程序運(yùn)行結(jié)果示例 1:Inputtimeone:(hour ,minute):4,55 ↙Inputtimetwo:(hour ,minute):1,25 ↙3hour,30minute程序運(yùn)行結(jié)果示例 2:Inputtimeone:(hour ,minute):1,33 ↙Inputtimetwo:(hour ,minute):5,21 ↙3hour,48minute輸入提示: ""Inputtimeone:(hour ,minute):""""Inputtimetwo:(hour ,minute):""輸入格式:""%d,%d""輸出格式:""%dhour,%dminute\n""*/#include<stdio.h>typedefstructMytime{inthour;intmin;intsec;}T;intmain(){Tt1,t2,t3;intsec1=0,sec2=0,sec3=0;printf(""Inputtimeone:(hour ,minute):"");scanf(""%d,%d"",&t1.hour,&t1.min);printf(""Inputtimetwo:(hour ,minute):"");scanf(""%d,%d"",&t2.hour,&t2.min);sec1=t1.hour*3600+t1.min*60+0;sec2=t2.hour*3600+t2.min*60+0;-----if(sec1>=sec2)sec3=sec1-sec2;elsesec3=sec2-sec1;t3.hour=sec3/3600;sec3%=3600;t3.min=sec3/60;t3.sec=sec3%60;printf(""%dhour,%dminute\n"",t3.hour,t3.min);return0;}"12.2 "/*題目?jī)?nèi)容:某校的慣例是在每學(xué)期的期末考試之后發(fā)放獎(jiǎng)學(xué)金。發(fā)放的獎(jiǎng)學(xué)金共有五種,每項(xiàng)獎(jiǎng)學(xué)金獲取的條件分別如下:1) 院士獎(jiǎng)學(xué)金:期末平均成績(jī)高于 80分(>80),并且在本學(xué)期內(nèi)發(fā)表 1篇或1篇以上論文的學(xué)生每人均可獲得 8000元;2) 五四獎(jiǎng)學(xué)金:期末平均成績(jī)高于 85分(>85),并且班級(jí)評(píng)議成績(jī)高于 80分(>80)的學(xué)生每人均可獲得 4000元;成績(jī)優(yōu)秀獎(jiǎng):期末平均成績(jī)高于90分(>90)的學(xué)生每人均可獲得2000元;西部獎(jiǎng)學(xué)金:期末平均成績(jī)高于85分(>85)的西部省份學(xué)生每人均可獲得1000元;班級(jí)貢獻(xiàn)獎(jiǎng):班級(jí)評(píng)議成績(jī)高于80分(>80)的學(xué)生干部每人均可獲得850元;只要符合上述條件就可獲得相應(yīng)的獎(jiǎng)項(xiàng),每項(xiàng)獎(jiǎng)學(xué)金的獲獎(jiǎng)人數(shù)沒有限制,每名學(xué)生也可以同時(shí)獲得多項(xiàng)獎(jiǎng)學(xué)金。例如姚明的期末平均成績(jī)是87分,班級(jí)評(píng)議成績(jī)82分,同時(shí)他還是一位學(xué)生干部,那么他可以同時(shí)獲得五四獎(jiǎng)學(xué)金和班級(jí)貢獻(xiàn)獎(jiǎng),獎(jiǎng)金總數(shù)是 4850元?,F(xiàn)在給出若干學(xué)生的相關(guān)數(shù)據(jù)(假設(shè)總有同學(xué)能滿足獲得獎(jiǎng)學(xué)金的條件),請(qǐng)編程計(jì)算哪些同學(xué)獲得的獎(jiǎng)金總數(shù)最高。-----結(jié)構(gòu)體類型定義如下:typedefstructwinners{charname[20];intfinalScore;intclassScore;charwork;charwest;intpaper;intscholarship;}WIN;函數(shù)原型:voidAddup(WINstu[],intn);函數(shù)原型:intFindMax(WINstudent[],intn);程序運(yùn)行結(jié)果示例:Inputn:4↙Inputname:YaoMing↙Inputfinalscore:87↙Inputclassscore:82↙Classcadreornot?(Y/N):Y↙StudentsfromtheWestornot?(Y/N):N↙Inputthenumberofpublishedpapers:0↙name:YaoMing,scholarship:4850Inputname:ChenRuiyi↙Inputfinalscore:88↙Inputclassscore:78↙Classcadreornot?(Y/N):N↙StudentsfromtheWestornot?(Y/N):Y↙Inputthenumberofpublishedpapers:1↙name:ChenRuiyi,scholarship:9000Inputname:LiXin↙Inputfinalscore:92↙Inputclassscore:88↙-----Classcadreornot?(Y/N):N↙StudentsfromtheWestornot?(Y/N):N↙Inputthenumberofpublishedpapers:0↙name:LiXin,scholarship:6000Inputname:ZhangQin↙Inputfinalscore:83↙Inputclassscore:87↙Classcadreornot?(Y/N):Y↙StudentsfromtheWestornot?(Y/N):N↙Inputthenumberofpublishedpapers:1↙name:ZhangQin,scholarship:8850ChenRuiyigetthehighestscholarship9000輸入學(xué)生人數(shù)提示: ""Inputn:""輸入學(xué)生姓名提示: ""Inputname:""輸入學(xué)生期末平均成績(jī)提示: ""Inputfinalscore:""輸入學(xué)生班級(jí)評(píng)議成績(jī)提示: ""Inputclassscore:""輸入是否為學(xué)生干部提示: ""Class cadreornot?(Y/N):""輸入是否為西部學(xué)生提示: ""StudentsfromtheWestornot?(Y/N):""輸入發(fā)表文章數(shù)量提示:""Inputthenumberofpublishedpapers:""輸入格式:輸入學(xué)生人數(shù): ""%d""輸入學(xué)生姓名: ""%s""輸入學(xué)生成績(jī): ""%d""輸入是否為學(xué)生干部:""%c""(注意:%c前面有一個(gè)空格)輸入是否為西部學(xué)生:""%c""(注意:%c前面有一個(gè)空格)輸入發(fā)表文章數(shù)量: ""%d""-----輸出格式:輸 出 學(xué) 生 獲 得 的 獎(jiǎng) 學(xué) 金 :""name:%s,scholarship:%d\n""輸出獲得獎(jiǎng)學(xué)金總數(shù)最高的學(xué)生:""%s get thehighestscholarship%d\n""*/#include<stdio.h>typedefstructwinners{charname[20];intfinalScore;intclassScore;charwork;charwest;intpaper;intscholarship;}WIN;intmain(){printf(""Inputn:"");intn,i;scanf(""%d"",&n);WINstu[n];for(i=0;i<n;i++){printf(""Inputname:"");scanf(""%s"",stu[i].name);printf(""Inputfinalscore:"");scanf(""%d"",&stu[i].finalScore);printf(""Inputclassscore:"");scanf(""%d"",&stu[i].classScore);getchar();printf(""Classcadreornot?(Y/N):"");scanf(""%c"",&stu[i].work);getchar();-----printf(""Students from the West ornot?(Y/N):"");scanf(""%c"",&stu[i].west);getchar();printf(""Input the number ofpublishedpapers:"");scanf(""%d"",&stu[i].paper);stu[i].scholarship=0;if (stu[i].finalScore>80 &&stu[i].paper>=1)stu[i].scholarship+=8000;if (stu[i].finalScore>85 &&stu[i].classScore>80)stu[i].scholarship+=4000;if (stu[i].finalScore>90)stu[i].scholarship+=2000;if (stu[i].finalScore>85 &&stu[i].west=='Y')stu[i].scholarship+=1000;if (stu[i].classScore> 80 &&stu[i].work=='Y')stu[i].scholarship+=850;printf(""name:%s,scholarship:%d\n"",stu[i].name,stu[i].scholarship);}intts=stu[0].scholarship,k;for(i=1;i<n;i++){if(ts<stu[i].scholarship){k=i;}}printf(""%s get the highestscholarship%d\n"",stu[k].name,stu[k].scholarship);/*1) 院士獎(jiǎng)學(xué)金:期末平均成績(jī)高于 80分(>80),并且在本學(xué)期內(nèi)發(fā)表 1篇或1篇以上論文的學(xué)生每人均可獲得 8000元;2) 五四獎(jiǎng)學(xué)金:期末平均成績(jī)高于 85分(>85),并且班級(jí)評(píng)議成績(jī)高于 80分(>80)的學(xué)生每人均可獲得 4000元;-----成績(jī)優(yōu)秀獎(jiǎng):期末平均成績(jī)高于90分(>90)的學(xué)生每人均可獲得2000元;西部獎(jiǎng)學(xué)金:期末平均成績(jī)高于85分(>85)的西部省份學(xué)生每人均可獲得1000元;班級(jí)貢獻(xiàn)獎(jiǎng):班級(jí)評(píng)議成績(jī)高于80分(>80)的學(xué)生干部每人均可獲得850元;*/return0;}"12.3"/*請(qǐng)編寫一個(gè)簡(jiǎn)單的23根火柴游戲程序,實(shí)現(xiàn)人跟計(jì)算機(jī)玩這個(gè)游戲的程序。為了方便程序自動(dòng)評(píng)測(cè),假設(shè)計(jì)算機(jī)移動(dòng)的火柴數(shù)不是隨機(jī)的,而是將剩余的火柴根數(shù)對(duì) 3求余后再加1來作為計(jì)算機(jī)每次取走的火柴數(shù)。如果計(jì)算機(jī)打算移走的火柴數(shù)等于剩下的火柴數(shù),則將計(jì)算機(jī)打算移走的火柴數(shù)減1。但是計(jì)算機(jī)不可以不取,剩下的火柴數(shù)為 1時(shí),必須取走1根火柴。假設(shè)游戲規(guī)則如下:1)游戲者開始擁有 23根火柴棒;2)每個(gè)游戲者輪流移走 1根、2根或3根火柴;3)誰取走最后一根火柴為失敗者。程序運(yùn)行結(jié)果示例 1:Gamestart!Note:themaximumnumberis3Pleaseenterthenumberofmatchesyouaremoving:5↙Thenumberyouenterediswrong ,pleasere-enter!Pleaseenterthenumberofmatchesyouaremoving:3↙Thenumberofmatchesyouaremovingis:3Thenumberofmatchesleftis:20Thenumberofmatchesthathavebeenmovedbythecomputeris:3Thenumberofmatchesleftis:17-----Pleaseenterthenumberofmatchesyouaremoving:1↙Thenumberofmatchesyouaremovingis:1Thenumberofmatchesleftis:16Thenumberofmatchesthathavebeenmovedbythecomputeris:2Thenumberofmatchesleftis:14Pleaseenterthenumberofmatchesyouaremoving:2↙Thenumberofmatchesyouaremovingis:2Thenumberofmatchesleftis:12Thenumberofmatchesthathavebeenmovedbythecomputeris:1Thenumberofmatchesleftis:11Pleaseenterthenumberofmatchesyouaremoving:3↙Thenumberofmatchesyouaremovingis:3Thenumberofmatchesleftis:8Thenumberofmatchesthathavebeenmovedbythecomputeris:3Thenumberofmatchesleftis:5Pleaseenterthenumberofmatchesyouaremoving:1↙Thenumberofmatchesyouaremovingis:1Thenumberofmatchesleftis:4Thenumberofmatchesthathavebeenmovedbythecomputeris:2Thenumberofmatchesleftis:2Pleaseenterthenumberofmatchesyouaremoving:1↙Thenumberofmatchesyouaremovingis:1Thenumberofmatchesleftis:1Thenumberof matches that have beenmovedby the-----computeris:1Thenumberofmatches

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論