蓝桥杯预赛题目答案.docx

上传人:b****4 文档编号:6993684 上传时间:2023-05-10 格式:DOCX 页数:9 大小:16.95KB
下载 相关 举报
蓝桥杯预赛题目答案.docx_第1页
第1页 / 共9页
蓝桥杯预赛题目答案.docx_第2页
第2页 / 共9页
蓝桥杯预赛题目答案.docx_第3页
第3页 / 共9页
蓝桥杯预赛题目答案.docx_第4页
第4页 / 共9页
蓝桥杯预赛题目答案.docx_第5页
第5页 / 共9页
蓝桥杯预赛题目答案.docx_第6页
第6页 / 共9页
蓝桥杯预赛题目答案.docx_第7页
第7页 / 共9页
蓝桥杯预赛题目答案.docx_第8页
第8页 / 共9页
蓝桥杯预赛题目答案.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

蓝桥杯预赛题目答案.docx

《蓝桥杯预赛题目答案.docx》由会员分享,可在线阅读,更多相关《蓝桥杯预赛题目答案.docx(9页珍藏版)》请在冰点文库上搜索。

蓝桥杯预赛题目答案.docx

蓝桥杯预赛题目答案

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);//输出密文

}

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2