2015年藍(lán)橋杯C組試題及答案講解1_第1頁
2015年藍(lán)橋杯C組試題及答案講解1_第2頁
2015年藍(lán)橋杯C組試題及答案講解1_第3頁
2015年藍(lán)橋杯C組試題及答案講解1_第4頁
2015年藍(lán)橋杯C組試題及答案講解1_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2014年藍(lán)橋杯c語言試題及答案發(fā)布時(shí)間:2015-04-09.標(biāo)題:馬虎的算式小明是個(gè)急性子,上小學(xué)的時(shí)候經(jīng)常把老師寫在黑板上的題目抄錯(cuò)了。有一次,老師出的題目是:36x495=?他卻給抄成了:396x45=?但結(jié)果卻很戲劇性,他的答案竟然是對的!!因?yàn)?6*495=396*45=17820類似這樣的巧合情況可能還有很多,比如:27*594=297*54假設(shè)abcde代表「9不同的5個(gè)數(shù)字(注意是各不相同的數(shù)字,且不含0)能滿足形如:ab*cde=adb*ce這樣的算式一共有多少種呢?請你利用計(jì)算機(jī)的優(yōu)勢尋找所有的可能,并回答不同算式的種類數(shù)。滿足乘法交換律的算式計(jì)為不同的種類,所以答案肯定是個(gè)偶數(shù)。答案直接通過瀏覽器提交。注意:只提交一個(gè)表示最終統(tǒng)計(jì)種類數(shù)的數(shù)字,不要提交解答過程或其它多余的內(nèi)容。答案:142.標(biāo)題:振興中華小明參加了學(xué)校的趣味運(yùn)動(dòng)會(huì),其中的一個(gè)項(xiàng)目是:跳格子。地上畫著一些格子,每個(gè)格子里寫一個(gè)字,如下所示:(也可參見pl.jpg)從我做起振我做起振興做起振興中起振興中華比賽時(shí),先站在左上角的寫著“從”字的格子里,可以橫向或縱向跳到相鄰的格子里,但不能跳到對角的格子或其它位置。一直要跳到“華”字結(jié)束。要求跳過的路線剛好構(gòu)成“從我做起振興中華”這句話。請你幫助小明算一算他一共有多少種可能的跳躍路線呢?答案是一個(gè)整數(shù),請通過瀏覽器直接提交該數(shù)字。答案:35.題目標(biāo)題:猜年齡美國數(shù)學(xué)家維納(N.Wiener)智力早熟,11歲就上了大學(xué)。他曾在1935~1936年應(yīng)邀來中國清華大學(xué)講學(xué)。一次,他參加某個(gè)重要會(huì)議,年輕的臉孔引人注目。于是有人詢問他的年齡,他回答說:“我年齡的立方是個(gè)4位數(shù)。我年齡的4次方是個(gè)6位數(shù)。這10個(gè)數(shù)字正好包含了從0到9這10個(gè)數(shù)字,每個(gè)都恰好出現(xiàn)1次。”請你推算一下,他當(dāng)時(shí)到底有多年輕。通過瀏覽器,直接提交他那時(shí)的年齡數(shù)字。注意:不要提交解答過程,或其它的說明文字。答案:18.標(biāo)題:幻方填空幻方是把一些數(shù)字填寫在方陣中,使得行、歹h兩條對角線的數(shù)字之和都相等。歐洲最著名的幻方是德國數(shù)學(xué)家、畫家迪勒創(chuàng)作的版畫《憂郁》中給出的一個(gè)4階幻方。他把1,2,3,...16這16個(gè)數(shù)字填寫在4x4的方格中。如圖pLjpg所示,即:16??13??11?9??*?15?1表中有些數(shù)字已經(jīng)顯露出來,還有些用?和*代替。請你計(jì)算出?和*所代表的數(shù)字。并把*所代表的數(shù)字作為本題答案提交。答案是一個(gè)整數(shù),請通過瀏覽器直接提交該數(shù)字。答案:12.題目標(biāo)題:公約數(shù)公倍數(shù)我們經(jīng)常會(huì)用到求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)的功能。下面的程序給出了一種算法。函數(shù)myfunc接受兩個(gè)正整數(shù)a,b經(jīng)過運(yùn)算后打印出它們的最大公約數(shù)和最小公倍數(shù)。此時(shí),調(diào)用myfunc(15,20)將會(huì)輸出:360//交換數(shù)值voidswap(int*a,int*b)(inttemp;temp=*a;*a=*b;*b=temp;)voidmyfunc(inta,intb)(intm,n,r;if(am=a;n=b;r=a%b;while(r!=0)(a=b;b=r;r=a%b;)printf(〃%d\n〃,b);〃最大公約數(shù)printf(繼d\n〃,);//最小公倍數(shù))請分析代碼邏輯,并推測劃線處的代碼,通過網(wǎng)頁提交。答案:m*n/b.標(biāo)題:三部排序一般的排序有許多經(jīng)典算法,如快速排序、希爾排序等。但實(shí)際應(yīng)用時(shí),經(jīng)常會(huì)或多或少有一些特殊的要求。我們沒必要套用那些經(jīng)典算法,可以根據(jù)實(shí)際情況建立更好的解法。比如,對一個(gè)整型數(shù)組中的數(shù)字進(jìn)行分類排序:使得負(fù)數(shù)都靠左端,正數(shù)都靠右端,。在中部。注意問題的特點(diǎn)是:負(fù)數(shù)區(qū)域和正數(shù)區(qū)域內(nèi)并不要求有序??梢岳眠@個(gè)特點(diǎn)通過1次線性掃描就結(jié)束戰(zhàn)斗!!以下的程序?qū)崿F(xiàn)了該目標(biāo)。其中x指向待排序的整型數(shù)組,len是數(shù)組的長度。voidsort3P(int*x,intlen)(intp=0;intleft=0;intright=len-l;while(p<=right){if(x[p]<0){intt=x[left];x[left]=x[p];x[p]=t;left++;P++;)elseif(x[p]>0){intt=xEright];x[right]=x[p];x[p]=t;right―;)else{;〃填空位置)))如果給定數(shù)組:25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0則排序后為:-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25請分析代碼邏輯,并推測劃線處的代碼,通過網(wǎng)頁提交答案:p++7.標(biāo)題:核桃的數(shù)量小張是軟件項(xiàng)目經(jīng)理,他帶領(lǐng)3個(gè)開發(fā)組。工期緊,今天都在加班呢。為鼓舞士氣,小張打算給每個(gè)組發(fā)一袋核桃(據(jù)傳言能補(bǔ)腦)。他的要求是:.各組的核桃數(shù)量必須相同.各組內(nèi)必須能平分核桃(當(dāng)然是不能打碎的).盡量提供滿足1,2條件的最小數(shù)量(節(jié)約鬧革命嘛)程序從標(biāo)準(zhǔn)輸入讀入:abca,b,c都是正整數(shù),表示每個(gè)組正在加班的人數(shù),用空格分開(a,b,c<30)程序輸出:一個(gè)正整數(shù),表示每袋核桃的數(shù)量。例如:用戶輸入:245程序輸出:20再例如:用戶輸入:311程序輸出:38includevoidswap(int*a,int*b)(inttemp;temp=*a;*a二*b;*b=temp;)intf(inta,intb)(intm,n,r;if(am=a,n=b,r=a%b;while(r!=0)(a=b;b=r;r=a%b;)returnm*n/b;}

