亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

培訓(xùn)考試

藍(lán)橋杯c語(yǔ)言試題及答案

時(shí)間:2023-03-30 01:22:08 培訓(xùn)考試 我要投稿
  • 相關(guān)推薦

2014年藍(lán)橋杯c語(yǔ)言試題及答案

  1. 標(biāo)題: 馬虎的算式

2014年藍(lán)橋杯c語(yǔ)言試題及答案

  小明是個(gè)急性子,上小學(xué)的時(shí)候經(jīng)常把老師寫在黑板上的題目抄錯(cuò)了。

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

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

  但結(jié)果卻很戲劇性,他的答案竟然是對(duì)的!!

  因?yàn)?36 * 495 = 396 * 45 = 17820

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

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

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

  請(qǐng)你利用計(jì)算機(jī)的優(yōu)勢(shì)尋找所有的可能,并回答不同算式的種類數(shù)。

  滿足乘法交換律的算式計(jì)為不同的種類,所以答案肯定是個(gè)偶數(shù)。

  答案直接通過(guò)瀏覽器提交。

  注意:只提交一個(gè)表示最終統(tǒng)計(jì)種類數(shù)的數(shù)字,不要提交解答過(guò)程或其它多余的內(nèi)容。

  答案:142

  2. 標(biāo)題: 振興中華

  小明參加了學(xué)校的趣味運(yùn)動(dòng)會(huì),其中的一個(gè)項(xiàng)目是:跳格子。

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

  從我做起振

  我做起振興

  做起振興中

  起振興中華

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

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

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

  答案是一個(gè)整數(shù),請(qǐng)通過(guò)瀏覽器直接提交該數(shù)字。

  答案:35

  3. 題目標(biāo)題: 猜年齡

  美國(guó)數(shù)學(xué)家維納(N.Wiener)智力早熟,11歲就上了大學(xué)。他曾在1935~1936年應(yīng)邀來(lái)中國(guó)清華大學(xué)講學(xué)。

  一次,他參加某個(gè)重要會(huì)議,年輕的臉孔引人注目。于是有人詢問他的年齡,他回答說(shuō):

  “我年齡的立方是個(gè)4位數(shù)。我年齡的4次方是個(gè)6位數(shù)。這10個(gè)數(shù)字正好包含了從0到9這10個(gè)數(shù)字,每個(gè)都恰好出現(xiàn)1次。”

  請(qǐng)你推算一下,他當(dāng)時(shí)到底有多年輕。

  通過(guò)瀏覽器,直接提交他那時(shí)的年齡數(shù)字。

  注意:不要提交解答過(guò)程,或其它的說(shuō)明文字。

  答案:18

  4. 標(biāo)題: 幻方填空

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

  歐洲最著名的幻方是德國(guó)數(shù)學(xué)家、畫家迪勒創(chuàng)作的版畫《憂郁》中給出的一個(gè)4階幻方。

  他把1,2,3,...16 這16個(gè)數(shù)字填寫在4 x 4的方格中。

  如圖p1.jpg所示,即:

  16 ? ? 13

  ? ? 11 ?

  9 ? ? *

  ? 15 ? 1

  表中有些數(shù)字已經(jīng)顯露出來(lái),還有些用?和*代替。

  請(qǐng)你計(jì)算出? 和 * 所代表的數(shù)字。并把 * 所代表的數(shù)字作為本題答案提交。

  答案是一個(gè)整數(shù),請(qǐng)通過(guò)瀏覽器直接提交該數(shù)字。

  答案:12

  5. 題目標(biāo)題:公約數(shù)公倍數(shù)

  我們經(jīng)常會(huì)用到求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)的功能。

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

  函數(shù) myfunc 接受兩個(gè)正整數(shù)a,b

  經(jīng)過(guò)運(yùn)算后打印出 它們的最大公約數(shù)和最小公倍數(shù)。

  此時(shí),調(diào)用 myfunc(15,20)

  將會(huì)輸出:

  3

  60

  // 交換數(shù)值

  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("%d\n",b); // 最大公約數(shù)

  printf("%d\n", ____________________________________); // 最小公倍數(shù)

  }

  請(qǐng)分析代碼邏輯,并推測(cè)劃線處的代碼,通過(guò)網(wǎng)頁(yè)提交。

  答案: m*n/b

  6.標(biāo)題:三部排序

  一般的排序有許多經(jīng)典算法,如快速排序、希爾排序等。

  但實(shí)際應(yīng)用時(shí),經(jīng)常會(huì)或多或少有一些特殊的要求。我們沒必要套用那些經(jīng)典算法,可以根據(jù)實(shí)際情況建立更好的解法。

  比如,對(duì)一個(gè)整型數(shù)組中的數(shù)字進(jìn)行分類排序:

  使得負(fù)數(shù)都靠左端,正數(shù)都靠右端,0在中部。注意問題的特點(diǎn)是:負(fù)數(shù)區(qū)域和正數(shù)區(qū)域內(nèi)并不要求有序?梢岳眠@個(gè)特點(diǎn)通過(guò)1次線性掃描就結(jié)束戰(zhàn)斗!!

  以下的程序?qū)崿F(xiàn)了該目標(biāo)。

  其中x指向待排序的整型數(shù)組,len是數(shù)組的長(zhǎng)度。

  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{

  __________________________; //填空位置

  }

  }

  }

  如果給定數(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

  請(qǐng)分析代碼邏輯,并推測(cè)劃線處的代碼,通過(guò)網(wǎng)頁(yè)提交

  答案:p++

  7. 標(biāo)題:核桃的數(shù)量

  小張是軟件項(xiàng)目經(jīng)理,他帶領(lǐng)3個(gè)開發(fā)組。工期緊,今天都在加班呢。為鼓舞士氣,小張打算給每個(gè)組發(fā)一袋核桃(據(jù)傳言能補(bǔ)腦)。他的要求是:

  1. 各組的核桃數(shù)量必須相同

  2. 各組內(nèi)必須能平分核桃(當(dāng)然是不能打碎的)

  3. 盡量提供滿足1,2條件的最小數(shù)量(節(jié)約鬧革命嘛)

  程序從標(biāo)準(zhǔn)輸入讀入:

  a b c

  a,b,c都是正整數(shù),表示每個(gè)組正在加班的人數(shù),用空格分開(a,b,c<30)

  程序輸出:

  一個(gè)正整數(shù),表示每袋核桃的數(shù)量。

  例如:

  用戶輸入:

  2 4 5

  程序輸出:

  20

  再例如:

  用戶輸入:

  3 1 1

  程序輸出:

  3

  #include

  void swap(int *a, int *b)

  {

  int temp;

  temp = *a;

  *a = *b;

  *b = temp;

  }

  int f(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;

  }

  return m * n / b;

  }

  int main()

  {

  int a, b, c;

  scanf("%d %d %d", &a, &b, &c);

  printf("%d", f(f(a,b), f(b,c)));

  return 0;

  }

  8. 題目標(biāo)題:打印十字圖

  小明為某機(jī)構(gòu)設(shè)計(jì)了一個(gè)十字型的徽標(biāo)(并非紅十字會(huì)啊),如下所示(可參見p1.jpg)

  $$$$$$$$$$$$$

  $ $

  $$$ $$$$$$$$$ $$$

  $ $ $ $

  $ $$$ $$$$$ $$$ $

  $ $ $ $ $ $

  $ $ $$$ $ $$$ $ $

  $ $ $ $ $ $ $

  $ $ $ $$$$$ $ $ $

  $ $ $ $ $ $ $

  $ $ $$$ $ $$$ $ $

  $ $ $ $ $ $

  $ $$$ $$$$$ $$$ $

  $ $ $ $

  $$$ $$$$$$$$$ $$$

  $ $

  $$$$$$$$$$$$$

  對(duì)方同時(shí)也需要在電腦dos窗口中以字符的形式輸出該標(biāo)志,并能任意控制層數(shù)。

  為了能準(zhǔn)確比對(duì)空白的數(shù)量,程序要求對(duì)行中的空白以句點(diǎn)(.)代替。

  輸入格式:

  一個(gè)正整數(shù) n (n<30) 表示要求打印圖形的層數(shù)

  輸出:

  對(duì)應(yīng)包圍層數(shù)的該標(biāo)志。

  例如:

  用戶輸入:

  1

  程序應(yīng)該輸出:

  ..$$$$$..

  ..$...$..

  $$$.$.$$$

  $...$...$

  $.$$$$$.$

  $...$...$

  $$$.$.$$$

  ..$...$..

  ..$$$$$..

  再例如:

  用戶輸入:

  3

  程序應(yīng)該輸出:

  ..$$$$$$$$$$$$$..

  ..$...........$..

  $$$.$$$$$$$$$.$$$

  $...$.......$...$

  $.$$$.$$$$$.$$$.$

  $.$...$...$...$.$

  $.$.$$$.$.$$$.$.$

  $.$.$...$...$.$.$

  $.$.$.$$$$$.$.$.$

  $.$.$...$...$.$.$

  $.$.$$$.$.$$$.$.$

  $.$...$...$...$.$

  $.$$$.$$$$$.$$$.$

  $...$.......$...$

  $$$.$$$$$$$$$.$$$

  ..$...........$..

  ..$$$$$$$$$$$$$..

  請(qǐng)仔細(xì)觀察樣例,尤其要注意句點(diǎn)的數(shù)量和輸出位置。

  #include

  void swap(int *a, int *b)

  {

  int temp;

  temp = *a;

  *a = *b;

  *b = temp;

  }

  int go(int i, int j, int n)

  {

  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) return 0;

  if (i % 2 == 1 && j >= i - 2) return 1;

  if (j % 2 == 1 && j != i - 1) return 1;

  return 0;

  }

  int main()

  {

  int n;

  scanf("%d", &n);

  int i, j;

  for (i = 1; i <= n*4+5; i++)

  {

  for (j = 1; j <= n*4+5; j++)

  {

  if (go(i, j, n))

  printf("$");

  else

  printf(".");

  }

  printf("\n");

  }

  return 0;

  }

  9. 標(biāo)題:帶分?jǐn)?shù)

  100 可以表示為帶分?jǐn)?shù)的形式:100 = 3 + 69258 / 714

  還可以表示為:100 = 82 + 3546 / 197

  注意特征:帶分?jǐn)?shù)中,數(shù)字1~9分別出現(xiàn)且只出現(xiàn)一次(不包含0)。

  類似這樣的帶分?jǐn)?shù),100 有 11 種表示法。

  題目要求:

  從標(biāo)準(zhǔn)輸入讀入一個(gè)正整數(shù)N (N<1000*1000)

  程序輸出該數(shù)字用數(shù)碼1~9不重復(fù)不遺漏地組成帶分?jǐn)?shù)表示的全部種數(shù)。

  注意:不要求輸出每個(gè)表示,只統(tǒng)計(jì)有多少表示法!

  例如:

  用戶輸入:

  100

  程序輸出:

  11

  再例如:

  用戶輸入:

  105

  程序輸出:

  6

  #include

  #define N 9

  int num[N] = {1,2,3,4,5,6,7,8,9};

  int tag[3][3] = {{4,3,2},{5,3,1},{6,2,1}};

  void swap(int *a, int *b)

  {

  int temp;

  temp = *a;

  *a = *b;

  *b = temp;

  }

  int go(int i, int n)

  {

  int a, b, c;

  int count = 0;

  for (a = 0; a < 3; a++)

  {

  int r[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++];

  if (r[0] + r[1] / r[2] == n && r[1] % r[2] == 0) count++;

  if (r[0] + r[2] / r[1] == n && r[2] % r[1] == 0) count++;

  if (r[1] + r[0] / r[2] == n && r[0] % r[2] == 0) count++;

  if (r[1] + r[2] / r[0] == n && r[2] % r[0] == 0) count++;

  if (r[2] + r[0] / r[1] == n && r[0] % r[1] == 0) count++;

  if (r[2] + r[1] / r[0] == n && r[1] % r[0] == 0) count++;

  }

  while (i < N)

  {

  int k = i + 1;

  while (k < N)

  {

  swap(num + i, num + k);

  count += go(i + 1, n);

  swap(num + i, num + k);

  k++;

  }

  i++;

  }

  return count;

  }

  int main()

  {

  int n;

  scanf("%d", &n);

  printf("%d", go(0, n));

  return 0;

  }

  10. 標(biāo)題:剪格子

  如圖p1.jpg所示,3 x 3 的格子中填寫了一些整數(shù)。

  我們沿著圖中的紅色線剪開,得到兩個(gè)部分,每個(gè)部分的數(shù)字和都是60。

  本題的要求就是請(qǐng)你編程判定:對(duì)給定的m x n 的格子中的整數(shù),是否可以分割為兩個(gè)部分,使得這兩個(gè)區(qū)域的數(shù)字和相等。

  如果存在多種解答,請(qǐng)輸出包含左上角格子的那個(gè)區(qū)域包含的格子的最小數(shù)目。

  如果無(wú)法分割,則輸出 0

  程序輸入輸出格式要求:

  程序先讀入兩個(gè)整數(shù) m n 用空格分割 (m,n<10)

  表示表格的寬度和高度

  接下來(lái)是n行,每行m個(gè)正整數(shù),用空格分開。每個(gè)整數(shù)不大于10000

  程序輸出:在所有解中,包含左上角的分割區(qū)可能包含的最小的格子數(shù)目。

  例如:

  用戶輸入:

  3 3

  10 1 52

  20 30 1

  1 2 3

  則程序輸出:

  3

  再例如:

  用戶輸入:

  4 3

  1 1 1 1

  1 30 80 2

  1 1 1 100

  則程序輸出:

  10

  #include

  #define N 10

  int num[N][N];

  int tag[N][N] = {0};

  int m, n;

  int r = 100;

  int find(int i, int j, int t, int ntag[][N])

  {

  int count = 0;

  if (i < 0 || i >= n || j < 0 || j >= m || ntag[i][j] == 1)

  return 0;

  ntag[i][j] = 1;

  if (tag[i][j] != t)

  return 0;

  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);

  return count;

  }

  int isbad()

  {

  int i, j, k = 0;

  int t = tag[0][0];

  int ntag1[N][N] = {0};

  int ntag2[N][N] = {0};

  int ge1 = find(0, 0, t, ntag1);

  for (i = 0; i < n; i++)

  {

  for (j = 0; j < m; j++)

  {

  if (tag[i][j] != t)

  {

  k = 1;

  break;

  }

  }

  if (k == 1)

  break;

  }

  if (i == n && j == m)

  return 0;

  int ge2 = find(i, j, tag[i][j], ntag2);

  return ge1 + ge2 != m * n;

  }

  int bad(int i, int j)

  {

  if (i < 0 || i >= n || j < 0 || j >= m || tag[i][j] == 1)

  return 1;

  tag[i][j] = 1;

  int b = isbad();

  tag[i][j] = 0;

  return b;

  }

  void go(int i, int j, int k, int count)

  {

  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 -= num[i][j];

  go(i - 1, j, k, count);

  go(i + 1, j, k, count);

  go(i, j - 1, k, count);

  go(i, j + 1, k, count);

  tag[i][j] = 0;

  }

  int main()

  {

  scanf("%d %d", &m, &n);

  int i, j;

  int half = 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("%d", r);

  return 0;

  }

【藍(lán)橋杯c語(yǔ)言試題及答案】相關(guān)文章:

C語(yǔ)言測(cè)試試題及答案08-02

C語(yǔ)言試題訓(xùn)練10-20

C語(yǔ)言模擬試題練習(xí)12-09

衛(wèi)生C類完形填空試題及答案參考06-19

2023計(jì)算機(jī)二級(jí)C語(yǔ)言測(cè)試題及答案04-26

計(jì)算機(jī)二級(jí)C++模擬試題及答案02-06

駕照模擬考試c1考試試題(帶答案)07-19

全國(guó)計(jì)算機(jī)二級(jí)《C++》上機(jī)試題及答案03-28

2023下半年全國(guó)計(jì)算機(jī)二級(jí)C語(yǔ)言考前模擬試題及答案07-10

怎樣學(xué)習(xí)c++c語(yǔ)言編程04-28