资源描述
2011“国信蓝点杯”全国软件专业人才设计与开发大赛上机编程试题一、 倒序数是将一个阿拉伯数的各位上的数字以逆序的形式写成的数。该阿拉伯数的第一位变成最后位,最后位变成第一位。例如数1245被写成5421。注意产生的新数字前边所有的数字0是被略去的。倒序数的尾部无多余的数字0。请将阿拉伯数转变为倒序数。输入输入的第一行仅有一个正整数n,表示有n组测试数据。下来有接n行,每一行是一组测试数据,长度不超过100。每一行上的字符串表示一个非负整数,它是你需要转换的数。输出对每一组测试数据在一行上输出倒序数,该倒序数中前导的数字0被略去了。输入样例 输出样例3 24 4243400 434305 503 (25分)#includestdio.hvoid fan(int m)int j,k,i=0;int a100=0;while(m)ai=m%10;m=m/10;i+;k=i;printf(转置后的数据:n);for(i=0;ik;i+)if(ai=0)j=i;elsebreak;for(j=0;ik;i+)printf(%d,ai);printf(n);main()int m;printf(输入原始数据 :m n);scanf(%d,&m);fan(m);二、 对一个正整数n,求出n!中末尾0的个数。输入输入有若干行。每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n1000000000)。输出对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。输入样例 输出样例3 3 0100 241024 253 (25分)#includestdio.hint jie(int m)int i ; long sum;sum=i=1;for(i=2;i=m;i+)sum=sum*i;return sum;int fan(long k)int count,i;int a100=0;i=count=0;while(k)ai=k%10;if(ai!=0)break;k=k/10;i+;count+;return count;main()int m,count;long k;printf(输入目标数 m :);scanf(%d,&m);k=jie(m);printf(m的阶层为:%ld n,k); count=fan(k);printf(最终0的个数为%d n,count);三、 给定两个字符串a和b,定义式子a*b表示两个字符串的连接。例如a=“abc”,b=“def”,则a*b=“abcdef”。如果将连接看成乘法,则按照普遍的方法,一个非负整数的幂表示为:a0=“”(the empty string),a(n+1)=a*(an)。输入输入字符串s,每组样例一行,s为可打印字符。s的长度在11000000之间。最后一组数据后为句号(.)。 输出每个字符串s输出最大的n满足s=an,其中a为任意字符串。输入样例 输出样例 abcd 1 aaaa 4 ababab 3 (25分)#includestdio.h#define max 100#includestring.hmain()int i,j,k,flog,len;char amax;printf(请输入数据);gets(a); len=strlen(a);for(k=1;klen;k+)for(i=0;ilen-k;i=i+k)j=i;do flog=1;if(aj!=aj+k)printf( 不相等时: a%d=%d ;a%d=%d,j ,aj,j+k,aj+k);flog=0;j+;printf( flog=%d ; k= %d n,flog,k);while(ji+k);if(flog=1)break;if(flog=1)printf( dsfsd= %d n,k);break;if(k=len)printf(结果=%d n,len);elseprintf(结果=%d n,len/k);四、 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。输入输入文件的第一行有一个正偶数N(N200),表示待挑选的自然数的个数。第二行给出N个不超过30000的正整数,相邻的两个数之间用一个空格分开。输出对每个正整数,输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。输入样例 输出样例4 22 5 6 13 (25分)#includestdio.h#define max 100int shushu(int m)int i,k=0;for(i=2;im-1;i+)if(m%i=0)k=1;if(k=1)return 0;else printf( n %5d n,m);return 1;main()int s,i,j,m,k,t,count=0;int amax=0;int bmax=0;t=0;printf(输入组合数的个数 m n);scanf(%d,&m);printf(请依次输入数字以 ,分开n);for(i=0;im;i+)scanf(%d,&ai);j=i;for(i=0;ij;i+)for(k=i+1;kj;k+)if(shushu(ai+ak)bt=ai;bt+1=ak;printf( n b%d=%d b%d=%d n,t,bt,t+1,bt+1);t=t+2;s=t-1;printf(s=%d n,s);for(i=0;i=s;i+)t=1;for(k=i+1;k=s;k+)if(bi=bk)t=0;if(t=1)count+;printf( 最佳对数:%dn,count/2);注: 本次试题满分100分,开发平台是Visual C+6.0(英文版)/Eclipse(英文版)。提交的时候只需提交源程序,这四个题目的源程序分别依次以1.cpp/1.java、2.cpp/2.java、3.cpp/3.java、4.cpp/4.java命名,然后自建一个文件夹把这些源程序依次装入,文件夹的名称是参赛学生的专业班级姓名学号:(例如:08程序631 王伟08011101)。
展开阅读全文