蓝桥杯预赛题目答案.docx
- 文档编号:11716087
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:9
- 大小:16.95KB
蓝桥杯预赛题目答案.docx
《蓝桥杯预赛题目答案.docx》由会员分享,可在线阅读,更多相关《蓝桥杯预赛题目答案.docx(9页珍藏版)》请在冰豆网上搜索。
蓝桥杯预赛题目答案
2011年蓝桥杯预赛题目答案
//预赛NO.1题
#include
voidmain()
{
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;
}
if(i==sum)
{
printf("%d\n",i);
}
}
}
#include
voidmain()
{
doublex[10]={7,8,8,8,8,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;j { if(j! =i)sum+=x[j]; } t=x[i]-sum/(n-1); if(t<0)t=-t; if(t>dif) { dif=t; bad=x[i]; printf("%d,%f\n",i,x[i]); } } printf("bad=%lf\n",bad); } //预赛NO.3题 #include #include voidreverse_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)); printf("%s\n",a); } #include voidfun(doubledTestNo,intiBase) { intiT[8]; intiNo; printf("十进制正小数%f转换成%d进制数为: ",dTestNo,iBase); for(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("\n"); } voidmain() { doubledTestNo=0.795; intiBase; for(iBase=2;iBase<=9;iBase++) fun(dTestNo,iBase); printf("\n"); } #include #include #include voidshift(char*s,intn) { char*p; char*q; intlen=strlen(s); char*s2; if(len==0)return; if(n<=0||n>=len)return; s2=(char*)malloc(sizeof(char)*(len+1)); p=s; q=s2+n%len; while(*p) { *q++=*p++; if(q-s2>=len) { *q='\0'; q=s2; } } strcpy(s,s2); free(s2); } voidmain() { charstr[10]="zhanghe"; shift(str,2); printf("%s\n",str); } //预赛NO.6题 #include #include intg(inta,intb)//b是摇号产生的 { charsa[]="00000000"; charsb[]="00000000"; intn=0; inti,j; chart; sprintf(sa,"%8d",a); sprintf(sb,"%8d",b); for(i=0;i<8;i++) { for(j=1;j<=8-i;j++) { t=sa[i+j]; sa[i+j]=0; if(strstr(sb,sa+i)) { if(j>n)n=j; } sa[i+j]=t; } } returnn; } voidmain() { inta=12345678; intb=42347856; printf("%d\n",g(a,b)); } 预赛NO.7题 #include /* m: 袋中红球的数目 n: 袋中白球的数目 x: 需要取出的数目 y: 红球至少出现的次数 */ doublepro(intm,intn,intx,inty) { doublep1; doublep2; if(y>x)return0; if(y==0)return1; if(y>m)return0; if(x-n>y)return1; p1=pro(m-1,n,x-1,y-1);//取红球 p2=pro(m,n-1,x-1,y);//取白球 return(double)m/(m+n)*p1+(double)n/(m+n)*p2; } voidmain() { intm,n,x; printf("请依次输入红球个数、白球个数及要取的球的个数: "); scanf("%d%d%d",&m,&n,&x); printf("%lf\n",pro(m,n,x,x/2+1)); } //预赛NO.8题 #include #include intm[20][20];//矩阵 intidx=1;//位置编号 intc;//层数 intin;//n的值 doubledn;//n的值(用double型可以计算层数) voidmain() { inti,k; intp,q; scanf("%lf",&dn); c=(int)(dn-0.1)/3+1; in=(int)dn; for(i=0,k=in-1;i { if(i==k) { m[i][i]=idx; break; } for(p=i;p m[i][p]=idx++; for(p=i,q=k;p m[p][q]=idx++; for(p=k;p>i;p--) m[p][i]=idx++; } for(p=0;p { for(q=0;q { printf("%4d",m[p][q]); } printf("\n"); } } //预赛NO.9题 #include intsln;//方案的个数 intgm;//商品的种类 intprice[1000];//各种商品价钱 intcount[1000];//各种商品的个数 intmethod[1000][1000];//每种解决方案中各商品的个数 intcost;//当前花费 voidoutput()//输出解决方案 { inti,j; printf("%d\n",sln); for(i=0;i { for(j=0;j printf("%3d",method[i][j]); printf("\n"); } } voidfun(intm) { inti; if(cost==1000) { for(i=0;i method[sln][i]=count[i]; sln++; return; } if(cost>1000||m<0) return; //choosem ++count[m]; cost+=price[m]; fun(m); //notchoosem --count[m]; cost-=price[m]; fun(m-1); } voidmain() { intm;//商品的种类 intk; scanf("%d",&m); gm=m; for(k=0;k fun(m-1); output(); } //预赛NO.10题 #include #include chara[26]={"abcdefghijklmnopqrstuvwxyz"}; charkey[26];//密钥 intkey_len;//密钥长度 intm[5][5];//加密矩阵 charInput[1000];//待加密串 charSecret[1000];//密文 voidInitM() { inti,j; //将key中的字符装入矩阵 for(i=0;i { m[i/5][i%5]=key[i]; a[key[i]-97]='*';//表示已经装入矩阵 } //将其余字母装入矩阵 for(j=0;j<26&&i<25;j++) { if(a[j]! ='*') { m[i/5][i%5]=a[j]; a[j]='*'; i++; } } } intInM(inti) { intp,q; intflag=0; for(p=0;p<5&&flag! =1;p++) { for(q=0;q<5;q++) { if(Input[i]==m[p][q]) { flag=1; break; } } } returnflag; } introw(inti) { intp,q; for(p=0;p<5;p++) { for(q=0;q<5;q++) { if(Input[i]==m[p][q]) returnp; } } } intcolumn(inti) { intp,q; for(p=0;p<5;p++) { for(q=0;q<5;q++) { if(Input[i]==m[p][q]) returnq; } } } voidtranslate(char*input,intlen) { inti,j; intr1,r2,c1,c2; if(len==1) { Secret[0]=Input[0]; } else { for(i=0;i { j=i+1; if((Input[i]==Input[j])||((InM(i)+InM(j))==1)) { Secret[i]=Input[i]; Secret[j]=Input[j]; continue; } if((row(i)==row(j))||(column(i)==column(j))) { Secret[i]=Input[j]; Secret[j]=Input[i]; continue; } r1=row(i); c1=column(i); r2=row(j); c2=column(j); Secret[i]=m[r1][c2]; Secret[j]=m[r2][c1]; } if(i==len+1)//只剩1个 { i-=2; Secret[i]=Input[i]; } } } voidmain() { scanf("%s",key); scanf("%s",Input); key_len=strlen(key); InitM();//初始化加密矩阵 translate(Input,strlen(Input));//加密 printf("%s\n",Secret);//输出密文 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯 预赛 题目 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)