intmain()inta,b,c;scanf(飛d%d%d”,&a,&b,&c);printf(〃/d〃,f(f(a,b),f(b,c)));return0;)8.題目標(biāo)題:打印十字圖小明為某機(jī)構(gòu)設(shè)計(jì)了一個(gè)十字型的徽標(biāo)(并非紅十字會(huì)啊),如下所示(可參見pl.jpg)QC①Q(mào)C0QC①①Q(mào)$$CC000CC0CC0c0c4066660660660606$$$0QCOOOO0QC0$$$$$$$$$$$$$$$$$$C000000Se00c0660S040cbecSe00c0660C000000$$$$0QCOOOO0QC0$$$CC0c0c00CC0c0CC$$QC0QC①Q(mào)C0QC①Q(mào)對方同時(shí)也需要在電腦dos窗口中以字符的形式輸出該標(biāo)志,并能任意控制層數(shù)。為了能準(zhǔn)確比對空白的數(shù)量,程序要求對行中的空白以句點(diǎn)(.)代替。輸入格式:一個(gè)正整數(shù)n(n<30)表示要求打印圖形的層數(shù)輸出:對應(yīng)包圍層數(shù)的該標(biāo)志。例如:用戶輸入:1程序應(yīng)該輸出:00c①Q(mào)???0C0C000$.??$???$S0C40c0$.??$???$

