校園

當前位置 /首頁/範文/校園/列表

2014年藍橋杯c語言試題及答案

  1. 標題: 馬虎的算式

2014年藍橋杯c語言試題及答案

小明是個急性子,上國小的時候經常把老師寫在黑板上的題目抄錯了。

有一次,老師出的題目是:36 x 495 = ?

他卻給抄成了:396 x 45 = ?

但結果卻很戲劇性,他的答案竟然是對的!!

因為 36 * 495 = 396 * 45 = 17820

類似這樣的巧合情況可能還有很多,比如:27 * 594 = 297 * 54

假設 a b c d e 代表1~9不同的5個數字(注意是各不相同的數字,且不含0)

能滿足形如: ab * cde = adb * ce 這樣的算式一共有多少種呢?

請你利用計算機的優勢尋找所有的可能,並回答不同算式的種類數。

滿足乘法交換律的算式計為不同的種類,所以答案肯定是個偶數。

答案直接通過瀏覽器提交。

注意:只提交一個表示最終統計種類數的數字,不要提交解答過程或其它多餘的內容。

答案:142

  2. 標題: 振興中華

小明參加了學校的趣味運動會,其中的一個專案是:跳格子。

地上畫著一些格子,每個格子裡寫一個字,如下所示:(也可參見p1.jpg)

從我做起振

我做起振興

做起振興中

起振興中華

比賽時,先站在左上角的寫著“從”字的格子裡,可以橫向或縱向跳到相鄰的格子裡,但不能跳到對角的格子或其它位置。一直要跳到“華”字結束。

要求跳過的路線剛好構成“從我做起振興中華”這句話。

請你幫助小明算一算他一共有多少種可能的跳躍路線呢?

答案是一個整數,請通過瀏覽器直接提交該數字。

答案:35

  3. 題目標題: 猜年齡

美國數學家維納(er)智力早熟,11歲就上了大學。他曾在1935~1936年應邀來中國清華大學講學。

一次,他參加某個重要會議,年輕的臉孔引人注目。於是有人詢問他的年齡,他回答說:

“我年齡的立方是個4位數。我年齡的4次方是個6位數。這10個數字正好包含了從0到9這10個數字,每個都恰好出現1次。”

請你推算一下,他當時到底有多年輕。

通過瀏覽器,直接提交他那時的年齡數字。

注意:不要提交解答過程,或其它的說明文字。

答案:18

  4. 標題: 幻方填空

幻方是把一些數字填寫在方陣中,使得行、列、兩條對角線的數字之和都相等。

歐洲最著名的幻方是德國數學家、畫家迪勒創作的版畫《憂鬱》中給出的一個4階幻方。

他把1,2,3,...16 這16個數字填寫在4 x 4的方格中。

如圖p1.jpg所示,即:

16 ? ? 13

? ? 11 ?

9 ? ? *

? 15 ? 1

表中有些數字已經顯露出來,還有些用?和*代替。

請你計算出? 和 * 所代表的數字。並把 * 所代表的數字作為本題答案提交。

答案是一個整數,請通過瀏覽器直接提交該數字。

答案:12

  5. 題目標題:公約數公倍數

我們經常會用到求兩個整數的最大公約數和最小公倍數的功能。

下面的程式給出了一種演算法。

函式 myfunc 接受兩個正整數a,b

經過運算後打印出 它們的最大公約數和最小公倍數。

此時,呼叫 myfunc(15,20)

將會輸出:

3

60

// 交換數值

void swap(int *a,int *b)

{

int temp;

temp=*a;

*a=*b;

*b=temp;

}

void myfunc(int a, int b)

{

int m,n,r;

if(a

m=a;n=b;r=a%b;

while(r!=0)

{

a=b;b=r;

r=a%b;

}

printf("%dn",b); // 最大公約數

printf("%dn", ____________________________________); // 最小公倍數

}

請分析程式碼邏輯,並推測劃線處的程式碼,通過網頁提交。

答案: m*n/b

  6.標題:三部排序

一般的排序有許多經典演算法,如快速排序、希爾排序等。

但實際應用時,經常會或多或少有一些特殊的要求。我們沒必要套用那些經典演算法,可以根據實際情況建立更好的解法。

比如,對一個整型陣列中的數字進行分類排序:

使得負數都靠左端,正數都靠右端,0在中部。注意問題的特點是:負數區域和正數區域內並不要求有序。可以利用這個特點通過1次線性掃描就結束戰鬥!!

以下的程式實現了該目標。

其中x指向待排序的整型陣列,len是陣列的長度。

void sort3p(int* x, int len)

{

int p = 0;

int left = 0;

int right = len-1;

while(p<=right){

if(x[p]<0){

int t = x[left];

x[left] = x[p];

x[p] = t;

left++;

p++;

}

else if(x[p]>0){

int t = x[right];

x[right] = x[p];

x[p] = t;

right--;

}

else{

__________________________; //填空位置

}

}

}

如果給定陣列:

25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0

TAG標籤:試題 藍橋 語言 #