版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2計(jì)算時(shí)鐘的夾角成績(jī):10/折扣:0.8背景:鐘面上的時(shí)針和分針之間的夾角總是在〇?180之間(包括〇和180)〇舉例來(lái)說(shuō),在十二點(diǎn)的時(shí)候兩針之間的夾角為〇,而在六點(diǎn)的時(shí)候夾角為180,在三點(diǎn)的時(shí)候?yàn)?0。本題要解決的是計(jì)算12:00到11:59之間任意ー個(gè)時(shí)間的夾角。輸入:每組測(cè)試數(shù)據(jù)包含兩個(gè)數(shù)字:第一個(gè)數(shù)字代表小時(shí)(大于0小于等于12),第二個(gè)數(shù)字代表分(在區(qū)間[0,59]上)〇輸出:對(duì)應(yīng)每組測(cè)試數(shù)據(jù),用常用格式顯示時(shí)間以及這個(gè)時(shí)候時(shí)針和分針間的最小夾角,精確到小數(shù)點(diǎn)后一位。輸出格式如下所示。#include<stdio.h>intmain()(floatm;inth,p;scanf("%d%f'/&h/&m);P=h;if(p==12)P=0;floatd;if((p*30+m/2)>m*6)d=p*30+m/2-m*6;elsed=m*6-p*30-m/2;if(m<10)printf("At%d:O%.Oftheangleis%.lfdegrees.\n",h,m,d);elseprintf(HAt%d:%2.0ftheangleis%.Ifdegrees.\n",h,m,d);3溫度轉(zhuǎn)換成績(jī):10/折扣:0.8RT京:經(jīng)常出國(guó)旅行的驢友都知道,需要時(shí)時(shí)了解當(dāng)?shù)氐臍鉁貭顩r,但不少國(guó)家采用了不同的溫度計(jì)量單位:有些使用華氏溫度標(biāo)準(zhǔn)(F),有些使用攝氏溫度(C)〇現(xiàn)在,請(qǐng)你根據(jù)溫度轉(zhuǎn)換公式設(shè)計(jì)ー個(gè)溫度轉(zhuǎn)換程序,可以進(jìn)行溫度轉(zhuǎn)換。如果輸入攝氏溫度,顯示轉(zhuǎn)換的華氏溫度;如果輸入華氏溫度,顯示轉(zhuǎn)換的攝氏溫度。溫度轉(zhuǎn)換的公式為:F=(Cx9/5)+32;C=(F-32)x5/9;式中F-ー華氏溫度,Cー攝氏溫度。輸入:第一個(gè)數(shù)據(jù)(1或2)確定轉(zhuǎn)換的類型:華氏轉(zhuǎn)攝氏(1);攝氏轉(zhuǎn)華氏(2);第二個(gè)數(shù)據(jù)是相應(yīng)需要轉(zhuǎn)換的溫度值。輸出:相應(yīng)的轉(zhuǎn)換后的溫度值(保留小數(shù)點(diǎn)后2位)。#include<stdio.h>intmain()(inta;floatx;floatfc(floatt);floatcf(floatm);scanf("%d%f"/&a/&x);switch(a)(printf("TheCentigradeis%.2f\n",fc(x));break;printf("TheFahrenheitis%.2f\n",cf(x));break;}floatfc(floata)(floatb;b=(a-32)?弱;returnb;}floatcf(floata)(floatb;b=(a*9萬(wàn))+32;returnb;4判斷三角形的形狀成績(jī):10/折扣:0.85求解一元二次方程成績(jī):15/折扣:0.8初中的時(shí)候我們就會(huì)求解一元二次方程了,下面讓我們來(lái)教計(jì)算機(jī)如何求解。輸入a,b,c,就一元二次方程ax2+bx+c=O的根。輸入:假設(shè)a,b,c均into輸出:要求輸出的根為double型,保留6位小數(shù)。#include<stdio.h>#include<math.h>intmain(){inta,b,c;intr=0; /X)一般scanf("%d%d%d',/&a/&bz&c);doublexl,x2;//I虛數(shù)根//I虛數(shù)根tn相等實(shí)數(shù)根IB輸入錯(cuò)誤/ん一元方程r=l;if(b*b-4*a*c==0&&a!=0)r=2;if(a==O&&b==O)r=3;if(a==O&&b!=O)r=4;switch(r)case0:doubled,e,f;d=a/e=b/f=c;xl=(-e+sqrt(e*e-4*d*f))/(2*d);x2=(-e-sqrt(e*e-4*d*f))/(2*d);if(d>0)printf(,,xl=%.6lf\nx2=%.6lf\n,,/xl/x2);elseprintf("xl=%.6lf\nx2=%.6lf\n"/x2/xl);break;}{doubled,e,f;d=a/e=b/f=c;xl=(-e)/(2*d);x2=(sqrt(4*d*f-e*e)/yd);if(b==O)(if(d>0)printf(,,xl=%,6fi\nx2=%.6lfi\n"/x2/-x2);elseprintf("xl=%.6fi\nx2=%.6lfi\n"/x2,-x2);}elseif(d>0)printf("xl=%.6lf+%.6fi\nx2=%.6lf-%.6lfi\n"/xl/x2,xl/x2);elseprintf("xl=%.6lf%.6fi\nx2=%.6lf%.6lfi\n",xl/x2/xl/-x2);)break;}(xl=(-b)/(2*a);printf(nxl=x2=%.6lf\n"/xl);break;}printf(Hlnputerror!\n");break;}(floatbb=b;floatcc=c;floatxx=-0;xl=-cc/bb;if(xl==xx)xl=-xl;printf("x=%.6lf\n,,/xl);break;6計(jì)算SUM的值成績(jī):5Z折扣:0.8已知公式:SUM=1+1/2+1/3+1/4+...+1/n輸入:n輸出:表達(dá)式sum的值。結(jié)果保留6位小數(shù)。#include<stdio.h>intmain(){doublen;scanf("%lf”,&n);doubles=0;for(doublep=l;p<=n;p++){s=s+l/p;}printf("sum=%.6lf\n';s);}?貪吃的猴子成績(jī):5/折扣:0.8有一只猴子,第一天摘了若干個(gè)桃子,當(dāng)即吃了一半,但還覺(jué)得不過(guò)癮,就又多吃了一個(gè)。第2天早上又將剩下的桃子吃掉一半,還是覺(jué)得不過(guò)癮,就又多吃了兩個(gè)。以后每天早上都吃了前一天剩下的一半加天數(shù)個(gè)(例如,第5天吃了前一天剩下的ー一般加5個(gè))。到第n天早上再想吃的時(shí)候,就只剩下一個(gè)桃子了。輸入:天數(shù)n輸出:第一天的桃子個(gè)數(shù)#include<stdio.h>intmain()(intn;scanf("%d",&n);ints=l;for(inti=n;i>l;i-)(s=(s+i-l)?l;)if(s==l)printf("Themonkeygot%dpeachinfirstday.\n",s);elseprintf("Themonkeygot%dpeachsinfirstday.\n",s);8求最后3位數(shù)值成績(jī):5/折扣:0.8中學(xué)時(shí)我們就會(huì)求一個(gè)數(shù)的n次方了,但計(jì)算機(jī)不會(huì),請(qǐng)你來(lái)編寫ー個(gè)程序吧。由于計(jì)算機(jī)比較“笨”,所以我們編寫程序的功能不用太強(qiáng),只要能算出a的n次方的最后3位數(shù)就可以了。輸入:a和n的值。假設(shè)a<=150〇輸出:求a的n次方的最后3位數(shù)。#include<stdio.h>intmain(){inta,n;ints=l;intq=0;scanf(”%d%d”,&a,&n);for(intt=O;t<n;t++){s=s*a;if(s>1000){s=s%1000;q=l;}}inte=s%1000;if(q==O)printf("Thelast3numbersis%d.'nツe);elseprintf("Thelast3numbersis%03d.\n'\e);}9找出最大素?cái)?shù)成績(jī):5Z折扣:0.8素?cái)?shù)是指ー個(gè)只能被1和它本身整除的數(shù),在數(shù)論中占有重要的研究地位,在當(dāng)代密碼學(xué)中也被廣泛應(yīng)用。輸入:取值范圍輸出:該范圍內(nèi)的最大素?cái)?shù)#include<stdio.h>voidmain()(intn;scanf("%d",&n);intyn(inta);intend;for(inti=n;i>0;i=i-l)(if(yn(i)!=0){end=i;break;}}printf("Themaxprimenumberis%d.\n,end);)intyn(inta)(intq=l;for(intp=2;p<a;p++)(if(a%p==O)(q=0;)if(q==O)break;)returnq;10黑色星期五成績(jī):5Z折扣:0.8在西方,星期五和數(shù)字13都代表著壞運(yùn)氣,兩個(gè)不幸的個(gè)體最后結(jié)合成超級(jí)不幸的一天。所以,不管哪個(gè)月的十三日又恰逢星期五就叫"黑色星期五”。輸入:年份輸出:判斷該年是否包含黑色星期五,如包含,給出具體日期#include<stdio.h>#include<math.h>voidmain()(intmonth[2][12]={{0,3,0,3,2,3,2,3,3,2,3,2,},{0,3,l,3,2,3,2,3,3,2,3,2}}; 〃1平年2閏年intyea^a;intcount=0;intday=0;scanf("%d"z&year);if(year%4==0)a=l;elsea=0;//2O12-1-13fridayintc=(year-2012)%4;intb=(year-c-2012)A;switch(c)(caselxase2:case3:day=(day+5*b+c+l)%7;break;)case0:day=(day+5*b)%7;break;})intdaytemp=day;for(inti=0;i<12;i++){daytemp=daytemp+month[a][i];if((daytemp)%7==0)count++;}if(count==l)printf(叮hereis%dBlackFridayinyear%d.\nltis:\n",count,year);elseprintf("Thereare%dBlackFridaysinyear%d.\nTheyare:\n,count,year);intdaytempl=day;for(inti=0;i<12;i++)(daytempl=daytempl+month[a][i];if((daytempl)%7==0)printf(“%d/%d/13\n”,year;i+l);11小學(xué)一年級(jí)的算術(shù)運(yùn)算成績(jī):5Z折扣:0.8兩個(gè)一年級(jí)小朋友在ー起玩游戲,小明給出ー堆一位的正整數(shù)和運(yùn)算要求(+、ー、?、/、%),小麗要找出這些整數(shù)中的最大值和最小值,然后按照小明的要求算出最大數(shù)與最小數(shù)進(jìn)行算術(shù)運(yùn)算的結(jié)果。輸入:用逗號(hào)分隔的一位正整數(shù)序列,及其運(yùn)算符和等號(hào)輸出:最大數(shù)op最小數(shù)=結(jié)果#include<stdio.h>intmain()(intop=0;intmax=0;intmin=9;for(コ;)(charc;scanf(“%c”,&c);if(c==7)continue;if(c=='+')op=l;elseif(c=='-')op=2;elseif(cニニ‘*')op=3;elseif(c=='/')op=4;elseif(cニニ‘%')op二5;elseif(c=='='){break;}elseif(c<二9&&c>二〇){訐((c,〇つ>max){max二c,〇';}if((c-'O1)<min){min二c-O;}))switch(op){(printf("%d+%d=%d\n"/max/min,max+min);break;){printf("%d-%d二%d\n”,max,min,max-min);break;}(printf("%d*%d=%d\nn,max,min,max*min);break;){if(min==0)printf("Error!\n");else(printf("%d/%d=%d\n,,lmax,min,max/min);}break;}{if(min==0)printf("Error!\nh);else(printfr%d%%%d二%d\n”,max,min,max%min);)break;12尋找特殊整數(shù)成績(jī):10/折扣:0.8請(qǐng)編寫一個(gè)程序?qū)ふ药`種特殊整數(shù):ー個(gè)n位的正整數(shù)等于其各位數(shù)字的n次方之和。例如:407=4x4x4+0x0x0+7x7x7。所以407就是ー個(gè)特殊數(shù)。輸入:正整數(shù)的位數(shù)n(n<=6)〇輸出:所有此n位特殊數(shù)。每個(gè)數(shù)占一行。若不存在符合條件的特殊數(shù),則輸出提示:"Nooutput;若存在,則從小到大進(jìn)行輸出。說(shuō)明:假設(shè)輸入為4,在4位整數(shù)中,有3個(gè)4位的特殊數(shù),則輸出格式為(輸出中的1111.2222和9999并不是4位特殊數(shù),只是格式樣例):111122229999#include<stdio.h>intf(intnjnta)(ints=l;for(inti=0;i<a;i++)s=s*n;returns;}intff(intn)ints=0;for(inti=0;n!=0;i++)s=s+((n/10)%10);n=n/10;}returns;}voidmain(){inta;scanf("%d",&a);intmax=l;intmin=l;intflag=l;if(a==l){printf("l\n2\n3\n4\n5\n6\n7\n8\n9\n");}else(for(inti=0;i<a;i++){max=max*10;}max=max-l;intcount=0;intsum=O;intcountl0=0;for(inti=O;i<a-l;i++){min=min*10;}if(a==6)(intcountl0=10;for(intt=540000;t<max;)(if(countl0==10){intttt=t;if(ff(t)%2==l)t=t+10;countl0=0;continue;)intsum=0;inttt=t;for(inti=0;i<a;i++)sum=sum+f(tt%10/a);tt=tt/10;if(sum==t){printf("%d\n"zt);flag=O;}t++;count++;countlO++;)if(flag==l)printf("Nooutput.\n");}else{for(intt=min;t<max;t++)(intsum=0;inttt=t;for(inti=0;i<a;i++){sum=sum+f(tt%10,a);tt=tt/10;}if(sum==t){printf("%d\n",t);flag=0;}count++;)if(flag==l)printf("Nooutput.\n");13空心的倒三角型成績(jī):5/折扣:0.8苦?&冃京:請(qǐng)根據(jù)要求打印可空心倒三角形。輸入:輸入三角形的高度(h>=0)〇輸出:打印相應(yīng)的空心倒三角形。圖樣參見測(cè)試用例。#include<stdio.h>voidmain(){intn;scanf("%d"z&n);for(inti=0;i<(2*n-l);i++){printf("*M);}printf("\n");for(intp=l;p<n;p++){for(intq=l;q<=(2*n-l-p);q++){if(q==(p+l))printf("*");elseif(q==(2*n-l-p))printf("*");elseprintf("");}printf("\n");}}14空心字符菱形成績(jī):5Z折扣:0.8輸入:菱型起始字母和菱形的高度。輸出:參看測(cè)試用例,打印空心的由字符組成的菱形。#include<stdio.h>intmain(){intn;charc;scanf("%c%dツ&c,&n);if(n==l)printf(M%c\nH,c);else(for(inti=0;i<n-l;i++)(printf(M");}printf(“%へn”,c);for(inti=2;i<=n;i++)(for(intj=0;j<n-i;j++){printf("");)printf(”%c”,c+i?l);for(intk=0;k<2*(i-l)-l;k++){printf("");}printf(”%ヘn”,c+i-l);}for(inti=n<;i>=2;i-){for(intj=0;j<n-i;j++){printf("");}printf("%cM,c+i-l);for(intk=0;k<2*(i-l)-l;k++){printf("");}printf("%c\n",c+i-l);)for(inti=O;i<n-l;i++)(printf("");)printf("%c\n",c);H4:小蜜蜂(選作)成績(jī):5/折扣:0.8ー只小蜜蜂在如下圖所示的蜂窩上爬行。它爬行時(shí),只能從一個(gè)格爬到相鄰的大號(hào)格子中。例如,從1號(hào)格子可以爬到2號(hào)或者3號(hào)格子,從2號(hào)則可以爬到3號(hào)或者4號(hào)格子。請(qǐng)問(wèn)從ー個(gè)格子a爬到ー個(gè)格子b一共有多少種可行的路線。輸入:分別是起始點(diǎn)a和終止點(diǎn)b的編號(hào)。(a和b在1?100之間,且a<b〇)輸出:#include"stdio.h"#defineN50intmain(){intb[N]={0};intc[N]={0};inti,j,k,n,al,a2,t,lニ0;b[l]=c[l]=l;scanf("%d%d,,/&al/&a2);n=a2-al+l;for(j=3;j<=n;j++){for(i=l;i<N;i++)t=b[i]+c[i];if(l==l){c[i]=b[i]-l;1=0;}elsec[i]=b[i];b[i]=t;if(b[i]>=10)(1=1;b[i+l]=b[i+l]+l;b[i]=b[i]%10;}}}k=N;while(b[-k]==0){}for(i=k;i>=l;i—)printf("%d"/b[i]);printf("\n");return0;}H5:數(shù)制轉(zhuǎn)換(選作)成績(jī):5/折扣:0.8我們通常使用的都是十進(jìn)制的數(shù)字,但其實(shí)在生活中也經(jīng)常會(huì)使用其它進(jìn)制。這個(gè)題目會(huì)給你兩個(gè)不同的數(shù)字,它們不屬于同一進(jìn)制,要求你計(jì)算出當(dāng)它們分別處于何種進(jìn)制之中時(shí),兩個(gè)數(shù)字相等。譬如12和5,在十進(jìn)制下它們是不等的,但若12使用3進(jìn)制而5使用六進(jìn)制或十進(jìn)制時(shí),它們的值就是相等的。因此只要選擇合適的進(jìn)制,12和5就可以是相等的。程序的輸入是兩個(gè)數(shù)字M和N(其十進(jìn)制的值不超過(guò)100000000〇),它們的進(jìn)制在2~36之間。對(duì)于十以下的數(shù)字,用〇~9表示,而十以上的數(shù)字,則使用大寫的A-Z表示。求出分別在2-36哪種進(jìn)制下M和N相等。若相等則輸出相應(yīng)的進(jìn)制,若不等則輸出錯(cuò)誤信息。當(dāng)然了,對(duì)于多種可能成立的情況,找出符合要求的進(jìn)制最小的ー組就行了。信息的格式見測(cè)試用例。#include<stdio.h>longdoublemypow(intxjnty)(longdoubleresult=l;for(inti=0;i<y;i++)result=result*x;returnresult;}longdoublef(int*a,intlenthjntbase)(longdoubleresult=O;intk=0;for(inti=lenth;i>O;i-)(result=result+(*(a+k))*mypow(base,i-l);k++;returnresult;intchange(charc)//changeintonumberin36base(intresult="l;if((c>=,0,)&&(c<='9')){result=(c-'〇');}elseif((c>=W)&&(c<二Z)){result=(c-'A')+10;}elseif((c>='a')&&(c<='z')){result=(c-'a')+10;}returnresult;}intmain()(intflag=O;intnumtemp[2][40];for(inti=0;i<2;i++)(for(intj=0;j<40;j++){numtemp。][j]二-1;})charch[80];charchl[40]zch2[40];intchoice=0;intm=0;//getstringgets(ch);for(inti=0;i<l;i++)(if(ch[i]==''){for(intj=i;j<40;j++){ch[j]=ch[j+l];}i=i-l;)}for(inti=0;i<80;i++)if(ch[i]=='\O')break;elseif(ch[i]==32){choice=l;m=0;}else{numtemp[choice][m]=change(ch[i]);m++;}}//FINDmaxvalueintmaxl=l/max2=l;for(inti=0;i<40;i++)(if(numtemp[O][i]>maxl)maxl=numtemp[O][i];if(numtemp[l][i]>max2)max2=numtemp[l][i];}//findlenthintlenthl=0Jenth2=0;for(inti=0;i<40;i++)(if(numtemp[O][i]==-l)break;lenthl++;}for(inti=0;i<40;i++)(if(numtemp[l][i]==-l)break;Ienth2++;)//savestringintochl/ch2for(inti=0;i<40;i++)(if(ch[i]==t*){for(intj=i;j<40;j++)(chO]=chO+l];}i=i-l;)}char*chp;chp=&ch[O];for(inti=O;i<lenthl;i++)(chl[i]=*chp;chp++;)chl[lenthl]='\O";for(inti=0;i<lenth2;i++){ch2[i]=*chp;chp++;}ch2[lenth2]='\0';//caculatefor(inti=maxl+l;i<37;i++)(for(intj=max2+l;j<37;j++)(if(f(&numtemp[0][0]Jenthl/i)==f(&numtemp[l][0]Jenth2/j))(printf("%s(base%d)=%s(base%d)\n"/chl/izch2j);flag=1;if(flag==l)break;}if(flag==l)break;}if(flag==l)break;}if(flag==O)printf(”%sisnotequalto%sinanybase2..36\n,,/chl/ch2);H6:郵票組合(選作)成績(jī):5/折扣:0.9背景:我們寄信都要貼郵票,在郵局有一些小面值的郵票,通過(guò)這些小面值郵票中的ー張或兒張的組合,可以滿足不同郵件的不同的郵資?,F(xiàn)在,郵局有4種不同面值的郵票。在每個(gè)信封上最多能貼5張郵票,面值可相同,可不同。輸入:四種郵票的面值。輸出:用這四種面值組成的郵資最大的從1開始的一個(gè)連續(xù)的區(qū)間。說(shuō)明:如結(jié)果為10,則表明使用4張郵票可組合出1、2,3,4、5、6、7、8、9、10這些郵資。名詞解釋:郵資:就是你寄東西需要花多少錢。郵票面額:是由國(guó)家發(fā)行的具有固定價(jià)格的花紙片,被稱為郵票。如果你寄東西,郵局稱了重量,告訴你要240分。這樣你就要貼郵票了。如果現(xiàn)在郵局的郵票有面值為80分、50分、20分和10分的四種,你就可以采用不同的組合得到240的郵資,例如:采用3張80分的可以湊出240分;或者24張10分的湊起來(lái)240分也可以。顯然不同郵票的組合都可以得到同樣ーー種郵資。#include<stdio.h>voidmain()(intm[4];inttemp=0;scanf("%d%d%d%d"/&m[0]/&m[l]/&m[2]/&m[3]);intr=0;while(r==O)for(inti=0;i<3;i++){if(m[i]>m[i+l])(temp=m[i];m[i]=m[i+l];m[i+l]=temp;}}if((m[3]>=m[2])&&(m[2]>=m[l])&&(m[l]>=m[0])){r=l;})//printf("%d%d%d%d",m[0]/m[l]/m[2]/m[3]);//startints=0;intcount=0;intsss=O;intstemp=O;if(m[O]==l){while(l){for(inti=0;i<=5;i++)/A(for(intj=0;(j+i)<=5;j++)//3{for(intk=O;(k+j+i)<=5;k++)//2(for(intl=0;(l+k+j+i)<=5;l++)//l(s=i*m[3]+j*m[2]+k*m[l]+l*m[0];//printf("%d%d%d%d一一%d%d%d\n,i,j,k,l,stemp,s,count);if((s-stemp)>l){count++;}elseif((s-stemp)==l){stemp=s;count=0;}else{count++;}if(count>15504)break;}//lif(count>15504)break;}//kif(count>15504)break;}//jif(count>15504)break;}//iif(count>15504)break;}//whileprintf(*'Themaxis%d.\n",stemp);}〃ifelseprintf('*ThemaxisO.\n");15數(shù)字菱形成績(jī):5/折扣:0.8這是非信息類今年出的題目,大家來(lái)看看,你會(huì)做嗎?輸入n的值,輸出如下例(n=4)所示的數(shù)字菱形。4434432344321234432344344輸入:n輸出:數(shù)字菱形友情提示:同學(xué)們總結(jié)ー下打印星號(hào)組成的實(shí)心圖形程序的編程思路:第一步,打印星號(hào)組成的正方形;第二步,改變每行星號(hào)的個(gè)數(shù),打印每行星號(hào)數(shù)量不ー樣的圖形:如果是空心圖形,每行第一個(gè)和最后ー個(gè)位置輸出星號(hào),其他位置輸出空格?,F(xiàn)在我們練習(xí)輸出變化的字符,在打印星號(hào)圖形的基礎(chǔ)上,原來(lái)輸出?號(hào)的位置,將printf("*");改為printf("%2d",x);當(dāng)然,原來(lái)輸出ー個(gè)?號(hào)的地方只占ー個(gè)字符的位置,現(xiàn)在都要改為2個(gè)字符的位置,如果輸出的是數(shù)字且多于2個(gè),則要是%3d或%4d了。x是多少呢?則要尋找其規(guī)律,就是該輸出位置與所在行列的關(guān)系。注意給出的測(cè)試用例,輸出的數(shù)字是左對(duì)齊啊。不用數(shù)組就可以完成。#include<stdio.h>#include<math.h>intmain(){intn;scanf("%d",&n);if(n<=9)for(inti=n-l;i>=-(n-l);i--){introw=n-abs(i);for(intk=0;k<2*abs(i);k++)printf(T,");for(intt=0;t<row-l;t++)(printf("%dシn-abs(t));}printf("%d",abs(i)+l);for(intt=row-2;t>=0;t-)(printf("%dツn-abs(t));)printf{"\n");}}else(for(inti=n-l;i>=-(n-l);i-)(introw=n-abs(i);for(intk=0;k<2*abs(i);k++)printf("");for(intt=0;t<row-l;t++)(printf(',%-2d"/n-abs(t));)printf(H%-2d",abs(i)+l);for(intt=row-2;t>=0;t-)(printf("%-2d'\n-abs(t));)printf(ヘバ);16誰(shuí)能出線成績(jī):10Z折扣:0.8背景:電視臺(tái)舉辦“超級(jí)學(xué)生”オ藝大賽,由于報(bào)名人數(shù)狂多,所以要先進(jìn)行分組預(yù)賽。按規(guī)定,每10名學(xué)生為ー個(gè)預(yù)賽小組,評(píng)委打出分?jǐn)?shù)(〇?100分),各小組第一名可以進(jìn)入下ー輪;如果有多名學(xué)生得分相同都是第一名,則可同時(shí)進(jìn)入下ー輪。輸入:按順序給出一個(gè)小組10個(gè)人的最后得分(int)輸出:能夠出線的學(xué)生序號(hào)(〇?9)。#include<stdio.h>intmain()(intgrade[10];for(inti=0;i<10;i++)scanf("%d"z&grade[i]);intmax=O;for(inti=0;i<10;i++)(if(grade[i]>max)max=grade[i];)for(inti=0;i<10;i++)(if(grade[i]==max)printf("%d\n",i);17等值數(shù)列段成績(jī):10/折扣:0.8如果ー個(gè)數(shù)列中的某一段(至少有兩個(gè)元素)的各元素值均相同,則稱之為等值數(shù)列段。等值數(shù)列段中元素的個(gè)數(shù)叫做等值數(shù)列段的長(zhǎng)度。輸入:由N個(gè)元素組成的整數(shù)數(shù)列A(其中N<=50)輸出:A中長(zhǎng)度最大的所有等值數(shù)列段的始末位置,如果沒(méi)有等值數(shù)列段,則輸出Noequalnumberlist.說(shuō)明:始末位置是指數(shù)組下標(biāo),即〇表示第一個(gè)元素。如果有多個(gè)同等長(zhǎng)度的等值數(shù)列,只輸出第-個(gè)等值數(shù)列的起始位置。當(dāng)在ー個(gè)LIST中出現(xiàn)兩個(gè)等長(zhǎng)的連續(xù)串的時(shí)候,我們的答案應(yīng)該是第一個(gè)等長(zhǎng)串。#include<stdio.h>intmain(){for(ロ;)(intnum[50]={0};intn=0;scanf(”%d”,&n);for(inti=0;i<n;i++){scanf(”%d,&num[i]);}intstarttemp=num[O];intstart=num[O];inta=-l;intb=0;intcount=l;intcounttemp=l;for(inti=l;i<n;i++)a=i;counttemp++;if(counttemp>count){b=a;count=counttemp;}continue;)else{counttemp=l;}}if(a==-l){printf("Noequalnumberlist.\nM);break;}elsebreak;}{printf("Thelongestequalnumberlistisfrom%dto%d.\n"/b+l-count,b);}break;}|18大家一起做游戲成績(jī):15/折扣:0.8幼兒園的小朋友們剛學(xué)習(xí)了如何數(shù)數(shù),阿姨在下課時(shí)組織大家一起玩游戲。規(guī)則如下:所有的小朋友繞成一圈,順序排號(hào),從第一個(gè)小朋友開始報(bào)數(shù),凡是報(bào)到固定數(shù)字(例如5)的,都退出該游戲,直到只剩下??位小朋友游戲オ中止。每個(gè)小朋友都希望自己能有更多的練習(xí)數(shù)數(shù)的機(jī)會(huì),所以都希望成為最終被留下的那位。現(xiàn)在,請(qǐng)大家?guī)托∨笥褌冇?jì)算ー下,在第一次排號(hào)的時(shí)候排到第幾位才能成為最終被留下的小朋友。輸入:小朋友的個(gè)數(shù)(<=50) 要被練習(xí)的數(shù)字輸出:最終被留下的小朋友的序號(hào)說(shuō)明:如"要被練習(xí)的數(shù)字”是5,則每次數(shù)到5的同學(xué)要退出該游戲#include<stdio.h>intmain()(intn,a;intcounta=0;intcount=0;scanf("%d%d"/&n/&a);intbase[51]={0};for(inti=0;i<=n;i++){base[i]=i;}for(inti=0;l;){do{i++;if(i==n+l){i=l;})while(base[i]==O);counta++;if(counta==a+l)counta=l;if(count==n-l){printf("TheleftchildisNO%d.\n",base[i]);break;}if(counta==a)(base[i]=O;count++;})|19二年級(jí)小學(xué)生的題目成績(jī):10Z折扣:0.8兩個(gè)二年級(jí)小朋友在ー起玩游戲,小明給出ー堆不超過(guò)兩位的正整數(shù)和運(yùn)算要求(+、ー、?、/、%),小麗要找出這些整數(shù)中的最大值和最小值,然后按照小明的要求算出最大數(shù)與最小數(shù)進(jìn)行算術(shù)運(yùn)算的結(jié)果。輸入:用逗號(hào)分隔的不超過(guò)兩位的正整數(shù)序列,及其運(yùn)算符和等號(hào)輸出:最大數(shù)op最小數(shù)=結(jié)果#include<stdio.h>intmain()(intop=0;intmax=0;intmin=99;intmark=0;intnl二一l,n2二一l,n二。;for(;l;)(charc;scanf("%c”,&c);if(cニニン){if(markニニ1)n=nl;elseif(markニニ2)n=nl*10+n2;if(n>max){max=n;}if(n<min){min二n;}markニ〇;nl=-l,n2=-l;continue;)if(cニニ屮)op=l;elseif(c==,J)op=2;elseif(c=='*')op=3;elseif(c==7')op=4;elseif(c=='%')op=5;elseif(c=='='){break;}elseif(c<='9,&&c>='0,)(if(mark==O){nl=c-'O';mark=l;}elseif(mark==l){n2=c-'0';mark=2;}}switch(op)({printf("%d+%d=%d\n,'/max/min/max+min);break;)(printf("%d-%d=%d\n"/max/min/max-min);break;}{printf("%d*%d=%d\n"/max/min/max*min);break;}{if(min==0)printf("Error!\n");elseprintf("%d/%d=%d\n”,max,min,max/min);break;{if(min==O)printf("Error!\n");else(printf("%d%%%d=%d\n",max,min,max%min);)break;)}|H7:鋪地板(選作)你是一名室內(nèi)裝潢工程隊(duì)的配料員。你的伙伴們喜歡采用“之”字型的方式鋪大理石地磚,圖案如下:12671535814164913172210121821231119202425學(xué)了C語(yǔ)言以后,你決定編寫ー個(gè)程序,幫助你的同伴生成這樣的圖形。輸入:方陣N的大小。輸出方陣。#include<stdio.h>intmain(){intn;scanf("%d"z&n);intnum[20];num[O]=l;num[l]=2;if(n==l){printf("l\n");}elseif(n==2){printf("12\n34\n");}else(intd=4;for(inti=2;i<n;i=i+2){num[i]=num[i-l]+d;num[i+l]=num[i]+l;d=d+4;switch(n%2)(case0:(d=2*n-2;inttemp=0;for(intj=0;j<n;j=j+2)(for(intk=0;k<n;k++)〃輸出第2n行(printf(”%2d,num[k]);if(k!=n-l)printf(M*');)printf("\n");temp=num[n-l];for(intkニ〇水<n;k=k+2)〃生成第2n+l行(num[k]=num[k+l]+l;num[k+l]=num[k+2]-l;}num[n-l]=temp+d;d=d-4;for(intk=0水<n;k++)〃輸出第2n+l行{printf("%2d”,num[k]);if(k!=n-l)printf("");}printf("\n");temp=num[n-l];for(intk=0;k<n;k=k+2)〃生成第2n+2彳了{(lán)num[k]=num[k+l]-l;num[k+l]=num[k+2]+l;}num[n-l]=temp+l;break;}case1:d=2*n-4;inttemp=O;for(intj=0;j<n;j=j+2)(for(intk=O;k<n水++)〃輸出第2n行(printf("%2d",num[k]);if(k!=n-l)printf("H);}printf("\n");if(j==n-l)break;temp=num[n-l];for(intk=O;k<n;k=k+2)〃生成第2n+l行(num[k]=num[k+l]+l;num[k+l]=num[k+2]-l;}num[n-l]=temp+l;for(intk二〇;k<n;k++)〃輸出第2n+l行(printf("%2d",num[kn;if(k!=n-l)printf("");}printf(H\nM);temp=num[n-l];for(intk二〇;k<n;k=k+2)〃生成第2n+2行(num[k]=num[k+l]-l;num[k+l]=num[k+2]+l;}num[n-l]=temp+d;d=d-4;)break;}20組成最大數(shù)成績(jī):10Z折扣:0.8任意輸入ー個(gè)自然數(shù),輸出該自然數(shù)的各位數(shù)字組成的最大數(shù)。例如,輸入1593,則輸出為9531〇輸入:自然數(shù)n輸出:各位數(shù)字組成的最大數(shù)#include<stdio.h>#include<string.h>intmain(){chara[10000];intx[10]={0};scanf(”%s”,a);intn=strlen(a);for(inti=0;i<n;i++){x[a[i]-'0,]++;}for(inti=9;i>=0;i-)for(intj=0;j<x[i];j++){printf(H%d"/i);}printf("\n");21北理工的惡龍成績(jī):10Z折扣:0.8背景:最近,北理工出現(xiàn)了一只惡龍,它長(zhǎng)著很多頭,而且還會(huì)吐火,它將會(huì)把北理工燒成廢墟,于是,校長(zhǎng)下令召集全校所有勇士殺死這只惡龍。要?dú)⑺肋@只龍,必須把它所有的頭都砍掉,每個(gè)勇士只能砍ー個(gè)龍頭,龍的每個(gè)頭大小都不一樣,ー個(gè)勇士只有在身高不小于龍頭的直徑的情況下才能砍下它。而且勇士們要求,砍下ー個(gè)龍頭必須得到和自己身高厘米數(shù)一樣的學(xué)分。校長(zhǎng)想花最少的學(xué)分?jǐn)?shù)殺死惡龍,于是找到你尋求幫助。輸入:第一行龍頭數(shù)n,勇士人數(shù)m(1<=n,m<=100)接下來(lái)n行,每行包含一個(gè)整數(shù),表示龍頭的直徑接下來(lái)m行,每行包含ー個(gè)整數(shù),表示勇士的身高I輸出:如果勇士們能完成任務(wù),輸出校長(zhǎng)需要花的最小費(fèi)用:否則輸出“bitisdoomed!"#include<stdio.h>intmain()(intdragon,hero;scanf("%d%d",&dragon/&hero);intdragonhead[100]={0};intherohight[100]={0};//inputfor(inti=0;i<dragon;i++)scanf("%d"z&dragonhead[i]);for(inti=0;i<hero;i++)scanf("%d”,&herohight[i]);//makethedateinorderinttemp;for(inti=0;i<dragon;i++)(for(intj=0;j<dragon-l;j++)if(dragonhead[j]>dragonhead[j+l])temp=dragonhead[j];dragonhead[j]=dragonhead[j+l];dragonhead[j+l]=temp;}}for(inti=0;i<hero;i++)for(intj=0;j<hero-l;j++){if(herohight[j]>herohight[j+l])(temp=herohight[j];herohight[j]=herohight[j+l];herohight[j+l]=temp;)//arrangeherotokillthedragonintstart=O;for(inti=0;i<dragon;i++){for(intj=start;j<hero;j++)(if(herohight[j]>=dragonhead[i]){dragonhead[i]=0;start++;break;)else{herohight[j]=0;start++;}}if(start>hero)break;)for(inti=start;i<hero;i++)herohight[i]=0;//caculatethegradeintsd=O;intsh=O;for(inti=0;i<dragon;i++)sd=sd+dragonhead[i];for(inti=0;i<hero;i++)sh=sh+herohight[i];if(sd==O)printf("%d\n",sh);elseprintfC'bitisdoomed!\nH);}22刪除重復(fù)字符背景:輸入ー個(gè)長(zhǎng)度不超過(guò)100的字符串,刪除串中的重復(fù)字符。輸入:輸入要檢查的字符串,長(zhǎng)度不超過(guò)100個(gè)字符。例如:abacaeedabcdcdo輸出:刪除重復(fù)字符后的字符串。例如:abcedo#include<stdio.h>intmain(){charwords[1000];for(inti=0;i<1000;i++)words。卜‘#';gets(words);intcount=0;for(inti=0;i<1000;i++){if(words[i]=='\0')break;count++;)for(inti=0;i<count;i++){for(intt=i+l;t<count;t++){if(words[t]==words[i])words[t]="#';))for(inti=0;i<count;i++)if(words[i]!='#')print"%,,wordsロ]);printf("\nH);H8:五年級(jí)小學(xué)生的題目(選做)成績(jī):5/折扣:0.8那兩個(gè)小朋友在不斷進(jìn)步,他們已經(jīng)學(xué)會(huì)了負(fù)數(shù)和多位數(shù),于是他們又開始進(jìn)行游戲了。小明給出ー堆整數(shù)和運(yùn)算要求(+、ー、?、/、%),小麗要找出這些整數(shù)中的最大值和最小值,然后按照小明的要求算出最大數(shù)與最小數(shù)進(jìn)行算術(shù)運(yùn)算的結(jié)果。輸入:用逗號(hào)分隔的整數(shù)序列,及其運(yùn)算符和等號(hào)輸出:最大數(shù)op最小數(shù)=結(jié)果說(shuō)明:本題目應(yīng)該可以不使用數(shù)組就可以完成,關(guān)鍵是如何處理負(fù)數(shù)和減法。#include<stdio.h>#include<string.h>intintpow(intajntb)//aAb(intresult=l;for(inti=0;i<b;i++)result=result*a;returnresult;}structdate(intmax;intmin;charop;intr;};structdatefunction(charp[]Jntn)(structdateresult;n=n-4;intmax=-10000;intmin=10000;intcount=0;//needbackto0intx[10]={0};//needbackto0inttemp=O;//needbackto0intsign=l;//needbackto1for(inti=O;i<=n;i++)(if(p[i]==7)//meet,meansendcaculatethevalueandcomparewithmaxandmin|for(intk=0;k<count;k++)temp=temp+x[k]*intpow(10,count-l-k);temp=temp*sign;if(temp>max)max=temp;if(temp<min)min=temp;count=0;temp=0;sign=l;continue;)if(p[i]==,J){sign=-l;continue;)else{x[count]=p[i]-'0';count++;})charopp;opp=p[n+l];if(opp=='+'){result.r=max+min;result.op=,+,;}elseif(opp=='-'){result.r=max-min;result.op='-';}elseif(opp=='*'){result.r二max*min;result.op二'*';}elseif(opp=='/')(if(min==0)result.r=0;elseresult.r=max/min;result.op=7,;)elseif(opp=='%'){result.r=max%min;result.op=,%';}result.max=max;result.min=min;returnresult;}intmain()(charw[100];gets(w);intl=strlen(w);structdatecc=function(w,l);if(cc.op=='/'&&cc.min==0)printf("Error!");else(if(cc.max<0)printf(',(%d),cc.max);elseprintf(“%d”,cc.max);printf(H%c",cc.op);if(cc.min<0)printf(ヤ%d)”,cc.min);elseprintf(“%d”,cc.min);printf("=");printf(”%d”,cc.r);printf("\n");H9Z掃雷(選做)成績(jī):5/折扣:0.8冃京你玩兒過(guò)掃雷游戲吧?有個(gè)操作系統(tǒng)中帶了這個(gè)小游戲,那個(gè)系統(tǒng)叫什么來(lái)看?9在游戲中要想過(guò)關(guān),就必須要在一個(gè)NxM的區(qū)域上找出所有的地雷。游戲過(guò)程中,計(jì)算機(jī)會(huì)在地圖上顯示ー些數(shù)字從而幫助你確定哪里有地雷。例如,在下面這個(gè)有兩顆地雷的4x4的地圖(?表示地雷):*...根據(jù)上面的地圖,可以計(jì)算出應(yīng)該提供給游戲者的數(shù)字如下所示:*10022101*101110每個(gè)數(shù)字表示了該方格周圍到底有兒個(gè)地雷,當(dāng)然,ー個(gè)方格周圍最多的時(shí)候只會(huì)有八個(gè)。輸入輸入中將包括一系列的地圖,每個(gè)地圖的第一行有兩個(gè)整數(shù)n和m(0<n,m<=100),它們表示了地圖的行數(shù)和列數(shù)。下面的n行每行都有m個(gè)字符,其中表示安全而"*"表示地雷。如果地圖的n和m都為0,則表示輸入結(jié)束。輸岀針對(duì)每ー個(gè)地圖,首先輸出一行:Field#x:其中x是當(dāng)前地圖的編號(hào)(從1開始)。下面的n行則將地圖中的以數(shù)字表示,該數(shù)字表示該方格周圍有多少顆地雷。來(lái)源#include<stdio.h>voidprint(char*a,char*b,char*cjntn)(intcount=0;if(*b=='*')printf("*");else{if(*a=='*')count++;if(*(a+l)=='*1)count++;if(*(b+l)=='**)count++;if(*(c+l)=='*')count++;ifドcニニ'*')count++;printf(n%d"zcount);}for(inti二l;i<n;i++)(count=0;printf("*");else(if(*(a+i-l)ニニ‘*')count++;if(*(a+i)=='*')count++;if(*(a+i+l)=='*')count++;if(*(b+i-l)ニニ'*')count++;if(*(b+i+l)ニニ,*')count++;if(*(c+i-l)ニニ'*')count++;if(*(c+i+l)=='*')count++;if(*(c+i)=='*')count++;printf("%d,'Jcount);}}printfCAn1');}intmain()intflagn=O;intnj;charempty[110];for(inti=0;i<110;i++)empty。]二’」;chara[110Lb[110]zc[110];char*aa;aa=&a[O];char*bb;bb=&b[O];char*cc;cc=&c[O];for(inti=l;l;i++)(for(intj=0;j<110;j++)〃清空(c[j]=empty[j];b[j]=empty[j];a[j]=empty[j];)scanf("%d%d",&r/&n);chartemp;temp=getchar();if(r!=O&an!=O&&flagn==l)printf("\n");if(rニニ0&&nニニ。)break;flagn=l;if(r==l){gets(b);b[n]=7;printf("Field#%d:\n"J);print(aa,bb,cc,n);)elseprintfC'Field#%d:\n"J);gets(b);b[n]='.';for(intj=O;j<r-l;j++)gets(c);c[n]='.';print(aa,bb,cc,n);〃輸出第j行for(intk=O;k<n;k++)〃向上復(fù)制一行|a[k]=b[k];b[k]=c[k];}}for(intj=O;j<n;j++)c[j]=empty[j];print(aa,bb,cc,n);〃輸出最后一行23大數(shù)分解成績(jī):5/折扣:0.8200y級(jí)在“計(jì)算機(jī)科學(xué)導(dǎo)論”的期末考試中有一道試題。下面請(qǐng)你看看那題目應(yīng)該如何編寫。從鍵盤輸入的一個(gè)大于1的整數(shù),通過(guò)算法將該整數(shù)分解為若干因子的乘積。輸入:ー個(gè)正整數(shù)。輸出:分解后的各個(gè)因子。#include<stdio.h>intmain(){inta;scanf(n%d"z&a);for(inti=2;i<=a;i++){ if(a%i==0){printf("%d\n"/i);a=a/i;i=l;}}}24單詞排序輸入5個(gè)單詞,將它們按從大到小的順序排列后輸出。輸入:5個(gè)單詞輸出:排序后的順序#include<stdio.h>#include<string.h>intmain()(chars[5][30];intx=0;chartemp[30];for(inti=0;i<5;i++)(gets(s[i]);)for(inti=0;i<5;i++){for(intj=l;j<5;j++)(if(strcmp(s[j],s[j-l])<0){strcpy(temp,s[j]);strcpy(s[j],s[j-l]);strcpy(s[j-l],temp);}))for(inti=4;i>=0;i-)printf("%s\n",s[i]);25合并字符串成績(jī):10Z折扣:0.8輸入兩個(gè)已經(jīng)按從小到大順序排列好的字符串,編寫ー個(gè)合并兩個(gè)字符串的函數(shù),使合并后的字符串,仍然是從小到大排列。輸入:兩個(gè)已經(jīng)排好順序(升序)的兩個(gè)字符串輸出:一個(gè)合并在ー起的有序(升序)的字符串要求:設(shè)計(jì)ー個(gè)效率盡量高的算法,對(duì)每個(gè)字符串只掃描ー遍就可以了。如果采用先進(jìn)行串連接,然后再進(jìn)行排序的算法,則效率太低了。#include<stdio.h>intmain()(chara[50],b[50];gets(a);gets(b);char*pl;pl=&a[0];char*p2;p2=&b[0];for(;l;)(if(*pl=='\0')(printf("%s",p2);break;}if(*p2=='\0,)printf("%s",pl);break;)if(*pl>*p2)(printf("%c",*p2);p2++;)else(printf("%c",*pl);pl++;))printf("\n");26串的減法成績(jī):10Z折扣:0.8輸入字符串s和t(串長(zhǎng)不超過(guò)80個(gè)字符),將在字符串s中出現(xiàn),但未在字符串t中出現(xiàn)的字符組成一個(gè)新的字符串放在u中,u中字符按原字符串中字符順序排列,不去掉重復(fù)字符,輸出Uo例如:當(dāng)s="112345”,tゴ2467"時(shí),u="1135"o輸入:第一行為串s第二行為串t輸出:串u#include<stdio.h>#include<string.h>intmain()(chara[80];charb[80];gets(a);gets(b);intl=strlen(a);for(inti=0;b[i]!='\0,;i++)(for(intj=O;j<l;j++)if(a[j]==b[i])aU]='\O';}for(intk=O;k<l;k++)if(a[k]!ハ〇’)printf(”%c”,a[k]);printf("\n");H10:編碼問(wèn)題(選作)成績(jī):5/折扣:0.8設(shè)有一個(gè)整形數(shù)組AQ.N-1];存放的元素為〇?№1(1〈Nv=10)之間的整數(shù),且A[i]#A[j](i#j)〇例如,當(dāng)N=6時(shí),有:A=(4,3,0,5,1,2)〇此時(shí),數(shù)組A的編碼定義如下:A[0]編碼為0;A[i]編碼為:在A[〇],A[1],...,A[i-1]中比A[i]的值小的個(gè)數(shù)(i=1,2,...?N-1)例如上面數(shù)組A的編碼為:B=(0,0,0,3,1,2)若給出數(shù)組A,則可求出其編碼。同理,若給出數(shù)組A的編碼,可求出A中的原數(shù)據(jù)。輸入:推導(dǎo)方向(取值為1或2,如為1,則表示根據(jù)數(shù)組求數(shù)組編碼;如為2,則表示根據(jù)編碼反求數(shù)組)數(shù)組個(gè)數(shù)數(shù)組或數(shù)組編碼元素輸出:數(shù)組編碼、或數(shù)組本身(元素之間以空格分隔)#include<stdio.h>intmain()(intchoice;intn;scanf("%d%d",&choice/&n);intnum[10]={0};intresult[10]={0};for(inti=O;i<n;i++){scanf("%d,'/&num[i]);}switch(choice)(case1:〃數(shù)組求數(shù)組編碼(result[O]=O;intcount=0;for(inti=l;i<n;i++)for(intj=O;j<i;j++){if(num[j]<num[i])count++;}result[i]=count;count=0;)for(inti=O;i<n;i++)(printf(”%d”,result。]);if(i!=n-l)printf("");)printf("\n");break;)case2:〃編碼反求數(shù)組(intbase[10]={0,l/23A5/6,7/8,9};intc=0;for(inti=n-l;i>=O;i-)(for(intj=O;l;j++)(if(base[j]!=-l)C++;/ッ〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃printf("n=%di=%dj=%dc=%d\n"/n/i/j/c);for(inti=0;i<10;i++)printf("%d",base[i]);printfC'Xn");for(inti=0;i<10;i++)printf("%d,result同);printf(“ヽn");〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃ノッ//system("pause");if((c-l)==num[i])result。]二base。];base[j]=-l;c=0;break;)}for(inti=O;i<n;i++){printf("%d”,result]]);if(i!=n-l)printf("");)printf("\n");break;H11:洗牌(選作)成績(jī):5/折扣:0.8假設(shè)我們有2n張牌,它們以1,2,…,n,n+1,…,2n編號(hào)并在開始時(shí)保持著這種順序。一次洗牌就是將牌原來(lái)的次序變?yōu)閚+1,1,n+2,2,...,2n,n,也就是將原來(lái)的前n張牌放到位置2,4,...,2n,并且將余下的n張牌按照他們?cè)瓉?lái)的次序放到奇數(shù)位置1,3,…,2n-10已經(jīng)證明對(duì)于任何ー個(gè)自然數(shù)n,這2n張牌經(jīng)過(guò)一定次數(shù)的洗牌就回到原來(lái)的次序。但我們不知道對(duì)于ー個(gè)特定的n,需要兒次洗牌才能將牌洗回原來(lái)的次序。輸入:牌張數(shù)的一半n,即初始情況下ー共有2n張牌,n為int型整數(shù)輸出:將牌洗回原來(lái)的次序所需要的洗牌次數(shù)#include<stdio.h>intmain(){intn,count=l;scanf(“%d”,&n);ints=2;for(count=l;s!=l;count++){if(s<=n){s=2*s;}else{s=(s-n)*2-l;}}printf("%d\n”,count);}27殺雞用牛刀——要用遞歸啊!成績(jī):5/折扣:0.8背景:哈哈!我們終于學(xué)了遞歸了,現(xiàn)在大家一定感到非常有意思吧,那個(gè)典型的“漢諾塔”問(wèn)題,ー個(gè)非常短的程序居然可以完成如此復(fù)雜的工作,真是神奇啊!來(lái)吧,讓我們也動(dòng)手編寫ー個(gè)遞歸程序,當(dāng)然,我們要編寫的不可能太復(fù)雜。功能:求整數(shù)n到m區(qū)間的累加和,其中n〈=m。輸入:區(qū)間的起始點(diǎn)n區(qū)間的終止點(diǎn)m輸出:累加和要求:使用遞歸算法完成。如此簡(jiǎn)單的題目當(dāng)然要有隱含的測(cè)試用例啦,就3個(gè),看看誰(shuí)能猜出來(lái)。#include<stdio.h>intsum(intajntb)(intresult=0;if(b-a==l){result=a+b;}elseif(b==a){result=a;}else(result=sum(a,b-2)+sum(b-l,b);}returnresult;intmain(){inta,b;scanf("%d%dHz&az&b);printf("Thesumfrom%dto%dis%d.\n”,a,b,sum(a,b));成績(jī):5/折扣:0.8請(qǐng)使用遞歸算法計(jì)算正整數(shù)n和m的最大公約數(shù)GCD(n,m)o=m當(dāng)m<=n且nmodm=0GCD(N,M)=GCD(m,n)當(dāng)n<m時(shí)=GCD(m,nmodm)其他輸入:n和m輸出:n和m的最大公約數(shù)#include<stdio.h>intf(longajongb)(longresult;longtemp=a%b;if(temp==0)result=b;elseresult;f(b,temp);returnresult;}intmain()(longazb;scanf("%ld%ld"/&a/&b);longtemp;if(a<b)(temp=a;a=b;b=temp;)printf("%ld\n"/f(a/b));29回文字符串ーー遞歸有一種特殊形式的字符串,其正反序相同,被稱為“回文字符串"。例如LeveL就是一個(gè)回文字符串。輸入:字符串輸出:Yes或者No說(shuō)明:如輸出Yes,說(shuō)明輸入的字符串是ー個(gè)回文字符串輸出No,說(shuō)明輸入的字符串不是ー個(gè)回文字符串請(qǐng)使用遞歸算法實(shí)現(xiàn)。#include<stdio.h>intjudge(char*p,intstartjntn)(if((start==n/2)&&(*(p+start)==*(p+n-l-start)))return0;elseif(*(p+start)==*(p+n-l-start))returnjudge(p,start+l,n);elsereturn1;}intmain()(charword[50];intn=0;intstart=O;gets(word);for(inti=0;i<50;i++){if(word[i]=='\0")break;n++;)if(judge(word/start,n)==0)printf("Yes\n");elseprintf(MNo\nM);30子串反向——遞歸成績(jī):5/折扣:0.8請(qǐng)編寫ー個(gè)遞歸函數(shù)reverse(charstr[],intstart,intend),該函數(shù)的功能是將串str中下標(biāo)從start開始到end結(jié)束的字符顛倒順序。假設(shè)start和end都在合理的取值范圍。例如:執(zhí)行前:str[]="0123456";start=1;end=4執(zhí)行后:strr[]="0432156"要求在該函數(shù)中不使用新的數(shù)組,沒(méi)有循環(huán)。注意:只需要編寫遞歸函數(shù)reverse,系統(tǒng)中已經(jīng)設(shè)置好了main函數(shù)。預(yù)設(shè)代碼前置代碼/*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/#include<stdio.h>intmain(){charstr[100];intstart,end;gets(str);scanf("%d%d"/&start,&end);reverse(str,start,end);printf("%s\n",str);return0;}/*PRESETCODEEND-NEVERTOUCHCODEABOVE*/#include<string.h>voidreverse(char*p,intstart,intend)if(end+l>strlen(p))end=strlen(p)-l;chartemp;if(start==end||end-start==l){temp=*(p+start);*(p+start)=*(p+end);*(p+end)=temp;}else(temp=*(p+start);*(p+start)=*(p+end);*(p+end)=temp;reverse(p,start+1,end-1);成績(jī):5/折扣:0.8請(qǐng)使用遞歸算法求下列序列的前n項(xiàng)之和。1+1/2-1/3+1/4-1/5……輸入:n輸出:序列的前n項(xiàng)和(精確到小數(shù)點(diǎn)之后第6位)#include<stdio.h>doublef(doublea)(if(a==1.0)return1;else{inttemp=a;intflag=temp%2;if(flag==O)flag=l;elseflag=-l;return(f(a-1.0)+flag/a);)}intmain()(doublea;scanf("%lf,&a);if(a==l)printf(エバ);elseprintf(,,%.6lf\n"/f(a));H12:高精度加減法(選作)成績(jī):10/折扣:0.8RT京:計(jì)算機(jī)所能完成的一個(gè)基本功能就是完成數(shù)據(jù)的計(jì)算,譬如加法、減法等等。但是在任何ー種計(jì)算機(jī)上,計(jì)算中能夠使用的數(shù)字都是有一定范圍的,超過(guò)了范圍,就沒(méi)法得到精確的結(jié)果。你現(xiàn)在接受了一個(gè)任務(wù),要編寫??個(gè)高精度計(jì)算器的核心部分。所謂高精度計(jì)算器,就是可以計(jì)算很大很大的數(shù)據(jù)的計(jì)算器。輸入:輸入的第一行是ー個(gè)正整數(shù),表示下面有幾組數(shù)據(jù)需要計(jì)算。之后的每一行是兩個(gè)十進(jìn)制的正整數(shù)和一個(gè)運(yùn)算符,每個(gè)整數(shù)可以由最多500個(gè)數(shù)字組成。運(yùn)算符可以是加號(hào)或者減號(hào)。輸出:對(duì)應(yīng)著輸入的每一行數(shù)據(jù),輸出計(jì)算的結(jié)果,每個(gè)結(jié)果占一行。#include<stdio.h>#include<string.h>intmain()(intbasel[600Lbase2[600],end[600],n,Lx,flag;charw[1100];charopゴ」;scanf("%d\n",&n);for(inti=0;i<n;i++){for(intj=0;j<600;j++)(op二,」;basel[j]=O;base2[j]=0;end[j]=O;)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 園區(qū)道路拆除專項(xiàng)施工方案(3篇)
- 2025年河南省職教高考《語(yǔ)文》核心考點(diǎn)必刷必練試題庫(kù)(含答案)
- 2025年河北司法警官職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年江西農(nóng)業(yè)工程職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年梧州職業(yè)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025科學(xué)儀器行業(yè)市場(chǎng)機(jī)會(huì)與發(fā)展動(dòng)向
- 中班主題教學(xué)設(shè)計(jì)活動(dòng)方案五篇
- 美國(guó)技術(shù)轉(zhuǎn)讓合同
- 智慧養(yǎng)老的趨勢(shì)與應(yīng)用
- 消毒服務(wù)合同范文
- 2025年山西國(guó)際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 青海省海北藏族自治州(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版隨堂測(cè)試(上學(xué)期)試卷及答案
- 外研版(三起)小學(xué)英語(yǔ)三年級(jí)下冊(cè)Unit 1 Animal friends Get ready start up 課件
- 江蘇省無(wú)錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測(cè)試語(yǔ)文試題(解析版)
- 銅礦隱蔽致災(zāi)普查治理工作計(jì)劃
- 《民航安全檢查(安檢技能實(shí)操)》課件-第一章 民航安全檢查員職業(yè)道德
- DB34T4826-2024畜禽養(yǎng)殖業(yè)污染防治技術(shù)規(guī)范
- 腰麻課件教學(xué)課件
- 石油化工企業(yè)環(huán)境保護(hù)管理制度預(yù)案
- 2024年甘肅省高考?xì)v史試卷(含答案解析)
- 2024年山東省煙臺(tái)市初中學(xué)業(yè)水平考試地理試卷含答案
評(píng)論
0/150
提交評(píng)論