北京理工大學(xué)2013級(jí)C程序設(shè)計(jì)非信息類(lèi)答案part2_第1頁(yè)
北京理工大學(xué)2013級(jí)C程序設(shè)計(jì)非信息類(lèi)答案part2_第2頁(yè)
北京理工大學(xué)2013級(jí)C程序設(shè)計(jì)非信息類(lèi)答案part2_第3頁(yè)
北京理工大學(xué)2013級(jí)C程序設(shè)計(jì)非信息類(lèi)答案part2_第4頁(yè)
北京理工大學(xué)2013級(jí)C程序設(shè)計(jì)非信息類(lèi)答案part2_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

北京理工大學(xué)2013級(jí)C程序設(shè)計(jì)非信息類(lèi)答案part249.【小學(xué)遞歸】殺雞用牛刀——要用遞歸啊!成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月背景:

哈哈!我們終于學(xué)了遞歸了,現(xiàn)在大家一定感到非常有意思吧,那個(gè)典型的“漢諾塔”問(wèn)題,一個(gè)非常短的程序居然可以完成如此復(fù)雜的工作,真是神奇??!來(lái)吧,讓我們也動(dòng)手編寫(xiě)一個(gè)遞歸程序,當(dāng)然,我們要編寫(xiě)的不可能太復(fù)雜。功能:

求整數(shù)n到m區(qū)間的累加和,其中n<=m。輸入:區(qū)間的起始點(diǎn)n

區(qū)間的終止點(diǎn)m輸出:

累加和要求:使用遞歸算法完成。如此簡(jiǎn)單的題目當(dāng)然要有隱含的測(cè)試用例啦,就3個(gè),看看誰(shuí)能猜出來(lái)。

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例11

10?The

sum

from

1

to

10

is

55.?1秒64M0測(cè)試用例210

15?The

sum

from

10

to

15

is

75.?1秒64M0int

sum(int

m,int

n)

{if(m==n)

return

m;int

i;for(i=n;i>=m;i--)

return

i+sum(m,i-1);}

#include

<stdio.h>

int

