资源描述:
《2011年蓝桥杯预赛题目答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2011年蓝桥杯预赛题目和参考答案1.代码填空(满分3分)神秘的三位数有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。即:abc=a!+b!+c!下面的程序用于搜索这样的3位数。请补全缺失的代码。//NO.1题#includevoidmain(){intJC[]={1,1,2,6,24,120,720,5040,40320,362880};inti;intsum;intx;for(i=100;i<1000;i++){sum=0;x=i;while(x){sum+=JC[x%10];x/=10;}i
2、f(i==sum){printf("%d",i);}}}2.代码填空(满分4分)歌赛新规则歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?有人提出:应该去掉与其余的分数平均值相差最远的那个分数。即“最离群”的分数。以下的程序用于实现这个功能。其中x存放所有评分,n表示数组中元素的个数。函数返回最“离群”的那个分数值。请补全缺失的代码。#includevoidmain(){doublex[10]={7,8,8,8,8
3、,20,8,8,8,8};inti,j;doubledif=-1;doublebad;doublesum;intn=10;doublet;for(i=0;i<10;i++){sum=0;for(j=0;jdif){dif=t;bad=x[i];printf("%d,%f",i,x[i]);}}printf("bad=%lf",bad);}3、代码填空(满分4分)反转串我们把“cba”称为“abc”
4、的反转串。下面的代码可以把buf中的字符反转。其中n表示buf中待反转的串的长度。请补充缺少的代码。//NO.3题#include#includevoidreverse_str(char*buf,intn){chartmp;if(n<2)return;tmp=buf[0];buf[0]=buf[n-1];buf[n-1]=tmp;reverse_str(buf+1,n-2);}voidmain(){chara[10]="zhanghe";reverse_str(a,strlen(a));
5、printf("%s",a);}4.代码填空(满分5分)n进制小数将任意十进制正小数分别转换成2,3,4,5,6,7,8,9进制正小数,小数点后保留8位,并输出。例如:若十进制小数为0.795,则输出:十进制正小数0.795000转换成2进制数为:0.11001011十进制正小数0.795000转换成3进制数为:0.21011011十进制正小数0.795000转换成4进制数为:0.30232011十进制正小数0.795000转换成5进制数为:0.34414141十进制正小数0.795000转换成6进制数为:0.44341
6、530十进制正小数0.795000转换成7进制数为:0.53645364十进制正小数0.795000转换成8进制数为:0.62702436十进制正小数0.795000转换成9进制数为:0.71348853以下代码提供了这个功能。其中,dTestNo表示待转的十进制小数。iBase表示进制数。请填写缺失的部分。#includevoidfun(doubledTestNo,intiBase){intiT[8];intiNo;printf("十进制正小数%f转换成%d进制数为:",dTestNo,iBase);fo
7、r(iNo=0;iNo<8;iNo++){dTestNo*=iBase;iT[iNo]=(int)dTestNo;if(dTestNo)dTestNo-=iT[iNo];}printf("0.");for(iNo=0;iNo<8;iNo++)printf("%d",iT[iNo]);printf("");}voidmain(){doubledTestNo=0.795;intiBase;for(iBase=2;iBase<=9;iBase++)fun(dTestNo,iBase);printf("");}5.代码填空(
8、满分6分)轮换串“abcd”每个字符都向右移位,最右的移动到第一个字符的位置,就变为“dabc”。这称为对串进行位移=1的轮换。同理,“abcd”变为:“cdab”则称为位移=2的轮换。下面的代码实现了对串s进行位移为n的轮换。请补全缺失的代码。#include#incl