0C0C000??$???$..①Q(mào)C00再例如:用戶輸入:3程序應(yīng)該輸出:①Q(mào)C0cbe0cbe0cbe①CC0C0CC6CQ0c0CC$.??$.??$$.??$S0e①040cbe0①0eTOC\o"1-5"\h\zS0e00c?"???。???。????+>?。S0C000C00①e.4>.6.6寸。.6.。S0c000c.4>.。???寸???。S0c0c0cc0①e.4>.“?。?寸.。S0c000c.4>.。???寸???。S0C000C00①e.4>.6.6寸。.6.。S0e00c.“???。???。????+>?。S0e①040cbe0①0e$???$$???$CC0C0CC6CQ0c0CC..$$..①Q(mào)C0cbe0cbe0cbe①請仔細(xì)觀察樣例,尤其要注意句點(diǎn)的數(shù)量和輸出位置。^includevoidswap(int*a,int*b)(inttemp;temp=*a;*a=*b;*b=temp;)intgo(inti,intj,intn)(if(i>n*2+3)i=n*4+6-i;if(j>n*2+3)j=n*4+6-j;if(i<j)swap(&i,&j);if(i<=2&&j<=2)return0;if(i%2==1&&j>=i-2)return1;if(j%2==1&&j!=i-1)return1;return0;}intmain()(intn;scanf(“/d",&n);inti,j;for(i=1;i<=n*4+5;i++)(for(j=1;j<=n*4+5;j++)(if(go(i,j,n))printf(〃$〃);elseprintff.");)printfCW);)return0;)9.標(biāo)題:帶分?jǐn)?shù)100可以表示為帶分?jǐn)?shù)的形式:100=3+69258/714還可以表示為:100=82+3546/197注意特征:帶分?jǐn)?shù)中,數(shù)字廣9分別出現(xiàn)且只出現(xiàn)一次(不包含0)。類似這樣的帶分?jǐn)?shù),100有11種表示法。題目要求:從標(biāo)準(zhǔn)輸入讀入一個(gè)正整數(shù)N(N<1000*1000)程序輸出該數(shù)字用數(shù)碼「9不重復(fù)不遺漏地組成帶分?jǐn)?shù)表示的全部種數(shù)。注意:不要求輸出每個(gè)表示,只統(tǒng)計(jì)有多少表示法!例如:用戶輸入:100程序輸出:11再例如:用戶輸入:105程序輸出:68include#defineN9intnum[N]={1,2,3,4,5,6,7,8,9};inttag[3][3]={{4,3,2},{5,3,1},{6,2,1}};voidswap(int*a,int*b)

mttemp;temp=*a;*a二*b;*b=temp;)intgo(inti,intn)(inta,b,c;intcount=0;for(a=0;a<3;a++)(intr[3]={0},d=0;for(b=0;b<3;b++)for(c=0;c<tag[a][b];c++)r[b]=r[b]*10+num[d++];%r[2]==0)count++;%r[l]==0)count++;%r[2]==0)count++;%r[0]%r[2]==0)count++;%r[l]==0)count++;%r[2]==0)count++;%r[0]==0)count++;%r[l]==0)count++;%r[0]==0)count++:TJTJTJTJTJTJ120201rLrLrLrLrLrLr&&n--一一r&&n--一一r&&n--一一uu12rLrL2rLr+orLr+r&&n--一一uorLr&&n--一一u1XrLrr&&n--一一uorL2rLr+orLr+TJTJTJTJTJTJ001122rLrLrLrLrLrLrrrrrrz(\z<\z<\z<\z<\/(\ffffff?1?1?1?1?1?1}while(i<N)(intk=i+1;while(k<N)(swap(num+i,num+k);count+=go(i+1,n);swap(num+i,num+k);k++;)i++;)returncount;)intmain()(intn;scanf(“/d〃,&n);printfgo(0,n));return0;}10.標(biāo)題:剪格子如圖pl.jpg所示,3X3的格子中填寫了一些整數(shù)。我們沿著圖中的紅色線剪開,得到兩個(gè)部分,每個(gè)部分的數(shù)字和都是60o本題的要求就是請你編程判定:對給定的mxn的格子中的整數(shù),是否可以分割為兩個(gè)部分,使得這兩個(gè)區(qū)域的數(shù)字和相等。如果存在多種解答,請輸出包含左上角格子的那個(gè)區(qū)域包含的格子的最小數(shù)目。如果無法分割,則輸出0程序輸入輸出格式要求:程序先讀入兩個(gè)整數(shù)mn用空格分割(m,n<10)表示表格的寬度和高度接下來是n行,每行m個(gè)正整數(shù),用空格分開。每個(gè)整數(shù)不大于10000程序輸出:在所有解中,包含左上角的分割區(qū)可能包含的最小的格子數(shù)目。例如:用戶輸入:331015220301123則程序輸出:3再例如:用戶輸入:431111130802111100則程序輸出:108include#defineN10intnum[N][N];inttag[N][N]={0};intm,n;intr=100;intfind(inti,intj,intt,intntag[][N])(intcount=0;if(i<0||i>=n||j<0||j>=m||ntag[i][j]==1)return0;ntag[i][j]=1;if(tag[i][j]!=t)return0;count++;count十=find(i-1,j,t,ntag);count十=find(i+1,j,t,ntag);count十=find(i,j-1,t,ntag);count十=find(i,j+1,t,ntag);returncount;)intisbad()(inti,j,k=0;intt=tag[0][0];intntagl[N][N]={0};intntag2[N][N]={0};intgel=find(0,0,t,ntagl);for(i=0;i<n;i++)(for(j=0;j<m;j++)(if(tag[il[j]!=t)(k=1;break;))if(k==1)break;)if(i==n&&j==m)return0;intge2=find(i,j,tag[i][j],ntag2);returngel+ge2!=m*n;)intbad(inti,intj)(tag[i][j]==1)if(i<0||i>=n||j<0||j>=mtag[i][j]==1)return1;tag[i][j]=1;intb=isbad();tag[i][j]=0;returnb;)voidgo(inti,intj,intk,intcount)if(bad(i,j)|count<num[i][j])return;k++;if(count==num[i][j])(if(r>k)r=k;)tag[i][j]二1;count-=i[j];go(i-1,3,k,count);go(i+1,3,k,count);go(i,j-1,k,count);go(i,j+1,k,count);tag[i][j]=o;)intmain()(scanf(飛d%d”,&m,&n);inti,j;inthalf=0;for(i=0;i<n;i++)for(j=0;j<m;j++)(scanf(飛d”,&num[i][j]);half+=num[i][j];)if(half%2==0&&half>=num[0][0]*2)(half/=2;go(0,0,0,half);)if(r==100)r=0;printf(z,%d,z,r);return0;)隔行變色Excel表的格子很多,為了避免把某行的數(shù)據(jù)和相鄰行混淆,可以采用隔行變色的樣式。小明設(shè)計(jì)的樣式為:第1行藍(lán)色,第2行白色,第3行藍(lán)色,第4行白色,....現(xiàn)在小明想知道,從第21行到第50行一共包含了多少個(gè)藍(lán)色的行。請你直接提交這個(gè)整數(shù),千萬不要填寫任何多余的內(nèi)容。立方尾不變有些數(shù)字的立方的末尾正好是該數(shù)字本身。比如:1,4,5,6,9,24,25,....請你計(jì)算一下,在10000以內(nèi)的數(shù)字中(指該數(shù)字,并非它立方后的數(shù)值),符合這個(gè)特征的正整數(shù)一共有多少個(gè)。請?zhí)峤辉撜麛?shù),不要填寫任何多余的內(nèi)容。三羊獻(xiàn)瑞觀察下面的加法算式:祥瑞生輝+三羊獻(xiàn)瑞三羊生瑞氣(如果有對齊問題,可以參看【圖1.jpg】)其中,相同的漢字代表相同的數(shù)字,不同的漢字代表不同的數(shù)字。請你填寫“三羊獻(xiàn)瑞”所代表的4位數(shù)字(答案唯一),不要填寫任何多余內(nèi)容。格子中輸出StringlnGrid函數(shù)會(huì)在一個(gè)指定大小的格子中打印指定的字符串。要求字符串在水平、垂直兩個(gè)方向上都居中。如果字符串太長,就截?cái)唷H绻荒芮『镁又?,可以稍稍偏左或者偏上一點(diǎn)。下面的程序?qū)崿F(xiàn)這個(gè)邏輯,請?zhí)顚憚澗€部分缺少的代碼。#include<stdio.h>ttinclude<string.h>voidStringlnGrid(intwidth,intheight,constchar*s)(inti,k;charbuf[1000];strcpy(buf,s);if(strlen(s)>width_2)buf[width-2]=0;printf("+〃);for(i=0;i<width-2;i++)printf(〃-〃);printf("+\n〃);for(k=l;k<(height-1)/2;k++){printf;for(i=0;i<width-2;i++)printfC");printf(〃|\n〃);}printf;printf;/填空printf(〃|\n〃);for(k=(height_1)/2+1;k<height-l;k++){printf;for(i=0;i<width-2;i++)printfC");printf(〃|\n〃);}printf("+〃);for(i=0;i<width-2;i++)printf(〃-〃);printf("+\n〃);)intmain()(StringlnGrid(20,6,〃abcdl234〃);return0;)對于題目中數(shù)據(jù),應(yīng)該輸出:TOC\o"1-5"\h\z++IIIabcdl234++(如果出現(xiàn)對齊問題,參看【圖l.jpg】)注意:只填寫缺少的內(nèi)容,不要書寫任何題面已有代碼或說明性文字。串逐位和給定一個(gè)由數(shù)字組成的字符串,我們希望得到它的各個(gè)數(shù)位的和。比如:“368”的諸位和是:1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論