main(){int

m,n,s=0;scanf("%d%d",&m,&n);s=sum(m,n);

printf("The

sum

from

%d

to

%d

is

%d.\n",m,n,s);return

0;}

50.【中學(xué)】求最大公約數(shù)——遞歸成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月請(qǐng)使用遞歸算法計(jì)算正整數(shù)n和m的最大公約數(shù)GCD(n,m)。

=m

當(dāng)m<=n且nmodm=0

GCD(N,M)=GCD(m,n)

當(dāng)n<m時(shí)

=GCD(m,nmodm)

其他輸入:n和m輸出:

n和m的最大公約數(shù)

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例124

48?24?1秒64M0測(cè)試用例213

15?1?1秒64M0#include

<stdio.h>

int

f(int

x,int

y)

{int

s,t;t=x%y;

if(t==0)

s=y;else

s=f(y,t);

return

s;}

int

main()

{int

m,n;scanf("%d%d",&m,&n);

printf("%d\n",f(m,n));return

0;}51.【數(shù)列遞歸】求序列之和——遞歸成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月請(qǐng)使用遞歸算法求序列1+1/2-1/3+1/4

-1/5......的前n項(xiàng)之和。輸入:n輸出:序列的前n項(xiàng)和(精確到小數(shù)點(diǎn)之后第6位)

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例11?1?1秒64M0測(cè)試用例22?1.500000?1秒64M0測(cè)試用例33?1.166667?1秒64M0#include<stdio.h>

float

sum(int

n)

{float

s;if(n==1)

s=1.0;

else

if(n%2==0)

s=sum(n-1)+1.0/n;

else

s=sum(n-1)-1.0/n;return

s;}

int

main()

{int

n;float

s;scanf("%d",&n);

if(n==1)

printf("1\n");

else

{s=sum(n);printf("%.6f\n",s);}}

52.【大學(xué)】函數(shù)遞歸*成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月編寫(xiě)一個(gè)函數(shù),使用遞歸算法求滿足下述定義的整數(shù)序列的第n項(xiàng)。1當(dāng)n>=0且n<=4時(shí)f(n)=f(n-1)+f(n-3)當(dāng)n>4且n為偶數(shù)時(shí)f(n-2)+f(n-4)當(dāng)n>4且n為奇數(shù)時(shí)-1其他函數(shù)原型如下:intfindf(intn);參數(shù)說(shuō)明:n項(xiàng)數(shù);返回值是第n項(xiàng)值。例如輸入:10,輸出:8預(yù)設(shè)代碼前置代碼/*

PRESET

CODE

BEGIN

-

NEVER

TOUCH

CODE

BELOW

*/

#include

<stdio.h>

int

main()

{

int

n,s,

findf(

int

);

scanf("%d",

&n);

s

=

findf(n);

printf("%d\n",

s);

return

0;

}

/*

PRESET

CODE

END

-

NEVER

TOUCH

CODE

ABOVE

*/

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例110?8?1秒64M0int

findf(int

n)

{if(n>=0&&n<=4)

return

1;if(n<0)

return

-1;

if(n>4&&n%2==0)

return

findf(n-1)+findf(n-3);

if(n>4&&n%2==1)

return

findf(n-2)+findf(n-4);}

53.【大學(xué)遞歸】求解平方根成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月小明上了大學(xué),學(xué)習(xí)了用求解平方根的迭代公式。其中:p為x的近似平方根,e是結(jié)果允許的誤差。輸入:x,e輸出:p

保留小數(shù)點(diǎn)后8位。#include<stdio.h>

#include<math.h>

float

f(float

x,float

p,float

e)

{if(fabs(p*p-x)<e)

return

p;

else

return

f(x,(p+x/p)/2,e);}

int

main()

{float

p,e,x;scanf("%f%f",&x,&e);

p=f(x,x,e);printf("%.8f\n",p);return

0;}

H12:安全的密碼(選做)成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月隨著電子設(shè)備的廣泛運(yùn)用,密碼也漸漸融入每個(gè)人的生活。保護(hù)好密碼,不僅關(guān)系到個(gè)人隱私,更關(guān)系到個(gè)人的財(cái)產(chǎn)和安全。一個(gè)安全的密碼,最好由大小寫(xiě)字母、數(shù)字或符號(hào)組成。包含越多種類(lèi)的字符,其安全性就越高。同時(shí)密碼還需要有一定的長(zhǎng)度,通常至少要由六個(gè)以上的字符組成。并不是每個(gè)人都喜歡這樣復(fù)雜的密碼,很多人在設(shè)置密碼的時(shí)候,喜歡使用自己的名字或者生日,但這是很大的安全隱患。任務(wù)林曉煒正在設(shè)計(jì)一個(gè)網(wǎng)絡(luò)交易系統(tǒng),為了保證用戶的密碼安全,他需要一個(gè)程序,判斷用戶自己設(shè)置的密碼是否安全,如果不安全,則給出提示。現(xiàn)在他向你求助,請(qǐng)你幫忙設(shè)計(jì)一個(gè)程序來(lái)解決這個(gè)問(wèn)題。應(yīng)當(dāng)按照以下的規(guī)則來(lái)判斷密碼是否安全:如果密碼長(zhǎng)度小于6位,則不安全;如果組成密碼的字符只有一類(lèi),則不安全;如果組成密碼的字符有兩類(lèi),則為中度安全;如果組成密碼的字符有三類(lèi)或以上,則為安全通常,可以認(rèn)為數(shù)字、大寫(xiě)字母、小寫(xiě)字母和其它符號(hào)為四類(lèi)不同的字符。輸入輸入的第一行是一個(gè)整數(shù)N,表明后面有多少組密碼。隨后的N行輸入包括N個(gè)密碼,每個(gè)密碼的長(zhǎng)度均小于20個(gè)字符。輸出針對(duì)每一個(gè)密碼判斷并輸出它是否安全。對(duì)于不安全的密碼輸出"NotSafe",對(duì)于中度安全的密碼輸出"MediumSafe",對(duì)于安全的密碼輸出"Safe"輸入樣例4

1234

abcdef

ABC123

1#c3Gh輸出樣例NotSafe

NotSafe

Medium

SafeSafe

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例110?abcDEF?ABC?qw?`?ABCDEFGHIJKLMNOPQRST?12345678901234567890?

1aB?1

B?a

X

?qwe123%^&ABC?Medium

Safe?Not

Safe?Not

Safe?Not

Safe?Not

Safe?Not

Safe?Safe?Not

Safe?Safe?Safe?1秒64M0#include

<stdio.h>

#include

<string.h>

int

main(void)

{int

n,i,j,x,m,b[4];char

a[100];scanf("%d",&n);

for

(i=1;i<=n;i++){gets(a);if

(i==1)

gets(a);x=strlen(a);

if

(x<6)

{printf("Not

Safe\n");continue;}

b[0]=0;b[1]=0;b[2]=0;b[3]=0;for

(j=0;j<=x-1;j++)

{if

(48<=a[j]&&a[j]<=57)

b[0]=1;

else

if

(65<=a[j]&&a[j]<=91)

b[1]=1;

else

if

(97<=a[j]&&a[j]<=123)

b[2]=1;else

b[3]=1;

if

(a[0]+a[1]+a[2]+a[3]==4)

break;}m=b[0]+b[1]+b[2]+b[3];

switch

(m)

{case

1:printf("Not

Safe\n");break;case

2:printf("Medium

Safe\n");break;

case

3:printf("Safe\n");break;case

4:printf("Safe\n");}}return

0;}H13:編碼問(wèn)題(選作)成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月

設(shè)有一個(gè)整形數(shù)組A[0..N-1];存放的元素為0~N-1(1<N<=10)之間的整數(shù),且A[i]≠A[j](i≠j)。例如,當(dāng)N=6時(shí),有:A=(4,3,0,5,1,2)。此時(shí),數(shù)組A的編碼定義如下:A[0]編碼為0;A[i]編碼為:在A[0],A[1],…,A[i-1]中比A[i]的值小的個(gè)數(shù)(i=1,2,…,N-1)

例如上面數(shù)組A的編碼為:B=(0,0,0,3,1,2)

若給出數(shù)組A,則可求出其編碼。同理,若給出數(shù)組A的編碼,可求出A中的原數(shù)據(jù)。輸入:推導(dǎo)方向(取值為1或2,如為1,則表示根據(jù)數(shù)組求數(shù)組編碼;如為2,則表示根據(jù)編碼反求數(shù)組)數(shù)組個(gè)數(shù)

數(shù)組或數(shù)組編碼元素輸出:數(shù)組編碼、或數(shù)組本身(元素之間以空格分隔)

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例11?6?4

3

0

5

1

2?0

0

0

3

1

2?1秒64M0測(cè)試用例21?8?1

0

3

2

5

6

7

4?0

0

2

2

4

5

6

4?1秒64M0測(cè)試用例42?6?0

0

2

3

1

3?2

0

4

5

1

3?1秒64M0#include<stdio.h>

int

main()

{int

mode,n,i,j,s,a[100],b[100];

static

int

c[100];

scanf("%d",&mode);scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%d",

&a[i]);

if(mode==1){for(i=1,b[0]=0;i<n;i++)

for(j=0,b[i]=0;j<i;j++)if(a[i]>a[j])

b[i]++;}

else

{for(i=n-1;i>=0;i--){for(j=0,s=0;s<a[i]+1;j++)

if

(c[j]==0)

s++;b[i]=j-1;c[b[i]]=1;}}

for(i=0;i<n-1;i++)

printf("%d

",b[i]);

printf("%d\n",b[n-1]);return

0;}54.回文字符串——遞歸(請(qǐng)使用遞歸算法實(shí)現(xiàn)。)成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月

有一種特殊形式的字符串,其正反序相同,被稱(chēng)為“回文字符串”。例如LeveL就是一個(gè)回文字符串。輸入:字符串輸出:Yes或者No說(shuō)明:如輸出Yes,說(shuō)明輸入的字符串是一個(gè)回文字符串。輸出No,說(shuō)明輸入的字符串不是一個(gè)回文字符串

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例1LeveL?Yes?1秒64M0測(cè)試用例10?Yes?1秒64M0#include

<stdio.h>

#include

<string.h>

int

f(char

x,char

y)

{int

p=x==y;return

p;}

int

main(){char

a[500];int

i,j=1,k;fgets(a,500,stdin);k=strlen(a)-1;if(k==0)

printf("Yes\n");

else

{for(i=0;i<=k/2;i++)

j*=f(a[i],a[k-1-i]);

if(j==1)

printf("Yes\n");else

printf("No\n");}}55.子串反向——遞歸成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月請(qǐng)編寫(xiě)一個(gè)遞歸函數(shù)reverse(charstr[],intstart,intend),該函數(shù)的功能是將串str中下標(biāo)從start開(kāi)始到end結(jié)束的字符顛倒順序。假設(shè)start和end都在合理的取值范圍。例如:執(zhí)行前:str[]="0123456";start=1;end=4執(zhí)行后:strr[]="0432156"要求在該函數(shù)中不使用新的數(shù)組,沒(méi)有循環(huán)。注意:只需要編寫(xiě)遞歸函數(shù)reverse,系統(tǒng)中已經(jīng)設(shè)置好了main函數(shù)。預(yù)設(shè)代碼前置代碼/*

PRESET

CODE

BEGIN

-

NEVER

TOUCH

CODE

BELOW

*/

#include

<stdio.h>

#include

<stdlib.h>

void

reverse(

);

int

main(

)

{

char

str[100];

int

start,

end;

gets(str);

scanf("%d%d",

&start,

&end);

reverse(

str,

start,

end

);

printf("%s\n",

str);

return

0;

}

/*

PRESET

CODE

END

-

NEVER

TOUCH

CODE

ABOVE

*/

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例10123456?1

4?0432156?1秒64M0測(cè)試用例60123456?6

10?0123456?1秒64M0測(cè)試用例70123456?0

10?6543210?1秒64M0#include<string.h>

void

reverse(char

str[],int

start,int

end)

{char

t;if(end>=strlen(str))

reverse(str,start,end-1);

else

if(start<end)

{t=str[start];str[start]=str[end];str[end]=t;

reverse(str,start+1,end-1);}}

56.【字符】單詞排序成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交是關(guān)閉時(shí)間2014年06月輸入5個(gè)單詞,將它們按從大到小的順序排列后輸出。輸入:5個(gè)單詞輸出:排序后的順序

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例1BASIC?C++?Pascal?C?Fortran?Pascal?Fortran?C++?C?BASIC?1秒64M0#include<stdio.h>

#include<string.h>

int

main(){char

ch[5][26],c[26];int

i,j,k;

for(i=0;i<5;i++)

gets(ch[i]);

for(i=0;i<4;i++)

{k=i;for(j=i+1;j<5;j++)

if(strcmp(ch[k],ch[j])<0)

k=j;

if(k!=i)

{strcpy(c,ch[i]);strcpy(ch[i],ch[k]);strcpy(ch[k],c);}}

for(i=0;i<5;i++)

puts(ch[i]);}

57.【日期】車(chē)輛限行成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月

2012年4月1日,北京是人民政府根據(jù)《中華人民共和國(guó)道路交通安全法》和《北京市實(shí)施〈中華人民共和國(guó)大氣污染防治法〉辦法》有關(guān)規(guī)定,自2012年4月11日起,繼續(xù)對(duì)機(jī)動(dòng)車(chē)實(shí)施按車(chē)牌尾號(hào)工作日高峰時(shí)段區(qū)域限行交通管理措施。

根據(jù)規(guī)定,按車(chē)牌尾號(hào)限行的機(jī)動(dòng)車(chē)車(chē)牌尾號(hào)分為五組,每13周輪換一次限行日,分別為:

(1)自2012年4月9日至2012年7月7日,星期一至星期五限行機(jī)動(dòng)車(chē)車(chē)牌尾號(hào)分別為:3和8、4和9、5和0、1和6、2和7(含臨時(shí)號(hào)牌,機(jī)動(dòng)車(chē)車(chē)牌尾號(hào)為英文字母的按0號(hào)管理,下同);

(2)自2012年7月8日至2012年10月6日,星期一至星期五限行機(jī)動(dòng)車(chē)車(chē)牌尾號(hào)分別為:2和7、3和8、4和9、5和0、1和6;

(3)自2012年10月7日至2013年1月5日,星期一至星期五限行機(jī)動(dòng)車(chē)車(chē)牌尾號(hào)分別為:1和6、2和7現(xiàn)給出2012年4月9日之后的任意日期,如果不考慮國(guó)家統(tǒng)一的公假,只考慮日期一個(gè)因素,請(qǐng)計(jì)算指定日期要限行的車(chē)牌尾號(hào)。(政府的公告確實(shí)有點(diǎn)意思,在時(shí)間銜接上和限號(hào)安排上公告(/GB/14748/17574443.html)與公告(/gzdt/2013-04/02/content_2367908.htm)之間有重疊,顯然,后面的公告是覆蓋前面的公告的,我們計(jì)算的時(shí)候,只能是“理論”上的事情,咱嚴(yán)格按照從2012年4月9日星期一開(kāi)始,每13周進(jìn)行一次輪換計(jì)算就可以了。)

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例12012

7

9?2

and

7.?無(wú)限制64M0測(cè)試用例22012

7

12?5

and

0.?無(wú)限制64M0測(cè)試用例32012

7

14?Free.?無(wú)限制64M0測(cè)試用例52013

4

11?2

and

7.?無(wú)限制64M0測(cè)試用例62014

4

4?5

and

0.?無(wú)限制64M0測(cè)試用例92014

3

31?1

and

6.?無(wú)限制64M0#include<stdio.h>

int

leap_year(int);int

year_days(int);int

days(int,int,int);

int

leap_year(int

year)

{return

((year%4==0&&year%100!=0)||year%400==0)?1:0;}

int

year_days(int

year)

{return

leap_year(year)?366:365;}

int

days(int

year,int

month,int

day)

{int

months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},i;

if(leap_year(year)&&month>2)

day++;

for

(i=1;i<month;i++)

day+=months[i];

return

day;}

int

main()

{int

a,b,c,i,d=0,m;scanf("%d%d%d",&a,&b,&c);

for

(i=2012;i<a;i++)

d+=year_days(i);

d+=days(a,b,c)-days(2012,4,9);m=(d/91)%5;

switch(m)

{case

0:switch((d%91)%7)

{case

0:printf("3

and

8.\n");break;

case

1:printf("4

and

9.\n");break;

case

2:printf("5

and

0.\n");break;

case

3:printf("1

and

6.\n");break;

case

4:printf("2

and

7.\n");break;

case

5:printf("Free.\n");break;

case

6:printf("Free.\n");break;};break;

case

1:switch((d%91)%7)

{case

0:printf("2

and

7.\n");break;

case

1:printf("3

and

8.\n");break;

case

2:printf("4

and

9.\n");break;

case

3:printf("5

and

0.\n");break;

case

4:printf("1

and

6.\n");break;

case

5:printf("Free.\n");break;

case

6:printf("Free.\n");break;};break;

case

2:switch((d%91)%7)

{case

0:printf("1

and

6.\n");break;

case

1:printf("2

and

7.\n");break;

case

2:printf("3

and

8.\n");break;

case

3:printf("4

and

9.\n");break;

case

4:printf("5

and

0.\n");break;

case

5:printf("Free.\n");break;

case

6:printf("Free.\n");break;};break;

case

3:switch((d%91)%7)

{case

0:printf("5

and

0.\n");break;

case

1:printf("1

and

6.\n");break;

case

2:printf("2

and

7.\n");break;

case

3:printf("3

and

8.\n");break;

case

4:printf("4

and

9.\n");break;

case

5:printf("Free.\n");break;

case

6:printf("Free.\n");break;};break;

case

4:switch((d%91)%7)

{case

0:printf("4

and

9.\n");break;

case

1:printf("5

and

0.\n");break;

case

2:printf("1

and

6.\n");break;

case

3:printf("2

and

7.\n");break;

case

4:printf("3

and

8.\n");break;

case

5:printf("Free.\n");break;

case

6:printf("Free.\n");break;};break;}

return

0;}

58.縮寫(xiě)展開(kāi)成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交是關(guān)閉時(shí)間2014年06月在保存字符串時(shí),對(duì)出現(xiàn)在連續(xù)位置的若干個(gè)字符,如這些字符在ASCII表中也是連續(xù)出現(xiàn),則可以將這些字符使用縮寫(xiě)形式進(jìn)行保存,以節(jié)省保存空間。例如用A-Z表示ABCD...XYZ,1-5表示12345,c-f表示cdef。輸入:包含縮寫(xiě)形式的字符串輸出:將縮寫(xiě)形式進(jìn)行還原后的字符串說(shuō)明:只處理大小寫(xiě)字母和數(shù)字,即對(duì)于形如A-9,a-C這樣的縮寫(xiě)不進(jìn)行處理

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例10-9?0123456789?1秒64M0測(cè)試用例2a-z?abcdefghijklmnopqrstuvwxyz?1秒64M0測(cè)試用例3G-I?GHI?1秒64M0測(cè)試用例4ABDG-K035-9abd-h?ABDGHIJK0356789abdefgh?1秒64M0測(cè)試用例52-9a0-77cbdj?23456789a012345677cbdj?1秒64M0測(cè)試用例6asasdasdasdasdA-H987?asasdasdasdasdABCDEFGH987?1秒64M0測(cè)試用例7A-9A-0c-80-A9-0z-aZ-A?A-9A-0c-80-A9-0z-aZ-A?1秒64M0測(cè)試用例8abcdef

ghi

jkl

mn?abcdef

ghi

jkl

mn?1秒64M0測(cè)試用例91.asjfdhlkdsa-7812389=-ert=9-1,..;[[]1`=-=43?1.asjfdhlkdsa-7812389=-ert=9-1,..;[[]1`=-=43?1秒64M0測(cè)試用例101.A-Z?1.ABCDEFGHIJKLMNOPQRSTUVWXYZ?1秒64M0測(cè)試用例111-1?1-1?1秒64M0#include<stdio.h>

#include<string.h>

int

main(){char

a[200];int

i,j;fgets(a,200,stdin);

for(i=0;i<strlen(a);i++)

if(a[i]=='-'){if(a[i-1]==a[i+1])

printf("%c",a[i]);

else

if(a[i-1]>='A'&&a[i+1]<='Z'&&a[i-1]<a[i+1])

for(j=a[i-1]+1;j<=a[i+1]-1;j++)

printf("%c",j);

else

if(a[i-1]>='a'&&a[i+1]<='z'&&a[i-1]<a[i+1])

for(j=a[i-1]+1;j<=a[i+1]-1;j++)

printf("%c",j);

else

if(a[i-1]>='0'&&a[i+1]<='9'&&a[i-1]<a[i+1])

for(j=a[i-1]+1;j<=a[i+1]-1;j++)

printf("%c",j);

else

printf("%c",a[i]);}else

printf("%c",a[i]);}

H14:洗牌(選作)成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月

假設(shè)我們有2n張牌,它們以1,2,...,n,n+1,...,2n編號(hào)并在開(kāi)始時(shí)保持著這種順序。一次洗牌就是將牌原來(lái)的次序變?yōu)閚+1,1,n+2,2,...,2n,n,也就是將原來(lái)的前n張牌放到位置2,4,...,2n,并且將余下的n張牌按照他們?cè)瓉?lái)的次序放到奇數(shù)位置1,3,...,2n-1。已經(jīng)證明對(duì)于任何一個(gè)自然數(shù)n,這2n張牌經(jīng)過(guò)一定次數(shù)的洗牌就回到原來(lái)的次序。但我們不知道對(duì)于一個(gè)特定的n,需要幾次洗牌才能將牌洗回原來(lái)的次序。輸入:牌張數(shù)的一半n,即初始情況下一共有2n張牌,n為int型整數(shù)輸出:將牌洗回原來(lái)的次序所需要的洗牌次數(shù)

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例110?6?1秒64M0測(cè)試用例220?20?1秒64M0測(cè)試用例33?3?1秒64M0測(cè)試用例430?60?1秒64M0測(cè)試用例51?2?1秒64M0測(cè)試用例610000?812?1秒64M0測(cè)試用例74500?2250?1秒64M0#include

<stdio.h>

int

main(void)

{int

n,x,total=1;scanf("%d",&n);x=2;

while

(x!=1){if

(x<=n)

x=x*2;

else

x=2*(x-n)-1;

total=total+1;}

printf("%d\n",total);return

0;}H15:高精度加減法(選作)成績(jī)10開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交否關(guān)閉時(shí)間2014年06月背景:計(jì)算機(jī)所能完成的一個(gè)基本功能就是完成數(shù)據(jù)的計(jì)算,譬如加法、減法等等。但是在任何一種計(jì)算機(jī)上,計(jì)算中能夠使用的數(shù)字都是有一定范圍的,超過(guò)了范圍,就沒(méi)法得到精確的結(jié)果。你現(xiàn)在接受了一個(gè)任務(wù),要編寫(xiě)一個(gè)高精度計(jì)算器的核心部分。所謂高精度計(jì)算器,就是可以計(jì)算很大很大的數(shù)據(jù)的計(jì)算器。輸入:輸入的第一行是一個(gè)正整數(shù),表示下面有幾組數(shù)據(jù)需要計(jì)算。之后的每一行是兩個(gè)十進(jìn)制的正整數(shù)和一個(gè)運(yùn)算符,每個(gè)整數(shù)可以由最多500個(gè)數(shù)字組成。運(yùn)算符可以是加號(hào)或者減號(hào)。輸出:對(duì)應(yīng)著輸入的每一行數(shù)據(jù),輸出計(jì)算的結(jié)果,每個(gè)結(jié)果占一行。

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例12?213914+23466123?32862934-23481243?23680037?9381691?1秒64M0測(cè)試用例21.3?2.483291674192731231+1236187236812735123?3.123129678463287562378-28935687264871236?4.999999999+1?1.1719478911005466354?2.123100742776022691142?3.1000000000?1秒64M0測(cè)試用例311?56789+56789?45555+44445?1+12345?12345+1?98765-98760?12345-9876?12345-12345?12345-12346?1-54321?0-0?0+0?113578?90000?12346?12346?5?2469?0?-1?-54320?0?0?1秒64M0#include<stdio.h>

#include<string.h>

void

main()

{char

z,sign,

a[1010];int

n,

i,

j,

f,

x,

b[1010],

c[1010];

void

add(int

b[1010],int

c[1010],int

f);void

sub(int

b[1010],int

c[1010],int

f);

scanf(

"%d%c",

&n,

&z

);

for(;n>0;n--,printf("\n")

)

{

gets(a);x=strlen(a);

for(i=0;i<1010;i++)

b[i]=c[i]=0;

for(i=x-1,j=0;'0'<=a[i]&&a[i]<='9';i--,j++)

c[j]=a[i]-'0';

f=j;sign=a[i];

for(i--,j=0;i>=0;i--,j++)

b[j]=a[i]-'0';

if(f<j)

f=j;

if(

sign=='+')

add(b,c,f);

else

sub(b,c,f);}}

void

add(int

b[1010],

int

c[1010],

int

f)

{int

i,r,d[1010];

for(i=0,r=0;i<f;i++)

{d[i]=(b[i]+c[i]+r)%10;

r=(b[i]+c[i]+r)/10;}

if(r==1)

printf("1");

for(

i--;

i>=0;

i--)

printf("%d",

d[i]);}

void

sub(

int

b[1010],

int

c[1010],

int

f)

{int

i,r,flag,

d[1010];

for(i=f-1,flag=1;i>=0;i--)

{if(b[i]>c[i])

{flag=1;break;}

else

if(b[i]<c[i])

{flag=-1;break;}}

if(flag==1)

{for(i=0,r=0;i<f;i++)

{d[i]=b[i]-c[i]+r;

if(d[i]<0)

{d[i]=d[i]+10;r=-1;}

else

r=0;}}

if(flag==-1)

{printf("-");

for(i=0,r=0;i<f;i++)

{d[i]=c[i]-b[i]+r;

if(d[i]<0)

{d[i]=d[i]+10;r=-1;}

else

r=0;}}

for(i--;d[i]==0&&i>0;i--)

;

for(;i>=0;i--)

printf("%d",

d[i]);}H16:拱豬計(jì)分(選作)成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年05月允許遲交是關(guān)閉時(shí)間2014年06月背景:拱豬是一種很有趣的撲克牌游戲。即使你不知道它的玩法,你也可以由它的計(jì)分方式來(lái)了解它的趣味性。假設(shè)在此我們僅考慮四個(gè)人的拱豬牌局,本題要求你根據(jù)下面的計(jì)分規(guī)則,在牌局結(jié)束時(shí)計(jì)算四位玩家所得分?jǐn)?shù)。我們分別以S、H、D及C來(lái)代表黑桃,紅心,方塊及梅花,并以數(shù)字1至13來(lái)代表A、2、…、Q、K等牌點(diǎn),例如:H1為紅心A,S13為黑桃K。牌局結(jié)束時(shí),由各玩家持有的有關(guān)計(jì)分的牌(計(jì)分牌)僅有S12(豬),所有紅心牌,D11(羊)及C10(加倍)等16張牌。其它牌均棄置不計(jì)。若未持有這16張牌之任一張則以得零分計(jì)算。若持有C10的玩家只有該張牌而沒(méi)有任何其它牌則得+50分,若除了C10還有其它計(jì)分牌,則將其它計(jì)分牌所得分?jǐn)?shù)加倍計(jì)算。若紅心牌不在同一家,則H1至H13等13張牌均以負(fù)分計(jì),其數(shù)值為-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且S12與D11分別以-100及+100分計(jì)算。若紅心牌H1至H13均在同一家,有下列情形:所有紅心牌以+200分計(jì)算。若S12、D11皆在吃下所有紅心牌之一家,則此玩家得+500分。而C10還是以前面所述原則計(jì)算之。例一:若各玩家持有計(jì)分牌如下:(每列代表一玩家所持有之牌)S12H3H5H13

D11H8H9

C10H1H2H4H6H7

H10H11H12則各家之得分依序?yàn)椋?148、+83、-138及-60。例二:若各玩家持有計(jì)分牌如下:(第四家未持有任何計(jì)分牌)H1H2H3H4H5H6H7H8H9H10H11H12H13

S12C10

D11則各家之得分依序?yàn)椋?200、-200、+100及0。例三:若有一玩家持有所有16張計(jì)分牌,則得+1000分。其余三家均得零分。輸入:

每個(gè)輸入文件由多組測(cè)試數(shù)據(jù)構(gòu)成,每組測(cè)試數(shù)據(jù)有四行,每一行第一個(gè)數(shù)為該玩家所持有計(jì)分牌總數(shù),而后列出其所持有之所有計(jì)分牌,牌數(shù)與各計(jì)分牌均以一個(gè)以上的空格分開(kāi)。相鄰兩組測(cè)試數(shù)據(jù)之間不會(huì)有空白行,讀到四家持牌數(shù)都為0表示文件結(jié)束。輸出:

每一行輸出一組測(cè)試數(shù)據(jù)對(duì)應(yīng)的結(jié)果,依次輸出各家所得分?jǐn)?shù),共四個(gè)整數(shù)(含正負(fù)號(hào),0除外),相鄰兩個(gè)整數(shù)之間以一個(gè)空格分開(kāi),符號(hào)和數(shù)字間不可以有空格。每組輸出間不需要有空白行。

測(cè)試輸入期待的輸出時(shí)間限制內(nèi)存限制額外進(jìn)程測(cè)試用例14

S12

H3

H5

H13?3

D11

H8

H9?6

C10

H1

H2

H4

H6

H7?3

H10

H11

H12?13

H1

H2

H3

H4

H5

H6

H7

H8

H9

H10

H11

H12

H13?2

S12

C10?1

D11?0?0?0?0?0?-148

+83

-138

-60?+200

-200

+100

0?1秒64M0#include

<stdio.h>

int

myinput(int

card[],int

number[])

{int

i,n;char

s[5];

for(i=0;i<4;i++)

{scanf("%d",&n);number[i]=n;

while(n--)

{scanf("%s",s);

switch(s[0])

{case

'S':card[13]=i;break;

case

'D':card[14]=i;break;

case

'C':card[15]=i;break;

case

'H':s[2]=='\0'?(card[s[1]-'1']=i):(card[s[2]-'1'+10]=i);}}}

return

number[0]+number[1]+number[2]+number[3];}

int

main()

{int

value[15]={-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40,-100,100},card[16],

score[4]={0,0,0,0},number[4],i,s,

input();

while(myinput(card,number))

{for(i=0,s=0;i<13;i++)

s+=card[i];

if(s%13)

{for(i=0;i<15;i++)

score[card[i]]+=value[i];}

else

{if(card[0]==card[13]&&card[13]==card[14])

score[card[0]]+=500;

else

{score[card[0]]+=200;

score[card[14]]+=value[14];

score[card[13]]+=value[13];}}

score[card[15]]+=number[card[15]]==1?50:score[card[15]];

for(i=0;i<4;i++)

printf("%s%d%s",score[i]>0?"+":"",score[i],i==3?"\n":"

");

for(i=0;i<4;i++)

score[i]=0;}

return

0;}59.【大學(xué)】恭喜發(fā)財(cái)利是竇來(lái)成績(jī)5開(kāi)啟時(shí)間2014年05月折扣0.8折扣時(shí)間2014年06月允許遲交否關(guān)閉時(shí)間2014年06月在中國(guó),過(guò)春節(jié)時(shí)人們有給孩子壓歲錢(qián)(粵語(yǔ)稱(chēng)為利是)的習(xí)俗。最早的壓歲錢(qián)出現(xiàn)于漢代,又叫壓勝錢(qián),并不在市面上流通,而是鑄成錢(qián)幣形式的玩賞物,有避邪的功能。錢(qián)幣正面一般鑄有“萬(wàn)歲千秋”、“去殃除兇”等吉祥話和龍鳳、龜蛇、雙魚(yú)等吉祥圖案。據(jù)說(shuō)嘉興府有一戶姓管的人家,夫妻老年得子,十分珍愛(ài)。在年三十晚上,為防止“祟”來(lái)侵?jǐn)_一直逗孩子玩,小孩用紅紙包了八枚銅錢(qián),包了又拆,拆了又包,睡下以后,包著的八枚銅錢(qián)就放在枕邊。半夜里,一陣陰風(fēng)吹過(guò),黑矮的小人正要用他的白手摸孩子的頭,突然孩子枕邊迸出一道金光,祟尖叫著逃跑了。于是這件事傳揚(yáng)開(kāi)來(lái),大家紛紛效仿,在大年夜用紅紙包上錢(qián)給孩子,祟就不敢再來(lái)侵?jǐn)_了。因而人們把這種錢(qián)叫“壓祟錢(qián)”,“祟”與“歲”發(fā)音相同,日久天長(zhǎng),就被稱(chēng)為“壓歲錢(qián)”了?,F(xiàn)在有N個(gè)人,他們都有小孩,春節(jié)來(lái)了,他們要發(fā)壓歲錢(qián)給朋友的小孩,而他們自己的小孩也會(huì)收到壓歲錢(qián)。為了簡(jiǎn)單,他們?cè)诎l(fā)壓歲錢(qián)的時(shí)候,使用以下的計(jì)算方法,譬如某甲有100塊,它要給另外三個(gè)人的小孩發(fā)壓歲錢(qián),則每個(gè)小孩會(huì)分到100/3=33塊,剩余的1塊就不發(fā)了。給你這N個(gè)人的信息,以及他們把壓歲錢(qián)發(fā)給了誰(shuí)的小孩,請(qǐng)你計(jì)算他們每個(gè)人的小孩收到的壓歲錢(qián)和他們發(fā)出去的壓歲錢(qián)的差額是多少。輸入第1行:一個(gè)整數(shù)N(2<=N<=10)第2..N+1行:每行是一個(gè)人名,每個(gè)名字不超過(guò)14個(gè)字符第N+2..結(jié)束:N組按照以下規(guī)則組織的數(shù)據(jù):組中的第一行為送出壓歲錢(qián)的人名。第二行包括兩個(gè)數(shù)字,第一個(gè)是該人有多少錢(qián)(0~2000),第二個(gè)是它要把錢(qián)發(fā)給幾個(gè)人的小孩,用NGi表示(0≤NGi≤N-1).如果NGi為非零,則下面的NGi行會(huì)列出接受壓歲錢(qián)的人的名字。輸入樣例5

dave

laura

owen

vick

amr

dave

2003

laura

owen

vick

owen

5001

dave

amr

1502

vick

owen

laura

02

amr

vick

vick

00輸出格式輸出為N行,每行上是一個(gè)人名與它收到和送出的壓歲錢(qián)之差額,這兩項(xiàng)之間有一個(gè)空格。這N行的順序應(yīng)該和輸入中

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論