第三屆藍(lán)橋杯C語(yǔ)言本科組復(fù)賽題及解析_第1頁(yè)
第三屆藍(lán)橋杯C語(yǔ)言本科組復(fù)賽題及解析_第2頁(yè)
第三屆藍(lán)橋杯C語(yǔ)言本科組復(fù)賽題及解析_第3頁(yè)
第三屆藍(lán)橋杯C語(yǔ)言本科組復(fù)賽題及解析_第4頁(yè)
第三屆藍(lán)橋杯C語(yǔ)言本科組復(fù)賽題及解析_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1:假設(shè)有兩種微生物X和YX出生后每隔3分鐘分裂一次(數(shù)目加倍),Y出生后每隔2分鐘分裂一次(數(shù)目加倍)。一個(gè)新出生的X,半分鐘之后吃掉1個(gè)Y,并且,從此開(kāi)始,每隔1分鐘吃1個(gè)Y。現(xiàn)在已知有新出生的X=10,Y=89,求60分鐘后Y的數(shù)目。如果X=10,Y=90呢?本題的要求就是寫(xiě)出這兩種初始條件下,60分鐘后Y的數(shù)目。題目的結(jié)果令你震驚嗎?這不是簡(jiǎn)單的數(shù)字游戲!真實(shí)的生物圈有著同樣脆弱的性質(zhì)!也許因?yàn)槟阆麥绲哪侵籝就是最終導(dǎo)致Y種群滅絕的最后一根稻草!//Muse牧馬指證這道題的答案是錯(cuò)的并給出了代碼。我理解錯(cuò)了題意,誤以為是“兔子繁殖”了。。。。//代碼:#include<cstdio>intmain(){longintX=10,Y=90;for(intk=1;k<=120;k++)//半分鐘一個(gè)單位{if(k%2==1)Y-=X;//因?yàn)閄出生半分鐘后就要吃Y,爾后每1分鐘要吃Y,所以永遠(yuǎn)都是奇數(shù)個(gè)半分鐘的時(shí)候吃Y,又因?yàn)榇藭r(shí)X不會(huì)增長(zhǎng)(題目為了減小討論的復(fù)雜度),所以直接減X數(shù)量即可。if(k%4==0)Y*=2;//每2分鐘翻倍if(k%6==0)X*=2;//每3分鐘翻倍,X和Y的翻倍是相互獨(dú)立的,不需要另作討論。}printf(,Y);return0;}2:ABCDE*?=EDCBA“ABCDE代表不同的數(shù)字,問(wèn)號(hào)也代表某個(gè)數(shù)字!21978//5層循環(huán)就OK了3:有一群海盜(不多于20人),在船上比拼酒量。過(guò)程如下:打開(kāi)一瓶酒,所有在場(chǎng)的人平分喝下,有幾個(gè)人倒下了。再打開(kāi)一瓶酒平分,又有倒下的,再次重復(fù) 直到開(kāi)了第4瓶酒,坐著的已經(jīng)所剩無(wú)幾,海盜船長(zhǎng)也在其中。當(dāng)?shù)?瓶酒平分喝下后,大家都倒下了。等船長(zhǎng)醒來(lái),發(fā)現(xiàn)海盜船擱淺了。他在航海日志中寫(xiě)到:“ 昨天,我正好喝了一瓶 奉勸大家,開(kāi)船不喝酒,喝酒別開(kāi)船 ”請(qǐng)你根據(jù)這些信息,推斷開(kāi)始有多少人,每一輪喝下來(lái)還剩多少人。如果有多個(gè)可能的答案,請(qǐng)列出所有答案,每個(gè)答案占一行。格式是:人數(shù),人數(shù),...例如,有一種可能是:20,5,4,2,0//松鼠123告訴我這道題的答案要嚴(yán)格遞減的,所以我刪掉了不符合要求的組合。205420189320151032012642//先求處4個(gè)數(shù)【遞減的,4層循環(huán)就OK】的最小公倍數(shù),然后求倒數(shù)和是否為14:某電視臺(tái)舉辦了低碳生活大獎(jiǎng)賽。題目的計(jì)分規(guī)則相當(dāng)奇怪:每位選手需要回答10個(gè)問(wèn)題(其編號(hào)為1到10),越后面越有難度。答對(duì)的,當(dāng)前分?jǐn)?shù)翻倍;答錯(cuò)了則扣掉與題號(hào)相同的分?jǐn)?shù)(選手必須回答問(wèn)題,不回答按錯(cuò)誤處理)。每位選手都有一個(gè)起步的分?jǐn)?shù)為10分。某獲勝選手最終得分剛好是100分,如果不讓你看比賽過(guò)程,你能推斷出他(她)哪個(gè)題目答對(duì)了,哪個(gè)題目答錯(cuò)了嗎?如果把答對(duì)的記為1,答錯(cuò)的記為0,則10個(gè)題目的回答情況可以用僅含有1和0的串來(lái)表示。例如:0010110011就是可能的情況。你的任務(wù)是算出所有可能情況。每個(gè)答案占一行。101101000001110100000010110011//贏或不贏,只有10道題,遞歸去吧。5:順時(shí)針轉(zhuǎn)置矩陣sizeof(int)*rank*rankrank-1-i/rank+rank*(i%rank)//經(jīng)神@雕指正。我寫(xiě)的4而不是rank。應(yīng)該是rank才對(duì)。voidrotate(int*x,intrank){int*y=(int*)malloc( );//填空f(shuō)or(inti=0;i<rank*rank;i++){y[ ]=x[i];//填空}for(i=0;i<rank*rank;i++){x[i]=y[i];}free(y);}intmain(intargc,char*argv[]){intx[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};intrank=4;rotate(&x[0][0],rank);for(inti=0;i<rank;i++){for(intj=0;j<rank;j++){printf(,x[i][j]);}printf();}return0;}6:大數(shù)乘法n3/base+n2/base+n4%baser[2]/basevoidbigmul(intx,inty,intr[]){intbase=10000;intx2=x/baseintx1=x%baseinty2=y/baseinty1=y%baseintn1=x1*y1;intn2=x1*y2;intn3=x2*y1;intn4=x2*y2;r[3]=n1%base;r[2]=n1/base+n2%base+n3%base;r[1]= ;//填空r[0]=n4/base;r[1]+= ;//填空r[2]=r[2]%base;r[0]+=r[1]/base;r[1]=r[1]%base;}intmain(intargc,char*argv[]){intx[]={0,0,0,0};bigmul(87654321,12345678,x);printf( ,x[0],x[1],x[2],x[3]);return0;}7:6*6棋盤(pán)放棋子,使每行每列都是3個(gè)(0未放1放了)NumRow!=3||NumCol!=3f(x,r,c+1)x[r][c]==1intN=0;boolCheckStoneNum(intx[][6])for(intk=0;k<6;k++)intNumRow=0;intNumCol=0;for(inti=0;i<6;i++)if(x[k][i])NumRow++;if(x[i][k])NumCol++;if( )returnfalse;//填空returntrue;}intGetRowStoneNum(intx[][6],intr){intsum=0;for(inti=0;i<6;i++)if(x[r][i])sum++;}returnsum;intGetColStoneNum(intx[][6],intc)intsum=0;for(inti=0;i<6;i++)if(x[i][c])sum++;}returnsum;voidshow(intx[][6])for(inti=0;i<6;i++)for(intj=0;j<6;j++)printf(,x[i][j]);printf();printf();voidf(intx[][6],intr,intc);voidGoNext(intx[][6],intr,intc)if(c<6) ; //填空elsef(x,r+1,0);voidf(intx[][6],intr,intc)if(r==6)if(CheckStoneNum(x))N++;}show(x);return;if( )//已經(jīng)放有了棋子GoNext(x,r,c);return;intrr=GetRowStoneNum(x,r);intcc=GetColStoneNum(x,c);if(cc>=3)//本列已滿GoNext(x,r,c);elseif(rr>=3)//本行已滿f(x,r+1,0);elsex[r][c]=1;GoNext(x,r,c);x[r][c]=0;if(!(3-rr>=6-c||3-cc>=6-r))//本行或本列嚴(yán)重缺子,則本格不能空著!GoNext(x,r,c);i{ntmain(intargc,char*argv[])intx[6][6]={{1,0,0,0,0,0},{0,0,1,0,1,0},{0,0,1,1,0,1},{0,1,0,0,1,0},{0,0,0,1,0,0},{1,0,1,0,0,1}f(x,0,0);printf(,N);return0;8:這個(gè)程序的任務(wù)就是把一串拼音字母轉(zhuǎn)換為6位數(shù)字(密碼)。我們可以使用任何好記的拼音串(比如名字,王喜明,就寫(xiě):wangximing)作為輸入,程序輸出6位數(shù)字。變換的過(guò)程如下:第一步.把字符串6個(gè)一組折疊起來(lái),比如wangximing則變?yōu)椋簑angximing第二步.把所有垂直在同一個(gè)位置的字符的ascii碼值相加,得出6個(gè)數(shù)字,如上面的例子,則得出:228202220206120105第三步.再把每個(gè)數(shù)字“縮位”處理:就是把每個(gè)位的數(shù)字相加,得出的數(shù)字如果不是一位數(shù)字,就再縮位,直到變成一位數(shù)字為止。例如:228=>2+2+8=12=>1+2=3上面的數(shù)字縮位后變?yōu)椋?44836,這就是程序最終的輸出結(jié)果!要求程序從標(biāo)準(zhǔn)輸入接收數(shù)據(jù),在標(biāo)準(zhǔn)輸出上輸出結(jié)果。輸入格式為:第一行是一個(gè)整數(shù)n(<100),表示下邊有多少輸入行,接下來(lái)是n行字符串,就是等待變換的字符串。輸出格式為:n行變換后的6位密碼。#include<stdio.h>#include<string.h>#include<stdlib.h>intstr[6],istr;intres[102][6],ires;v{oidgetstr()//readstrfromstdincharch;while((ch=getchar())!='口')str[istr%6]+=ch;istr++;voidcal()//calculatetheresultinti,t;for(i=0;i<6;i++)while(str[i]>9)t=str[i];str[i]=0;while(t)str[i]+=t%10;t/=10;voidsave()//puttheresultintoresarrayinti;for(i=0;i<6;i++)res[ires][i]=str[i];ires++;v{oidmain()intn,i,j;scanf(,&n);getchar();while(n--){memset(str,0,sizeof(str));istr=0;getstr();cal();save();}for(i=0;i<ires;i++)//printtheresarraytostdout{for(j=0;j<6;j++)printf(,res[i][j]);printf();}}9:足球比賽具有一定程度的偶然性,弱隊(duì)也有戰(zhàn)勝?gòu)?qiáng)隊(duì)的可能。假設(shè)有甲、乙、丙、丁四個(gè)球隊(duì)。根據(jù)他們過(guò)去比賽的成績(jī),得出每個(gè)隊(duì)與另一個(gè)隊(duì)對(duì)陣時(shí)取勝的概率表:甲乙丙丁甲-0.10.30.5乙0.9-0.70.4丙0.70.3-0.2丁0.50.60.8-數(shù)據(jù)含義:甲對(duì)乙的取勝概率為0.1,丙對(duì)乙的勝率為0.3,...現(xiàn)在要舉行一次錦標(biāo)賽。雙方抽簽,分兩個(gè)組比,獲勝的兩個(gè)隊(duì)再爭(zhēng)奪冠軍。(參見(jiàn)【1.jpg】)請(qǐng)你進(jìn)行10萬(wàn)次模擬,計(jì)算出甲隊(duì)奪冠的概率?!菊_思路請(qǐng)看Muse牧馬的評(píng)論】思路:p=1-甲輸?shù)母怕始纵數(shù)脑?,有兩種情況:1:甲在第一輪中就輸了2:甲在晉級(jí)后,決賽中輸了假設(shè)甲先和X對(duì)決,則另兩組是Y和Z對(duì)決其中Y和Z對(duì)決有兩種情況發(fā)生:要么Y贏,要么Z贏所以綜合上述討論,可以算出甲輸?shù)母怕适牵篜(X,甲)+P(甲,X)*P(Y,Z)*P(Y,甲)+P(甲,X)*P(Z,Y)*P(Z,甲)即甲贏的概率是1減去上訴結(jié)果。10萬(wàn)數(shù)據(jù)模擬可以得到甲贏的概率大約0.076。驗(yàn)算:甲換成乙丙丁后分別算出四個(gè)數(shù)據(jù),相加為1.010:今盒子里有n個(gè)小球,A、B兩人輪流從盒中取球,每個(gè)人都可以看到另一個(gè)人取了多少個(gè),也可以看到盒中還剩下多少個(gè),并且兩人都很聰明,不會(huì)做出錯(cuò)誤的判斷。我們約定:每個(gè)人從盒子中取出的球的數(shù)目必須是:1,3,7或者8個(gè)。輪到某一方取球時(shí)不能棄權(quán)!A先取球,然后雙方交替取球,直到取完。被迫拿到最后一個(gè)球的一方為負(fù)方(輸方)請(qǐng)編程確定出在雙方都不判斷失誤的情況下,對(duì)于特定的初始球數(shù),A是否能贏?程序運(yùn)行時(shí),從標(biāo)準(zhǔn)輸入獲得數(shù)據(jù),其格式如下:先是一個(gè)整數(shù)n(n<100),表示接下來(lái)有n個(gè)整數(shù)。然后是n個(gè)整數(shù),每個(gè)占一行(整數(shù)<10000),表示初始球數(shù)。程序則輸出n行,表示A的輸贏情況(輸為0,贏為1)?!疚野?0001寫(xiě)成了101,所以。。。又悲劇了】#13樓2012-04-0812:34|Muse牧馬#include<stdio.h>#include<string.h>inta[10001];intb

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論