1、蓝桥基础训练题1.问题描述给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1=n=200输入格式第一行为一个整数n。第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 91. #include2. #include3. voidPrint(int*data,intn)4. 5. inti;6. for(i=0;in;i+)7. 8. printf(%d,datai);9. 10. printf(n);11. 12. 13. intSplit(int*data,intpr
2、e,intrear)14. 15. intvalue=datapre;16. while(pre=value&prerear)rear-;19. datapre=datarear;20. while(dataprevalue&prerear)pre+;21. datarear=datapre;22. 23. datapre=value;24. returnpre;25. 26. 27. /快速排序28. voidQuickSort(int*data,intpre,intrear)29. 30. if(prerear)31. 32. intmid=Split(data,pre,rear);33.
3、 QuickSort(data,pre,mid-1);34. QuickSort(data,mid+1,rear);35. 36. 37. 38. intmain()39. 40. inti;41. intn;42. int*data;43. scanf(%d,&n);44. data=(int*)malloc(sizeof(int)*n);45. for(i=0;in;i+)46. 47. scanf(%d,&datai);48. 49. QuickSort(data,0,n-1);50. Print(data,n);51. return0;52. 2.问题描述给定n个十六进制正整数,输出它
4、们对应的八进制数。输入格式输入的第一行为一个正整数n (1=n=10)。接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式输出n行,每行为输入对应的八进制正整数。注意输入的十六进制数不会有前导0,比如012A。输出的八进制数也不能有前导0。样例输入239123ABC样例输出714435274提示先将十六进制数转换成某进制数,再由某进制数转换成八进制。1. #include2. #include3. #include4. 5. #defineMaxSize1000006. 7. voidsaveB(char*b,cha
5、rc3,charc2,charc1,charc0,intstart)8. 9. bstart=c3;10. bstart+1=c2;11. bstart+2=c1;12. bstart+3=c0;13. 14. inthtob(char*h,char*b)15. 16. inti,j;17. inthl=strlen(h);18. for(i=0;i=0;i-)115. 116. if(i0)117. oi=bj-48+(bj-1-48)*2+(bj-2-48)*4+48;118. else119. 120. switch(j)121. 122. case2:123. oi=bj-48+(bj
6、-1-48)*2+(bj-2-48)*4+48;124. break;125. case1:126. oi=bj-48+(bj-1-48)*2+48;127. break;128. case0:129. oi=bj;130. break;131. 132. 133. 134. j=j-3;135. 136. returnol;137. 138. voidprintO(char*o,intol)139. 140. inti=0;141. if(o0=0)142. i=1;143. for(;iol;i+)144. 145. printf(%c,oi);146. 147. printf(n);14
7、8. 149. main()150. 151. charhMaxSize;152. charb4*MaxSize;153. charo4*MaxSize/3+1;154. intn,i,bl,ol;155. scanf(%d,&n);156. getchar();157. for(i=0;in;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位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的1015
8、分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出655351. #include2. #include3. #include4. intmain()5. 6. doublesum=0,x;7. chara8;8. intlen,i=0;9. gets(a);10. len=strlen(a);11. while(len)12. 13. if(alen-1=A&alen-1=F)14. x=(alen-1-7)*pow(16,i+);15. else16. x=(alen-1-0)*pow(16,i+);17. sum+=x;18. len-;19. 20. printf
9、(%.0lf,sum);21. 22. return0;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样例输出1E1. #include2.
10、 #include3. chardata=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;4. 5. /输出6. voidPrint(char*num,intn)7. 8. inti;9. for(i=n-1;i=0;i-)printf(%c,numi);10. printf(0);11. printf(n);12. 13. 14. /将十六进制数转换为十进制数15. intTransform(char*num,longlongvalue)16. 17. intn=0;18. while(value=16)19. 20. numn+=datavalue%16;21. value
11、/=16;22. 23. numn+=datavalue%16;24. returnn;25. 26. 27. intmain()28. 29. longlongvalue;30. charnum10;31. intn;32. scanf(%I64d,&value);33. n=Transform(num,value);34. Print(num,n);35. return0;36. 5. 问题描述123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式输入一行,包含一个正整数n。输出格式按从小到大
12、的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约定1=n=54。1. #include2. intmain()3. 4. inta,b,c,d,e,f,t,all;5. scanf(%d,&t);6. for(a=1;a10;a+)7. for(b=0;b10;b+)8. for(c=0;c10;c+)9. for(d=0;d10;d+)10. for(e=0;e10;e+)11. 12. if(a=e)13. if(b=d)14. 15. all=a+b+c+d+e;16. if(all=t)17. printf(%dn,a*10
13、000+b*1000+c*100+d*10+e);18. 19. 20. for(a=1;a10;a+)21. for(b=0;b10;b+)22. for(c=0;c10;c+)23. for(d=0;d10;d+)24. for(e=0;e10;e+)25. for(f=0;f10;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(%dn,a*100000+b*10000+c*1000+d*100+e*10+f);34. 35. 36. 37. return0;38
14、. 6. 问题描述1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式按从小到大的顺序输出满足条件的四位十进制数。1. #include2. intmain()3. 4. inta,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(%dn,i);13. 14. return0;15. 7. 问题描述153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。1. #include2. intmain()3. 4. inti,j,k,n;5. for(n=100;n1000;n+)6. 7. i=n/100;8. j=n/10%10;9.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1