藍橋杯c語言試題2015
第一題:
假設有兩種微生物 X 和 Y
X出生后每隔3分鐘分裂一次(數目加倍),Y出生后每隔2分鐘分裂一次(數目加倍)。
一個新出生的X,半分鐘之后吃掉1個Y,并且,從此開始,每隔1分鐘吃1個Y。
現在已知有新出生的 X=10, Y=89,求60分鐘后Y的數目。
如果X=10,Y=90 呢?
本題的要求就是寫出這兩種初始條件下,60分鐘后Y的數目。
第二題:
ABCDE * ? = EDCBA
“ABCDE代表不同的數字,問號也代表某個數字!”
第三題:
有一群海盜(不多于20人),在船上比拼酒量。過程如下:打開一瓶酒,所有在場的人平分喝下,有幾個人倒下了。再打開一瓶酒平分,又有倒下的,再次重復…… 直到開了第4瓶酒,坐著的已經所剩無幾,海盜船長也在其中。當第4瓶酒平分喝下后,大家都倒下了。
等船長醒來,發現海盜船擱淺了。他在航海日志中寫到:“……昨天,我正好喝了一瓶…….奉勸大家,開船不喝酒,喝酒別開船……”
請你根據這些信息,推斷開始有多少人,每一輪喝下來還剩多少人。
如果有多個可能的答案,請列出所有答案,每個答案占一行。
格式是:人數,人數,…
例如,有一種可能是:20,5,4,2,0
第四題:
某電視臺舉辦了低碳生活大獎賽。題目的計分規則相當奇怪:
每位選手需要回答10個問題(其編號為1到10),越后面越有難度。答對的,當前分數翻倍;答錯了則扣掉與題號相同的分數(選手必須回答問題,不回答按錯誤處理)。
每位選手都有一個起步的分數為10分。
某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能推斷出他(她)哪個題目答對了,哪個題目答錯了嗎?
如果把答對的記為1,答錯的記為0,則10個題目的回答情況可以用僅含有1和0的串來表示。例如:0010110011 就是可能的情況。
你的任務是算出所有可能情況。每個答案占一行。
第五題:
這道題是代碼填空題,目的是把一個矩陣順時針旋轉。
1 2 3 4 13 9 5 1
5 6 7 8 –> 14 10 6 2
9 10 11 12 15 11 7 3
13 14 15 16 16 12 8 4
題目附帶的不完整代碼:
01
void rotate(int* x, int rank)
02
{
03
int* y = (int*)malloc(___________________); // 填空
04
05
for(int i=0; i
06
{
07
y[_________________________] = x[i]; // 填空
08
}
09
10
for(i=0; i
11
{
12
x[i] = y[i];
13
}
14
15
free(y);
16
}
17
18
int main(int argc, char* argv[])
19
{
20
int x[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
21
int rank = 4;
22
23
rotate(&x[0][0], rank);
24
25
for(int i=0; i
26
{
27
for(int j=0; j
28
{
29
printf("%4d", x[i][j]);
30
}
31
printf("\n");
32
}
33
34
return 0;
35
}
第六題:
依舊是補全代碼,大數乘法,本來還算比較繁雜的,但是題目當時附了圖,變的`很簡單了
題目附帶的不完整代碼:
01
void bigmul(int x, int y, int r[])
02
{
03
int base = 10000;
04
int x2 = x / base;
05
int x1 = x % base;
06
int y2 = y / base;
07
int y1 = y % base;
08
09
int n1 = x1 * y1;
10
int n2 = x1 * y2;
11
int n3 = x2 * y1;
12
int n4 = x2 * y2;
13
14
r[3] = n1 % base;
15
r[2] = n1 / base + n2 % base + n3 % base;
16
r[1] = ____________________________________________; // 填空
17
r[0] = n4 / base;
18
19
r[1] += _______________________; // 填空
20
r[2] = r[2] % base;
21
r[0] += r[1] / base;
22
r[1] = r[1] % base;
23
}
24