当前位置:文档之家› 2014蓝桥杯湖师校内选拔赛试题及参考代码

2014蓝桥杯湖师校内选拔赛试题及参考代码

2014蓝桥杯湖师校内选拔赛试题及参考代码
1.神秘的数
是这样的一个整数,组成这个数的各位数字阶乘之和正好等于它本身。

例如:对于一个三位数abc,如果abc=a!+b!+c!, 则该数是神秘的数。

对于一个四位数abcd,如果abcd=a!+b!+c!+d!, 则该数是神秘的数。

要求输出范围在100~50000之间的所有的神秘的数。

每个数输出一行,每行从第1列输出,不要输出空行。

结果:
145
40585
参考代码:
#include<stdio.h>
int main()
{ int i,j,a,b,t,s;
for(i=100;i<=50000;i++)
{ s=0;
a=i;
while(a!=0)
{ t=1;
b=a%10;
for(j=1;j<=b;j++)
t=t*j;
s=s+t;
a=a/10;
}
if(s==i) printf("%d\n",i);
}
return 0;
}
2 轮转数(每个字符依次向右循环移动)
有一字符串(小写a-z): abcdefghijklmnopqrstuvwxyz
经过1次向右循环移动,得到字符串zabcdefghijklmnopqrstuvwxy
经过2次向右循环移动,得到字符串yzabcdefghijklmnopqrstuvwx
经过3次向右循环移动,得到字符串xyzabcdefghijklmnopqrstuvw
编写程序,输入向右移动次数n(n为int类型), 输出向右移动n次数后得到的字符串。

样例输入
4
样例输出
wxyzabcdefghijklmnopqrstuv
样例输入
8
样例输出
stuvwxyzabcdefghijklmnopqr
测试数据:
输入6
输出uvwxyzabcdefghijklmnopqrst
输入523
输出xyzabcdefghijklmnopqrstuvw
参考代码
#include<stdio.h>
int main()
{ int i,n,j=0;
scanf("%d",&n);
for(i=26-n%26;j<26;i=(i+1)%26,++j)
printf("%c",'a'+i);
return 0;
}
3.将十进制数转换成十六进制数
输入要求:
包括多组测试数据。

输入一个不超过10位正整数,无前导零。

输入以0结束。

输出要求:
输出其十六进制表示(不打印前导零,A~F字母大写)。

输入样例:
12 20 123456789 0
输出样例:
C 14 75BCD15
提示:输入以0结束,不要打印多余字符!
测试数据
输入 234 1234 9123456780 0
输出 EA 4D2 21FCCE70C
参考代码:
#include<stdio.h>
int main()
{ int i,j,dnum,t;
char xnum[100];
while(1)
{
scanf("%d",&dnum);
i=0;
if(dnum==0) break;
while(dnum)
{t=dnum%16+48;
if(t>57) t=t+7;
xnum[i++]=t;
dnum=dnum/16;
}
for(j=i-1;j>=0;j--) putchar(xnum[j]); putchar(' ');
}
return 0;
}。

相关主题