




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、34 北理工的惡龍成績: 10 / 折扣: 0.8背景:最近,北理工出現了一只惡龍,它長著很多頭,而且還會吐火,它將會把北理工燒成廢墟, 于是,校長下令召集全校所有勇士殺死這只惡龍。要殺死這只龍,必須把它所有的頭都砍掉,每個勇士只能砍一個龍頭,龍的每個頭大小都不一樣,一個勇士只有在身高不小于龍頭的直徑的情況下才能砍下它。而且勇士們要求,砍下一個龍頭必須得到和自己身高厘米數一樣的學分。校長想花 最少的學分數殺死惡龍,于是找到你尋求幫助。輸入:第一行 龍頭數 n , 勇士人數 m ( 1<=n, m<=100 ) 接下來 n 行,每行包含一個整數,表示龍頭的直徑 接下來 m 行,每行包
2、含一個整數,表示勇士的身高 l輸出:如果勇士們能完成任務,輸出校長需要花的最小費用;否則輸 出 “ bit is doomed! ” 測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 2 32. 53. 44. 75. 86. 4以文本方式顯示1. 111秒 64M 0 測試用例 2以文本方式顯示1. 2 12. 53. 54. 10以文本方式顯示1. bit is doomed!1秒 64M 0#include<stdio.h>void main() int s=0,t,i,j,m,n,a100,b100,c100; for(i=0;i<=99;i+
3、) ai=0,bi=0,ci=0; scanf("%d%d",&m,&n); for(i=0;i<=m-1;i+) scanf("%d",&ai); for(i=0;i<=n-1;i+) scanf("%d",&bi);if(m>n)printf("bit is doomed!n");else for(i=0;i<=m-1;i+) for(j=i;j<=m-1;j+) if(ai>aj) t=ai,ai=aj,aj=t; for(i=0;i<
4、=n-1;i+) for(j=i;j<=n-1;j+) if(bi>bj) t=bi,bi=bj,bj=t; t=0; for(i=0;i<=m-1;i+) for(j=0;j<=n-1;j+) if(ai<=bj) ct=bj; t+; bj=0; break; if(t<m) printf("bit is doomed!n"); else for(i=0;i<=t;i+) s=s+ci; printf("%dn",s);35 殺雞用牛刀要用遞歸啊!成績: 5 / 折扣: 0.8背景:哈哈!我們終于學了遞歸了,
5、現在大家一定感到非常有意思吧,那個典型的“漢諾塔”問題,一個非常短的程序居然可以完成如此復雜的工作,真是神奇啊!來吧,讓我們也動手編寫一個遞歸程序,當然,我們要編寫的不可能太復雜。功能:求整數 n 到 m 區間的累加和,其中n<=m。輸入:區間的起始點n 區間的終止點m輸出:累加和要求:使用遞歸算法完成。如此簡單的題目當然要有隱含的測試用例啦,就3個,看看誰能猜出來。測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 1 10以文本方式顯示1. The sum from 1 to 10 is 55.1秒 64M 0 測試用例 2以文本方式顯示1. 10 15以文本方
6、式顯示1. The sum from 10 to 15 is 75.1秒 64M 0 #include<stdio.h>int sum(int m,int n)int i;if(n=m)i=n;elsei=n+sum(m,n-1);return(i);void main()int m,n;scanf("%d%d",&m,&n);printf("The sum from %d to %d is %d.n",m,n,sum(m,n);H13:安全的密碼(選做)成績: 5 / 折扣: 0.8隨著電子設備的廣泛運用,密碼也漸漸融入每個
7、人的生活。保護好密碼,不僅關系到個人隱私,更關系到個人的財產和安全。一個安全的密碼,最好由大小寫字母、數字或符號組成。包含越多種類的字符,其安全性就越高。同時密碼還需要有一定的長度,通常至少要由六個以上的字符組成。并不是每個人都喜歡這樣復雜的密碼,很多人在設置密碼的時候,喜歡使用自己的名字或者生日,但這是很大的安全隱患。任務林曉煒正在設計一個網絡交易系統,為了保證用戶的密碼安全,他需要一個程序,判斷用戶自己設置的密碼是否安全,如果不安全,則給出提示。現在他向你求助,請你幫忙設計一個程序來解決這個問題。應當按照以下的規則來判斷密碼是否安全:1. 如果密碼長度小于 6 位,則不安全 2. 如果組成
8、密碼的字符只有一類,則不安全 3. 如果組成密碼的字符有兩類,則為中度安全 4. 如果組成密碼的字符有三類或以上,則為安全 通常,可以認為數字、大寫字母、小寫字母和其它符號為四類不同的字符。輸入輸入的第一行是一個整數 N,表明后面有多少組密碼。隨后的 N 行輸入包括 N 個密碼,每個密碼的長度均小于 20 個字符。輸出針對每一個密碼判斷并輸出它是否安全。對于不安全的密碼輸出 "Not Safe",對于中度安全的密碼輸出 "Medium Safe",對于安全的密碼輸出 "Safe"輸入樣例41234abcdefABC1231#c3Gh輸
9、出樣例Not SafeNot SafeMediumSafe Safe測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 102. abcDEF3. ABC4. qw5. 6. ABCDEFGHIJKLMNOPQRST7. 123456789012345678908. 1aB9. 1 B10. a X 11. qwe123%&ABC以文本方式顯示1. Medium Safe2. Not Safe3. Not Safe4. Not Safe5. Not Safe6. Not Safe7. Safe8. Not Safe9. Safe10. Safe1秒 64M 0 #
10、include<stdio.h> #include<string.h> char check(char s) int strlength; strlength=strlen(s); int n4=0,0,0,0; int kind=0,i; if(strlength<6) return 'n'/not safe else for(i=0;i<strlength;i+) if(si>='0'&&si<='9')n0+; else if(si>='A'&&a
11、mp;si<='Z')n1+; else if(si>='a'&&si<='z')n2+; else n3+; for(i=0;i<4;i+) if(ni!=0)kind+; if(kind=1) return 'n'/not safe if(kind=2) return 'm'/Medium Safe return 's'/Safe void main() int N,i; char level; scanf("%dn",&N);
12、 char str50; for(i=0;i<N;i+) gets(str); level=check(str); switch(level) case 'n':printf("Not Safen"); break; case 'm':printf("Medium Safen"); break; case 's':printf("Safen");break; H14:身份證的奧秘(選做)成績: 5 / 折扣: 0.8背景 18位身份證標準在國家質量技術監督局于1999年7月1日實施
13、的GB11643-1999公民身份號碼中做了明確的規定。 GB11643-1999公民身份號碼為GB11643-1989社會保障號碼的修訂版,其中指出將原標準名稱"社會保障號碼"更名為"公民身份號碼",另外GB11643-1999公民身份號碼從實施之日起代替GB11643-1989。GB11643-1999公民身份號碼主要內容如下: 一、范圍 該標準規定了公民身份號碼的編碼對象、號碼的結構和表現形式,使每個編碼對象獲得一個唯一的、不變的法定號碼。 二、編碼對象 公民身份號碼的編碼對象是具有中華人民共和國國籍的公民。 三、號碼的結構和表示形式 1、號碼的結
14、構 公民身份號碼是特征組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。 2、地址碼 表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按GB/T2260的規定執行。 3、出生日期碼 表示編碼對象出生的年、月、日,按GB/T7408的規定執行,年、月、日代碼之間不用分隔符。 4、順序碼 表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。 5、校驗碼 (1)十七位數字本體碼加權求和公式 S = Sum(Ai * Wi), i = 0, .
15、, 16 ,先對前17位數字的權求和 Ai: 表示第i位置上的身份證號碼數字值 Wi: 表示第i位置上的加權因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (2)計算模 Y = mod(S, 11) (3)通過模得到對應的校驗碼 Y: 0 1 2 3 4 5 6 7 8 9 10 校驗碼: 1 0 X 9 8 7 6 5 4 3 2 四、舉例如下: 北京市朝陽區:廣東省汕頭市:15位的身份證號升級辦法: 15位的身份證號:dddddd yymmdd xx p 18位的身份證號:
16、dddddd yyyymmdd xx p y · 其中dddddd為地址碼(省地縣三級) · yyyymmdd yymmdd 為出生年月日 · xx順號類編碼 · p性別 15 位的 yy 年升為 18 位后,變成 19yy年,但對于百歲以上老人, 則為 18yy 年,此時,他們的最后三位順序碼為996, 997, 998 或 999 來標記。 輸入 輸入n組身份證號碼,第一行為個數,以后每行為身份證號碼。 輸出 如果輸入的身份證號碼為15位,則將其升級為18位后顯示輸出;否則判斷其是否為合法身份證號,并逐行輸出。 測試輸入期待的輸出時間限制內存限制額外
17、進程測試用例 1以文本方式顯示1. 42. 3506221979041303313. 11010519491231002X4. 1101054912310025. 110105491231996以文本方式顯示1. Invalid2. Valid3. 11010519491231002X4. 1101051849123199651秒 64M 0 #include<stdio.h> #include<string.h> void shengji(char str) int n=strlen(str);/n=15 char newstr19; int i; for(i=0;i
18、<6;i+) newstri=stri;/前六位地址碼(省地縣三級) for(i=8;i<17;i+)/newstr中的到第位 newstri=stri-2; newstr6='1' char temp4; temp0=str12; temp1=str13; temp2=str14; temp3='0' if(strcmp(temp,"996")=0|strcmp(temp,"997")=0|strcmp(temp,"998")=0|strcmp(temp,"999")=
19、0) newstr7='8' else newstr7='9' /下面是校檢碼,0的ascii碼值是 int Wi17=7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2;/權重 int S=0; for(i=0;i<17;i+) S=S+Wii*(int)(newstri)-48); int y; y=S%11; switch(y) case 0:newstr17='1'break; case 1:newstr17='0'break; case 2:newstr17='X'break;
20、case 3:newstr17='9'break; case 10:newstr17='2'break; default: newstr17=(char)(12-y+48);break; newstr18='0' strcpy(str,newstr); int IscheckedValid(char str) int n=strlen(str);/n=18 int num17;/保存前位 int i; for(i=0;i<17;i+)/保存前位 numi=(int)stri-48; /下面是校檢碼,0的ascii碼值是 int Wi17=7
21、,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2;/權重 int S=0; for(i=0;i<17;i+) S=S+Wii*numi; int y; y=S%11; char lastnum; switch(y) case 0:lastnum='1'break; case 1:lastnum='0'break; case 2:lastnum='X'break; case 3:lastnum='9'break; case 10:lastnum='2'break; default: last
22、num=(char)(12-y+48);break; if(lastnum=str17) return 1; else return 0;/0表示不合法 void run(char str) int n=strlen(str); if(n=15) shengji(str); printf("%sn",str); else if(n=18) if(!IscheckedValid(str) printf("Invalidn"); else printf("Validn"); else printf("Invalidn"
23、); void main() int n; scanf("%dn",&n); char str25; for(int i=0;i<n;i+) gets(str); run(str); 36 科學記數法成績: 10 / 折扣: 0.8對于非常大或者非常小的數據,我們通常用科學記數法來表示。例如在科技文獻和電腦中經常遇到的 2.3×106 (計算機中的科學記數法表示為:2.3E6),或者 9.18×10-5 (科學記樹法表示:9.18E-5)這種類型的數據。 輸入:用科學記數法表示的數據。即為符合C語言表示的科學記數法表示。輸出:該數據的雙精度
24、表示說明:輸入數據的精度不高于小數點后50位。輸入數據時,在實數和冪之間有空格進行分隔,空格個數不定。結果保留到小數點后8位,如不足8位用0補足,超過8位則截斷,不進行四舍五入的處理。測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 1.2345 E 3以文本方式顯示1. 1234.500000001秒 64M 0 測試用例 2以文本方式顯示1. 1.2345 e-3以文本方式顯示1. 0.001234501秒 64M 0 測試用例 3以文本方式顯示1. 2.23456789123456789123456789 e 20以文本方式顯示1. 223456789123456
25、789123.456789001秒 64M 0 測試用例 4以文本方式顯示1. 1 E 0以文本方式顯示1. 1.000000001秒 64M 0 測試用例 6以文本方式顯示1. 2.2345678901234567890 E 1以文本方式顯示1. 22.345678901秒 64M 0 #include "stdio.h" int main() int p=-1,n,i=0,j,sign=0,flag=0;char c,s100; while(scanf("%c",&c)&&c!='e'&&c!=
26、'E') if(c='.')p=i-1; else if(c<='9'&&c>='0')si=c,i+; else if(c='-')sign=1; else if(p<0)p=i-1; for(j=i;j<=60;j+) sj='0' scanf("%d",&n); p+=n; if(sign)printf("-"); if(p<0) p=-p-1; printf("0."); for
27、(i=1;i<=p&&i<=8;i+) printf("0"); for(i=1;i<=8-p;i+) printf("%c",si-1); else i=0; while(i<=p) if(si='0'&&!flag&&i<p)i+; elseflag=1;printf("%c",si+); printf("."); for(j=1;j<=8;j+) printf("%c",si+); prin
28、tf("n"); return 0; 37 大數分解成績: 5 / 折扣: 0.82007級在“計算機科學導論”的期末考試中有一道試題。下面請你看看那題目應該如何編寫。從鍵盤輸入的一個大于 1 的整數,通過算法將該整數分解為若干因子的乘積。輸入:一個正整數。輸出:分解后的各個因子。測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 24以文本方式顯示1. 22. 23. 24. 31秒 64M 0 測試用例 2以文本方式顯示1. 17以文本方式顯示1. 171秒 64M 0 測試用例 3以文本方式顯示1. 15以文本方式顯示1. 32. 51秒 64M
29、 0 測試用例 4以文本方式顯示1. 3以文本方式顯示1. 31秒 64M 0 #include <stdio.h> void main() int n,i; scanf("%d",&n); for(i=2;n>1;) if(n%i=0) printf("%dn",i);n/=i; else i+; 38 回文字符串遞歸成績: 5 / 折扣: 0.8有一種特殊形式的字符串,其正反序相同,被稱為“回文字符串”。例如LeveL就是一個回文字符串。輸入:字符串輸出:Yes或者No說明:如輸出Yes,說明輸入的字符串是一個回文字符串輸出
30、No,說明輸入的字符串不是一個回文字符串請使用遞歸算法實現。測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. LeveL以文本方式顯示1. Yes1秒 64M 0 #include <stdio.h> #include<string.h> int fun(char str,int a,int b) if(stra!=strb) return 0 ; else if(a=b|a+1=b&&stra+1=strb) return 1; else if(stra=strb) return 1&&fun(str,a+1,b
31、-1); void main() char str100; scanf("%s",str); int n; n=strlen(str); switch(fun(str,0,n-1) case 1:printf("Yesn");break; case 0:printf("Non");break; 39 求最大公約數遞歸成績: 5 / 折扣: 0.8請使用遞歸算法計算正整數n和m的最大公約數GCD(n,m)。= m 當 m<=n 且 n mod m =0GCD(N,M) = GCD(m,n) 當n<m時= GCD(m, n m
32、od m) 其他輸入:n和m輸出:n和m的最大公約數測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 24 48以文本方式顯示1. 241秒 64M 0 測試用例 2以文本方式顯示1. 13 15以文本方式顯示1. 11秒 64M 0 #include <stdio.h> int gcd(int n,int m) if(m<=n&&n%m=0) return m; else if(n<m) return gcd(m,n); else return gcd(m,n%m); void main() int n,m; scanf(&qu
33、ot;%d%d",&n,&m); printf("%dn",gcd(n,m); 40 求序列之和遞歸成績: 5 / 折扣: 0.8請使用遞歸算法求下列序列的前n項之和。1 + 1/2 - 1/3 + 1/4 -1/5 .輸入:n輸出:序列的前n項和(精確到小數點之后第6位)測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 1以文本方式顯示1. 11秒 64M 0 測試用例 2以文本方式顯示1. 2以文本方式顯示1. 1.5000001秒 64M 0 測試用例 3以文本方式顯示1. 3以文本方式顯示1. 1.1666671秒
34、64M 0 #include <stdio.h> double fun(int n) if(n=1) return 1; if(n%2=0) return fun(n-1)+1.0/n; if(n%2=1) return fun(n-1)-1.0/n; void main() int n,m; scanf("%d",&n); if(n=1) printf("1n"); else printf("%0.6lfn",fun(n); 42 子串反向遞歸成績: 10 / 折扣: 0.8請編寫一個遞歸函數 reverse(c
35、har str, int start, int end ) ,該函數的功能是將串 str 中下標從 start 開始到 end 結束的字符顛倒順序。假設 start 和 end 都在合理的取值范圍。例如: 執行前:str="0123456";start=1 ;end=4 執行后:strr="0432156" 要求在該函數中不使用新的數組,沒有循環。注意:只需要編寫遞歸函數 reverse,系統中已經設置好了main函數。預設代碼前置代碼view plaincopy to clipboardprint?1. /* PRESET CODE BEGIN - N
36、EVER TOUCH CODE BELOW */ 2.3. #include <stdio.h> 4. int main( ) 5. char str100; 6. int start, end; 7. gets(str); 8. scanf("%d%d", &start, &end); 9. reverse( str, start, end ); 10. printf("%sn", str); 11. return 0; 12. 13.14. /* PRESET CODE END - NEVER TOUCH CODE ABO
37、VE */ 測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 01234562. 1 4以文本方式顯示1. 04321561秒 64M 0 測試用例 6以文本方式顯示1. 01234562. 6 10以文本方式顯示1. 01234561秒 64M 0 測試用例 7以文本方式顯示1. 01234562. 0 10以文本方式顯示1. 65432101秒 64M 0 /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include <stdio.h>int main( )char str100;int start,
38、end;gets(str);scanf("%d%d", &start, &end);reverse( str, start, end );printf("%sn", str);return 0;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */void reverse( char str, int start,int end ) int i=start,j=end,p=0; char temporary; while(strp!='0')p+;if(start<p&&
39、amp;end<p)for(;i<=j;i+,j-) temporary=stri; stri=strj; strj=temporary; else if(start<p&&end>=p)j=p-1; for(;i<=j;i+,j-) temporary=stri; stri=strj; strj=temporary; H17:高精度加減法(選作)成績: 10 / 折扣: 0.8背景:計算機所能完成的一個基本功能就是完成數據的計算,譬如加法、減法等等。但是在任何一種計算機上,計算中能夠使用的數字都是有一定范圍的,超過了范圍,就沒法得到精確的結果。你
40、現在接受了一個任務,要編寫一個高精度計算器的核心部分。所謂高精度計算器,就是可以計算很大很大的數據的計算器。輸入:輸入的第一行是一個正整數,表示下面有幾組數據需要計算。之后的每一行是兩個十進制的正整數和一個運算符,每個整數可以由最多 500 個數字組成。運算符可以是加號或者減號。輸出:對應著輸入的每一行數據,輸出計算的結果,每個結果占一行。測試輸入期待的輸出時間限制內存限制額外進程測試用例 1以文本方式顯示1. 22. 213914+234661233. 32862934-23481243以文本方式顯示1. 236800372. 93816911秒 64M 0 測試用例 2以文本方式顯示1.
41、32. 483291674192731231+12361872368127351233. 123129678463287562378-289356872648712364. 999999999+1以文本方式顯示1. 17194789110054663542. 1231007427760226911423. 10000000001秒 64M 0 測試用例 3以文本方式顯示1. 112. 56789+567893. 45555+444454. 1+123455. 12345+16. 98765-987607. 12345-98768. 12345-123459. 12345-1234610. 1-
42、5432111. 0-012. 0+0以文本方式顯示1. 1135782. 900003. 123464. 123465. 56. 24697. 08. -19. -5432010. 011. 01秒 64M 0 #include<stdio.h> #include <conio.h>#include <string.h> #include "stdlib.h"void main() int n=0,i=0,j=0,k=0,b=0; char a3500=0; int n1=0,n2=0; char s500=0; int n3=0; int c=0,c1=0; int temp=0; char op; char str1001=0; char *result; scanf("%d",&n); result=(char *)malloc(501*n);/根據輸入的n申請內存空間 *result='0' /*每次循環都要初始化*/ for(;i<n;i+) /gets(str); for(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《噢!蘇珊娜》(教學設計)-2024-2025學年人音版(2012)音樂三年級上冊
- 創業實訓心得體會(19篇)
- 企業年會發言稿簡短(16篇)
- 勤儉節約演講稿學生范文(16篇)
- 混凝土檢測人員培訓課件
- 蘇科版八年級數學下冊《12.1二次根式》同步測試題(附答案)
- 全國粵教版信息技術七年級下冊第二單元第十二課《添加交互》教學設計
- 新教師實習心得體會(17篇)
- 《油氣井套管工程檢測技術》課件
- 親子活動心得體會(16篇)
- 公路水運工程施工企業主要負責人和安全生產管理人員考核大綱和模擬試題庫1
- 互動硬件體感交互設備
- 四川省成都市2022-2023學年五年級下學期數學期末試卷(含答案)
- 國開(河北)2024年《社會學概論》形考作業1-4答案
- 法學概論(第七版) 課件全套 谷春德 第1-7章 我國社會主義法的基本理論 - 國際法
- 4月25日全國兒童預防接種宣傳日積極接種疫苗保護兒童健康課件
- 對電梯維保工作總結
- 民營醫院的發展策劃書
- 北師大版三年級下冊6-2《分一分(二)》分層作業
- 就業引航揚帆未來
- 2024年TWI培訓課件(共50張)pptx
評論
0/150
提交評論