國信藍點杯軟件專業(yè)人才設(shè)計與開發(fā)大賽選拔賽上機編程試題.doc
2011“國信藍點杯”全國軟件專業(yè)人才設(shè)計與開發(fā)大賽上機編程試題一、 倒序數(shù)是將一個阿拉伯數(shù)的各位上的數(shù)字以逆序的形式寫成的數(shù)。該阿拉伯數(shù)的第一位變成最后位,最后位變成第一位。例如數(shù)1245被寫成5421。注意產(chǎn)生的新數(shù)字前邊所有的數(shù)字0是被略去的。倒序數(shù)的尾部無多余的數(shù)字0。請將阿拉伯數(shù)轉(zhuǎn)變?yōu)榈剐驍?shù)。輸入輸入的第一行僅有一個正整數(shù)n,表示有n組測試數(shù)據(jù)。下來有接n行,每一行是一組測試數(shù)據(jù),長度不超過100。每一行上的字符串表示一個非負整數(shù),它是你需要轉(zhuǎn)換的數(shù)。輸出對每一組測試數(shù)據(jù)在一行上輸出倒序數(shù),該倒序數(shù)中前導(dǎo)的數(shù)字0被略去了。輸入樣例 輸出樣例3 24 4243400 434305 503 (25分)#include"stdio.h"void fan(int m)int j,k,i=0;int a100=0;while(m)ai=m%10;m=m/10;i+;k=i;printf("轉(zhuǎn)置后的數(shù)據(jù):n");for(i=0;i<k;i+)if(ai=0)j=i;elsebreak;for(j=0;i<k;i+)printf("%d",ai);printf("n");main()int m;printf("輸入原始數(shù)據(jù) :m n");scanf("%d",&m);fan(m);二、 對一個正整數(shù)n,求出n!中末尾0的個數(shù)。輸入輸入有若干行。每一行上有一個整數(shù)T,是測試數(shù)據(jù)組數(shù),接著有T行,每一行包含一個確定的正整數(shù)n(n1000000000)。輸出對輸入行中的每一個數(shù)據(jù)n,輸出一行,其內(nèi)容是n!中末尾0的個數(shù)。輸入樣例 輸出樣例3 3 0100 241024 253 (25分)#include"stdio.h"int 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("輸入目標數(shù) m :");scanf("%d",&m);k=jie(m);printf("m的階層為:%ld n",k); count=fan(k);printf("最終0的個數(shù)為%d n",count);三、 給定兩個字符串a(chǎn)和b,定義式子a*b表示兩個字符串的連接。例如a=“abc”,b=“def”,則a*b=“abcdef”。如果將連接看成乘法,則按照普遍的方法,一個非負整數(shù)的冪表示為:a0=“”(the empty string),a(n+1)=a*(an)。輸入輸入字符串s,每組樣例一行,s為可打印字符。s的長度在11000000之間。最后一組數(shù)據(jù)后為句號(.)。 輸出每個字符串s輸出最大的n滿足s=an,其中a為任意字符串。輸入樣例 輸出樣例 abcd 1 aaaa 4 ababab 3 (25分)#include"stdio.h"#define max 100#include"string.h"main()int i,j,k,flog,len;char amax;printf("請輸入數(shù)據(jù)");gets(a); len=strlen(a);for(k=1;k<len;k+)for(i=0;i<len-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(j<i+k);if(flog=1)break;if(flog=1)printf(" dsfsd= %d n",k);break;if(k=len)printf("結(jié)果=%d n",len);elseprintf("結(jié)果=%d n",len/k);四、 若兩個正整數(shù)的和為素數(shù),則這兩個正整數(shù)稱之為“素數(shù)伴侶”,如2和5、6和13,它們能應(yīng)用于通信加密?,F(xiàn)在密碼學(xué)會請你設(shè)計一個程序,從已有的N(N為偶數(shù))個正整數(shù)中挑選出若干對組成“素數(shù)伴侶”,挑選方案多種多樣,例如有4個正整數(shù):2,5,6,13,如果將5和6分為一組中只能得到一組“素數(shù)伴侶”,而將2和5、6和13編組將得到兩組“素數(shù)伴侶”,能組成“素數(shù)伴侶”最多的方案稱為“最佳方案”,當然密碼學(xué)會希望你尋找出“最佳方案”。輸入輸入文件的第一行有一個正偶數(shù)N(N200),表示待挑選的自然數(shù)的個數(shù)。第二行給出N個不超過30000的正整數(shù),相鄰的兩個數(shù)之間用一個空格分開。輸出對每個正整數(shù),輸出一個整數(shù)K,表示你求得的“最佳方案”組成“素數(shù)伴侶”的對數(shù)。輸入樣例 輸出樣例4 22 5 6 13 (25分)#include"stdio.h"#define max 100int shushu(int m)int i,k=0;for(i=2;i<m-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("輸入組合數(shù)的個數(shù) m n");scanf("%d",&m);printf("請依次輸入數(shù)字以 ,分開n");for(i=0;i<m;i+)scanf("%d,",&ai);j=i;for(i=0;i<j;i+)for(k=i+1;k<j;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(" 最佳對數(shù):%dn",count/2);注: 本次試題滿分100分,開發(fā)平臺是Visual C+6.0(英文版)/Eclipse(英文版)。提交的時候只需提交源程序,這四個題目的源程序分別依次以1.cpp/1.java、2.cpp/2.java、3.cpp/3.java、4.cpp/4.java命名,然后自建一個文件夾把這些源程序依次裝入,文件夾的名稱是參賽學(xué)生的專業(yè)班級姓名學(xué)號:(例如:08程序631 王偉08011101)。