蓝桥基础训练题.docx

上传人:b****8 文档编号:9861540 上传时间:2023-02-07 格式:DOCX 页数:61 大小:37.62KB
下载 相关 举报
蓝桥基础训练题.docx_第1页
第1页 / 共61页
蓝桥基础训练题.docx_第2页
第2页 / 共61页
蓝桥基础训练题.docx_第3页
第3页 / 共61页
蓝桥基础训练题.docx_第4页
第4页 / 共61页
蓝桥基础训练题.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

蓝桥基础训练题.docx

《蓝桥基础训练题.docx》由会员分享,可在线阅读,更多相关《蓝桥基础训练题.docx(61页珍藏版)》请在冰豆网上搜索。

蓝桥基础训练题.docx

蓝桥基础训练题

1.问题描述

  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。

1<=n<=200

输入格式

  第一行为一个整数n。

  第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

输出格式

  输出一行,按从小到大的顺序输出排序后的数列。

样例输入

5

83649

样例输出

34689

1.#include 

2.#include 

3.void Print(int *data,int n)

4.{

5.    int i;

6.    for(i=0;i

7.    {

8.        printf("%d ",data[i]);

9.    }

10.    printf("\n");

11.}

12.

13.int Split(int *data,int pre,int rear)

14.{

15.    int value=data[pre];

16.    while(pre

17.    {

18.        while(data[rear]>=value && pre

19.        data[pre]=data[rear];

20.        while(data[pre]

21.        data[rear]=data[pre];

22.    }

23.    data[pre]=value;

24.    return pre;

25.}

26.

27.//快速排序

28.void QuickSort(int *data,int pre,int rear)

29.{

30.    if(pre

31.    {

32.        int mid=Split(data,pre,rear);

33.        QuickSort(data,pre,mid-1);

34.        QuickSort(data,mid+1,rear);

35.    }

36.}

37.

38.int main()

39.{

40.    int i;

41.    int n;

42.    int *data;

43.    scanf("%d",&n);

44.    data=(int *)malloc(sizeof(int)*n);

45.    for(i=0;i

46.    {

47.        scanf("%d",&data[i]);

48.    }

49.    QuickSort(data,0,n-1);

50.    Print(data,n);

51.    return 0;

52.}

2.问题描述

  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式

  输入的第一行为一个正整数n(1<=n<=10)。

  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式

  输出n行,每行为输入对应的八进制正整数。

注意

  输入的十六进制数不会有前导0,比如012A。

  输出的八进制数也不能有前导0。

样例输入

2

39

123ABC

样例输出

71

4435274

提示

  先将十六进制数转换成某进制数,再由某进制数转换成八进制。

1.#include 

2.#include 

3.#include 

4.

5.#define MaxSize 100000

6.

7.void saveB(char *b,char c3,char c2,char c1,char c0,int start)

8.{

9.    b[start]=c3;

10.    b[start+1]=c2;

11.    b[start+2]=c1;

12.    b[start+3]=c0;

13.}

14.int htob(char *h,char *b)

15.{

16.    int i,j;

17.    int hl=strlen(h);

18.    for(i=0;i

19.        switch(h[i])

20.        {

21.            case '0':

22.                {

23.                    saveB(b,'0','0','0','0',4*i);

24.                    break;

25.                }

26.            case '1':

27.                {

28.                    saveB(b,'0','0','0','1',4*i);

29.                    break;

30.                }

31.            case '2':

32.                {

33.                    saveB(b,'0','0','1','0',4*i);

34.                    break;

35.                }

36.            case '3':

37.                {

38.                    saveB(b,'0','0','1','1',4*i);

39.                    break;

40.                }

41.            case '4':

42.                {

43.                    saveB(b,'0','1','0','0',4*i);

44.                    break;

45.                }

46.            case '5':

47.                {

48.                    saveB(b,'0','1','0','1',4*i);

49.                    break;

50.                }

51.            case '6':

52.                {

53.                    saveB(b,'0','1','1','0',4*i);

54.                    break;

55.                }

56.            case '7':

57.                {

58.                    saveB(b,'0','1','1','1',4*i);

59.                    break;

60.                }

61.            case '8':

62.                {

63.                    saveB(b,'1','0','0','0',4*i);

64.                    break;

65.                }

66.            case '9':

67.                {

68.                    saveB(b,'1','0','0','1',4*i);

69.                    break;

70.                }

71.            case 'A':

72.                {

73.                    saveB(b,'1','0','1','0',4*i);

74.                    break;

75.                }

76.            case 'B':

77.                {

78.                    saveB(b,'1','0','1','1',4*i);

79.                    break;

80.                }

81.            case 'C':

82.                {

83.                    saveB(b,'1','1','0','0',4*i);

84.                    break;

85.                }

86.            case 'D':

87.                {

88.                    saveB(b,'1','1','0','1',4*i);

89.                    break;

90.                }

91.            case 'E':

92.                {

93.                    saveB(b,'1','1','1','0',4*i);

94.                    break;

95.                }

96.            case 'F':

97.                {

98.                    saveB(b,'1','1','1','1',4*i);

99.                    break;

100.                }

101.        }

102.    return 4*hl;

103.}

104.int btoo(char *b,char *o,int bl)

105.{

106.    int i,j;

107.    int ol;

108.    int value;

109.    if(bl%3==0)

110.        ol=bl/3;

111.    else

112.        ol=bl/3+1;

113.    j=bl-1;

114.    for(i=ol-1;i>=0;i--)

115.    {

116.        if(i>0)

117.            o[i]=b[j]-48+(b[j-1]-48)*2+(b[j-2]-48)*4+48;

118.        else

119.        {

120.            switch(j)

121.            {

122.                case 2:

123.                    o[i]=b[j]-48+(b[j-1]-48)*2+(b[j-2]-48)*4+48;

124.                    break;

125.                case 1:

126.                    o[i]=b[j]-48+(b[j-1]-48)*2+48;

127.                    break;

128.                case 0:

129.                    o[i]=b[j];

130.                    break;

131.            }

132.

133.        }

134.        j=j-3;

135.    }

136.    return ol;

137.}

138.void printO(char *o,int ol)

139.{

140.    int i=0;

141.    if(o[0]=='0')

142.        i=1;

143.    for(;i

144.    {

145.        printf("%c",o[i]);

146.    }

147.    printf("\n");

148.}

149.main()

150.{

151.    char h[MaxSize];

152.    char b[4*MaxSize];

153.    char o[4*MaxSize/3+1];

154.    int n,i,bl,ol;

155.    scanf("%d",&n);

156.    getchar();

157.    for(i=0;i

158.    {

159.        gets(h);

160.        bl=htob(h,b);

161.        ol=btoo(b,o,bl);

162.        

163.        printO(o,ol);

164.    }

165.}

3.问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:

十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

1.#include

2.#include 

3.#include

4.int main()

5.{ 

6. double sum=0,x;

7. char a[8];

8. int len,i=0;

9. gets(a);

10. len=strlen(a);

11. while(len)

12. {

13.  if(a[len-1]>='A'&&a[len-1]<='F')

14.    x=(a[len-1]-'7')*pow(16,i++);

15.  else

16.      x=(a[len-1]-'0')*pow(16,i++);

17.  sum+=x;

18.  len--;

19. }

20. printf("%.0lf",sum);

21.

22. return 0;

23. 

24. }

4.问题描述

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。

它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。

十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。

  给出一个非负整数,将它表示成十六进制的形式。

输入格式

  输入包含一个非负整数a,表示要转换的数。

0<=a<=2147483647

输出格式

  输出这个整数的16进制表示

样例输入

30

样例输出

1E

1.#include 

2.#include 

3.char data[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

4.

5.//输出

6.void Print(char *num,int n)

7.{

8.    int i;

9.    for(i=n-1;i>=0;i--) printf("%c",num[i]);

10.    printf("\0");

11.    printf("\n");

12.}

13.

14.//将十六进制数转换为十进制数

15.int Transform(char *num,long long value)

16.{

17.    int n=0;

18.    while(value>=16)

19.    {

20.        num[n++]=data[value%16];

21.        value/=16;

22.    }

23.    num[n++]=data[value%16];

24.    return n;

25.}

26.

27.int main()

28.{

29.    long long value;

30.    char num[10];

31.    int n;

32.    scanf("%I64d",&value);

33.    n=Transform(num,value);

34.    Print(num,n);

35.    return 0;

36.}

5.问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。

  输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。

输入格式

  输入一行,包含一个正整数n。

输出格式

  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998

989989

998899

数据规模和约定

  1<=n<=54。

1.#include

2.int main()

3.{

4.    int a,b,c,d,e,f,t,all;

5.    scanf("%d",&t);

6.    for(a=1;a<10;a++)

7.        for(b=0;b<10;b++)

8.            for(c=0;c<10;c++)

9.                for(d=0;d<10;d++)

10.                    for(e=0;e<10;e++)

11.                    {

12.                        if(a==e)

13.                            if(b==d)

14.                                {

15.                                    all=a+b+c+d+e;

16.                                    if(all==t)

17.                                    printf("%d\n",a*10000+b*1000+c*100+d*10+e);

18.                                }

19.                    }

20.    for(a=1;a<10;a++)

21.        for(b=0;b<10;b++)

22.            for(c=0;c<10;c++)

23.                for(d=0;d<10;d++)

24.                    for(e=0;e<10;e++)

25.                        for(f=0;f<10;f++)

26.                        {

27.                            if(a==f)

28.                                if(b==e)

29.                                    if(c==d)

30.                                    {

31.                                        all=a+b+c+d+e+f;

32.                                        if(all==t)

33.                                            printf("%d\n",a*100000+b*10000+c*1000+d*100+e*10+f);

34.                                    }

35.                        }

36.                    

37.    return 0;

38.}

6.问题描述

  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式

  按从小到大的顺序输出满足条件的四位十进制数。

1.#include

2.int main()

3.{

4. int a,b,c,d,i;

5. for(i=1000;i<=9999;i++)

6. {  

7.   a=i/1000;

8.   b=i/100%10;

9.   c=i/10%10;

10.   d=i%10;

11.  if(a==d&&b==c)

12.    printf("%d\n",i);

13. }

14.return 0;

15.}

7.问题描述

  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。

编程求所有满足这种条件的三位十进制数。

输出格式

  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

1.#include

2.int main()

3.{

4.  int i,j,k,n;

5.  for(n=100;n<1000;n++)

6.  {

7.    i=n/100;

8.    j=n/10%10;

9.    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1