<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            培訓考試

            藍橋杯c語言試題

            時間:2025-05-27 01:43:27 培訓考試 我要投稿

            藍橋杯c語言試題2015

              第一題:

            藍橋杯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

              25

              int main(int argc, char* argv[])

              26

              {

              27

              int x[] = {0,0,0,0};

              28

              29

              bigmul(87654321, 12345678, x);

              30

              31

              printf("%d%d%d%d\n", x[0],x[1],x[2],x[3]);

              32

              33

              return 0;

              34

              }

              第七題:

              補全代碼,有個6*6的棋盤,預先已經放置了一部分棋子,現在要再補充棋子使得每行每列都有3個棋子

              題目附帶的不完整代碼:

              001

              int N = 0;

              002

              003

              bool CheckStoneNum(int x[][6])

              004

              {

              005

              for(int k=0; k<6; k++)

              006

              {

              007

              int NumRow = 0;

              008

              int NumCol = 0;

              009

              for(int i=0; i<6; i++)

              010

              {

              011

              if(x[k][i]) NumRow++;

              012

              if(x[i][k]) NumCol++;

              013

              }

              014

              if(_____________________) return false; // 填空

              015

              }

              016

              return true;

              017

              }

              018

              019

              int GetRowStoneNum(int x[][6], int r)

              020

              {

              021

              int sum = 0;

              022

              for(int i=0; i<6; i++) if(x[r][i]) sum++;

              023

              return sum;

              024

              }

              025

              026

              int GetColStoneNum(int x[][6], int c)

              027

              {

              028

              int sum = 0;

              029

              for(int i=0; i<6; i++) if(x[i][c]) sum++;

              030

              return sum;

              031

              }

              032

              033

              void show(int x[][6])

              034

              {

              035

              for(int i=0; i<6; i++)

              036

              {

              037

              for(int j=0; j<6; j++) printf("%2d", x[i][j]);

              038

              printf("\n");

              039

              }

              040

              printf("\n");

              041

              }

              042

              043

              void f(int x[][6], int r, int c);

              044

              045

              void GoNext(int x[][6], int r, int c)

              046

              {

              047

              if(c<6)

              048

              _______________________; // 填空

              049

              else

              050

              f(x, r+1, 0);

              051

              }

              052

              053

              void f(int x[][6], int r, int c)

              054

              {

              055

              if(r==6)

              056

              {

              057

              if(CheckStoneNum(x))

              058

              {

              059

              N++;

              060

              show(x);

              061

              }

              062

              return;

              063

              }

              064

              065

              if(______________) // 已經放有了棋子

              066

              {

              067

              GoNext(x,r,c);

              068

              return;

              069

              }

              070

              071

              int rr = GetRowStoneNum(x,r);

              072

              int cc = GetColStoneNum(x,c);

              073

              074

              if(cc>=3) // 本列已滿

              075

              GoNext(x,r,c);

              076

              else if(rr>=3) // 本行已滿

              077

              f(x, r+1, 0);

              078

              else

              079

              {

              080

              x[r][c] = 1;

              081

              GoNext(x,r,c);

              082

              x[r][c] = 0;

              083

              084

              if(!(3-rr >= 6-c || 3-cc >= 6-r)) // 本行或本列嚴重缺子,則本格不能空著!

              085

              GoNext(x,r,c);

              086

              }

              087

              }

              088

              089

              int main(int argc, char* argv[])

              090

              {

              091

              int x[6][6] = {

              092

              {1,0,0,0,0,0},

              093

              {0,0,1,0,1,0},

              094

              {0,0,1,1,0,1},

              095

              {0,1,0,0,1,0},

              096

              {0,0,0,1,0,0},

              097

              {1,0,1,0,0,1}

              098

              };

              099

              100

              f(x, 0, 0);

              101

              102

              printf("%d\n", N);

              103

              104

              return 0;

              105

              }

              第八題:

              編程題:這個程序的任務就是把一串拼音字母轉換為6位數字(密碼)。我們可以使用任何好記的拼音串(比如名字,王喜明,就寫:wangximing)作為輸入,程序輸出6位數字。

              變換的過程如下:

              第一步. 把字符串6個一組折疊起來,比如wangximing則變為:

              wangxi

              ming

              第二步. 把所有垂直在同一個位置的字符的ascii碼值相加,得出6個數字,如上面的例子,則得出:

              228 202 220 206 120 105

              第三步. 再把每個數字“縮位”處理:就是把每個位的數字相加,得出的數字如果不是一位數字,就再縮位,直到變成一位數字為止。例如: 228 => 2+2+8=12 => 1+2=3

              上面的數字縮位后變為:344836, 這就是程序最終的輸出結果!

              要求程序從標準輸入接收數據,在標準輸出上輸出結果。

              輸入格式為:第一行是一個整數n(<100),表示下邊有多少輸入行,接下來是n行字符串,就是等待變換的字符串。

              輸出格式為:n行變換后的6位密碼。

              第九題:

              足球比賽具有一定程度的偶然性,弱隊也有戰勝強隊的可能。

              假設有甲、乙、丙、丁四個球隊。根據他們過去比賽的成績,得出每個隊與另一個隊對陣時取勝的概率表:

              甲 乙 丙 丁

              甲 – 0.1 0.3 0.5

              乙 0.9 – 0.7 0.4

              丙 0.7 0.3 – 0.2

              丁 0.5 0.6 0.8 –

              數據含義:甲對乙的取勝概率為0.1,丙對乙的勝率為0.3,…

              現在要舉行一次錦標賽。雙方抽簽,分兩個組比,獲勝的兩個隊再爭奪冠軍。(參見【1.jpg】)

              請你進行10萬次模擬,計算出甲隊奪冠的概率。

              第十題:

              串“abcd”每個字符都向右移位,最右的移動到第一個字符的位置,就變為“dabc”。這稱為對串進行位移=1的輪換。同理,“abcd”變為:“cdab”則稱為位移=2的輪換。

              下面的代碼實現了對串s進行位移為n的輪換。請補全缺失的代碼。

              void shift(char* s, int n)

              {

              char* p;

              char* q;

              int len = strlen(s);

              if(len==0) return;

              if(n<=0 || n>=len) return;

              char* s2 = (char*)malloc(_________);

              p = s;

              q = s2 + n % len;

              while(*p)

              {

              *q++ = *p++;

              if(q-s2>=len)

              {

              *q = ___________;

              q = s2;

              }

              }

              strcpy(s,s2);

              free(s2);

              }

            【藍橋杯c語言試題】相關文章:

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

            C語言試題08-02

            C語言試題11-01

            C語言試題10-20

            C語言程序試題04-26

            C語言試題大全08-06

            C語言試題及答案07-26

            C語言練習試題07-01

            c語言經典筆試題10-06

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看