搜档网
当前位置:搜档网 › 程序设计大赛试题及答案

程序设计大赛试题及答案

程序设计大赛试题及答案
程序设计大赛试题及答案

试题

1、数学黑洞(程序文件名)

【问题描述】

任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。

【输入】

一行,一个4位正整数n(1000< n<9999)

【输出】

掉进黑洞的步数

输入

1234

输出

3

2、进制转换(程序文件名)

【问题描述】

任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。

【输入】

一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。【输出】

转换后的数

【输入输出样例】

输入

255 8

输出

377

3、分数线划定(程序文件名)

【问题描述】

公务员选拔工作正在 A 市如火如荼的进行。为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

【输入】

第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。输入数据保证m*150%向下取整后小于等于n。

第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。数据保证选手的报名号各不相同。

【输出】

第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。

从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。

【输入输出样例】

输入

6 3

1000 90

3239 88

2390 95

7231 84

1005 95

1001 88

输出

88 5

1005 95

2390 95

1000 90

1001 88

3239 88

【样例说明】

m*150% = 3*150% = ,向下取整后为4。保证4 个人进入面试的分数线为88,但因为88有重分,所以所有成绩大于等于88 的选手都可以进入面试,故最终有5 个人进入面试。

4、生日礼物()

【问题描述】

小新今天过生日,他妈妈带他到一家购物中心,他妈妈告诉他他今天可以在这家商店选购3件礼物,但这3件礼物必须满足条件:后面礼物的价格不得高于前面礼物的价格,如有5件商品价格分别是12,11,8,9,10,则小新挑选礼物方案只能是(12,11,8)、(12,11,9)、(12,11,10)这三种方案中的一种,小新对挑选礼物的方案很感兴趣,请编程计算挑选礼物的方案数。

【输入】

第一行,一个整数n(n≤1000),表示待选商品的总数。第二行n个整数,用空格隔开,分别表示每件商品的价格(每件商品的价格≤10000)。

【输出】

共一行,包含1 个整数,表示挑选礼物的方案数。

【输入输出样例】

输入

5

12 11 8 9 10

输出

3

5、资金预算

【问题描述】

小新的亲戚开了一家建材批发部,近来由于价格不稳定,故需要制定按月执行的仓储计划,该批发部有n个供货月份,每个月仓储预算、商品价格预算、客户需求量分别为Pi,Si,Di,,每月客户需求必须得到保证。当然,也可以在价格适当时进行囤货,即用仓库所储备的商品供货。若存货不足,就要购买商品供货,如某月要购货,则该月要加上一笔购货预算资金Ri。例如,有2个预算月份,P1,S1,D1,R1分别为0,10,100,10;P2,S2,D2,R2分别为0,100,100,10;则方案1:第一个月买够D1的货,第二个月买够D2的货,预算等于

(D1×S1+R1)+(D2×S2+R2)=(100×10+10)+(100×100+10)=11020。

方案2:第一个月买够2个月的商品,第二个月不用买货,可用囤积的商品供货,但需要支付第一个月的仓储费,预算等于

((D1+D2)×S1+R1)+(P1×D2)=((100+100)×10)+(0×100)=2010。

显然方案2优于方案1。人工进行这样的预算费时费力,请你编程帮小新亲戚安排预算从而实现利润的最大化。

【输入】

输入文件第一行是整数n(1≤ n ≤20),表示有n个月份;接着有n行,每行4个数据,分别表示 Pi,Si,Di,Ri,即仓储费用,商品价格预算,客户需求量及购货预算。其中1≤ i ≤n,0≤Pi,Si,Ri≤100000; ,∑Di≤500。

【输出】

仅1行,数据是最小总预算。

样例1:

【输入1】

2

0 10 100 10

0 100 100 10

【输出1】

2010

样例2:

【输入2】

2

100 10 100 10

0 100 100 10

【输出2】

11020

6、热带鱼()

【问题描述】

一个晴朗的星期天,小新在商场看见美丽的热带鱼,五彩斑斓的热带鱼在碧绿的水草映照下格外绚丽夺目,大大小小的鱼儿有的慢悠悠的散着步,有的疾驰如闪电,小新不禁被美丽的鱼儿所吸引,他非常想将这些美丽的小精灵们全买回家,但鱼儿的种类太多了,所以小新决定每种鱼最多只买1条,由于鱼儿间会相互争斗蚕食,故有些鱼儿是不能同时买回家的,小新想买尽可能多的鱼,但他身上的钱有限,只能在资金许可的范围内买鱼,怎么办?请你设计一个最佳方案,在资金许可的范围选择花费资金最多的一种买鱼方案。程序运行时间10s内。

【输入】

文件的第一行为两个正整数m(m≤1000)与n(n≤30),分别表示资金与鱼的种类;以下行,每行2个正整数,分别表示某种鱼的编号(编号≤30)及价格(价格≤10000);接着,每行2个正整数p与q ,表示编号p与编号q的鱼不能共处,

当p、q均等于0时,表示输入文件结束。

【输出】

输出文件为2行,分别为2个正整数,第一行整数表示所买鱼的条数,第二行整数表示所花费的资金。

样例1:

【输入1】

15 3

1 30

2 39

3 18

1 3

0 0

【输出1】

样例2:

【输入2】

180 6

6 80

5 60

4 40

3 30

2 50

1 20

1 4

3 5

5 6

0 0

【输出2】

4

180

7、电脑游戏

【问题描述】

小新正在玩一个简单的电脑游戏。

游戏中有一条环形马路,马路上有n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点,按顺时针顺序依次将这n 个机器人工厂编号为1~n,因为马路是环形的,所以第n 个机器人工厂和第1 个机器人工厂是由一段马路连接在一起的。小新将连接机器人工厂的这n 段马路也编号为1~n,并规定第i 段马路连接第i 个机器人工厂和第i+1 个机器人工厂(1 ≤ i ≤ n-1),第n 段马路连接第n 个机器人工厂和第1个机器人工厂。游戏过程中,每个单位时间内,每段马路上都会出现一些金币,金币的数量会随着时间发生变化,即不同单位时间内同一段马路上出现的金币数量可能是不同的。小新需要机器人的帮助才能收集到马路上的金币。所需的机器人必须在机器人工厂用一些金币来购买,机器人一旦被购买,便会沿着环形马路按顺时针方向一直行走,在每个单位时间内行走一次,即从当前所在的机器人工厂到达相邻的下一个机器人工厂,并将经过的马路上的所有金币收集给小新,例如,小新在i(1 ≤ i ≤ n)号机器人工厂购买了一个机器人,这个机器人会从i 号机器人工厂开始,顺时针在马路上行走,第一次行走会经过i 号马路,到达i+1 号机器人工厂(如果i=n,机器人会到达第1 个机器人工厂),并将i 号马路上的所有金币收集给小新。

游戏中,环形马路上不能同时存在2 个或者2 个以上的机器人,并且每个机器人最多能够在环形马路上行走p 次。小新购买机器人的同时,需要给这个机器人设定行走次数,行走次数可以为1~p 之间的任意整数。当马路上的机器人行走完规定的次数之后会自动消失,小新必须立刻在任意一个机器人工厂中购买一个新的机器人,并给新的机器人设定新的行走次数。

以下是游戏的一些补充说明:

1. 游戏从小新第一次购买机器人开始计时。

2. 购买机器人和设定机器人的行走次数是瞬间完成的,不需要花费时间。

3. 购买机器人和机器人行走是两个独立的过程,机器人行走时不能购买机器人,购买完机器人并且设定机器人行走次数之后机器人才能行走。

4. 在同一个机器人工厂购买机器人的花费是相同的,但是在不同机器人工厂购买机器人的花费不一定相同。

5. 购买机器人花费的金币,在游戏结束时再从小新收集的金币中扣除,所以在游戏过程中小新不用担心因金币不足,无法购买机器人而导致游戏无法进行。也因为如此,游戏结束后,收集的金币数量可能为负。

现在已知每段马路上每个单位时间内出现的金币数量和在每个机器人工厂购买机器人需要的花费,请你告诉小新,经过m 个单位时间后,扣除购买机器人的花费,小新最多能收集到多少金币。

【输入】

第一行 3 个正整数,n,m,p,意义如题目所述。

接下来的 n 行,每行有m 个正整数,每两个整数之间用一个空格隔开,其中第i 行描述了i 号马路上每个单位时间内出现的金币数量(1 ≤金币数量≤ 100),即第i 行的第j(1 ≤ j ≤m)个数表示第j 个单位时间内i 号马路上出现的金币数量。

最后一行,有 n 个整数,每两个整数之间用一个空格隔开,其中第i 个数表示在i 号机器人工厂购买机器人需要花费的金币数量(1 ≤金币数量≤ 100)。

【输出】

共一行,包含1 个整数,表示在m 个单位时间内,扣除购买机器人花费的金币之后,小新最多能收集到多少金币。【输入样例】

2 3 2

1 2 3

2 3 4

1 2

【输出样例】

5

【数据范围】

对于 40%的数据,2 ≤ n ≤ 40,1 ≤m≤ 40。

对于 90%的数据,2 ≤ n ≤ 200,1 ≤m≤ 200。

对于 100%的数据,2 ≤ n ≤ 1000,1 ≤m≤ 1000,1 ≤ p ≤m。

7、电脑游戏

【问题描述】

小新正在玩一个简单的电脑游戏。

游戏中有一条环形马路,马路上有n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点,按顺时针顺序依次将这n 个机器人工厂编号为1~n,因为马路是环形的,所以第n 个机器人工厂和第1 个机器人工厂是由一段马路连接在一起的。小新将连接机器人工厂的这n 段马路也编号为1~n,并规定第i 段马路连接第i 个机器人工厂和第i+1 个机器人工厂(1 ≤ i ≤ n-1),第n 段马路连接第n 个机器人工厂和第1个机器人工厂。游戏过程中,每个单位时间内,每段马路上都会出现一些金币,金币的数量会随着时间发生变化,即不同单位时间内同一段马路上出现的金币数量可能是不同的。小新需要机器人的帮助才能收集到马路上的金币。所需的机器人必须在机器人工厂用一些金币来购买,机器人一旦被购买,便会沿着环形马路按顺时针方向一直行走,在每个单位时间内行走一次,即从当前所在的机器人工厂到达相邻的下一个机器人工厂,并将经过的马路上的所有金币收集给小新,例如,小新在i(1 ≤ i ≤ n)号机器人工厂购买了一个机器人,这个机器人会从i 号机器人工厂开始,顺时针在马路上行走,第一次行走会经过i 号马路,到达i+1 号机器人工厂(如果i=n,机器人会到达第1 个机器人工厂),并将i 号马路上的所有金币收集给小新。

游戏中,环形马路上不能同时存在2 个或者2 个以上的机器人,并且每个机器人最多能够在环形马路上行走p 次。小新购买机器人的同时,需要给这个机器人设定行走次数,行走次数可以为1~p 之间的任意整数。当马路上的机器人行走完规定的次数之后会自动消失,小新必须立刻在任意一个机器人工厂中购买一个新的机器人,并给新的机器人设定新的行走次数。

以下是游戏的一些补充说明:

1. 游戏从小新第一次购买机器人开始计时。

2. 购买机器人和设定机器人的行走次数是瞬间完成的,不需要花费时间。

3. 购买机器人和机器人行走是两个独立的过程,机器人行走时不能购买机器人,购买完机器人并且设定机器人行走次数之后机器人才能行走。

4. 在同一个机器人工厂购买机器人的花费是相同的,但是在不同机器人工厂购买机器人的花费不一定相同。

5. 购买机器人花费的金币,在游戏结束时再从小新收集的金币中扣除,所以在游戏过程中小新不用担心因金币不足,无法购买机器人而导致游戏无法进行。也因为如此,游戏结束后,收集的金币数量可能为负。

现在已知每段马路上每个单位时间内出现的金币数量和在每个机器人工厂购买机器人需要的花费,请你告诉小新,经过m 个单位时间后,扣除购买机器人的花费,小新最多能收集到多少金币。

【输入】

第一行 3 个正整数,n,m,p,意义如题目所述。

接下来的 n 行,每行有m 个正整数,每两个整数之间用一个空格隔开,其中第i 行描述了i 号马路上每个单位时间内出现的金币数量(1 ≤金币数量≤ 100),即第i 行的第j(1 ≤ j ≤m)个数表示第j 个单位时间内i 号马路上出现的金币数量。

最后一行,有 n 个整数,每两个整数之间用一个空格隔开,其中第i 个数表示在i 号机器人工厂购买机器人需要花费的金币数量(1 ≤金币数量≤ 100)。

【输出】

共一行,包含1 个整数,表示在m 个单位时间内,扣除购买机器人花费的金币之后,小新最多能收集到多少金币。【输入样例】

2 3 2

1 2 3

2 3 4

1 2

【输出样例】

5

【数据范围】

对于 40%的数据,2 ≤ n ≤ 40,1 ≤m≤ 40。

对于 90%的数据,2 ≤ n ≤ 200,1 ≤m≤ 200。

对于 100%的数据,2 ≤ n ≤ 1000,1 ≤m≤ 1000,1 ≤ p ≤m。

答案

第一题

include<>

int x=1;

void main()

{

int a;

void fun(int a);

printf("请输入一个四位数:");

scanf("%d",&a);

fun(a);

printf("%d\n",x);

}

void fun(int a)

{ int i,j,m,n,s[4],t;

s[0]=a/1000,s[1]=a/100%10,s[2]=a/10%10,s[3]=a%10; for(i=0;i<3;i++)

{ for(j=i+1;j<4;j++)

{if(s[i]

t=s[i],s[i]=s[j],s[j]=t;}

}

m=1000*s[0]+100*s[1]+10*s[2]+s[3];

n=1000*s[3]+100*s[2]+10*s[1]+s[0];

if(m-n!=6174&&x<=7)

{ x++, fun(m-n);}

}

第二题

#include<>

void main()

{

int m,n,k=0,i,j,a[20];

printf("请输入十进制数字及转换进制用空格分开:");

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

for(k;m/n!=0;k++)

{

a[k]=m%n;

m=m/n;}

a[k]=m;

for(j=0;j<=k;j++)

{ switch(a[j])

{case 10: a[j]='a';

case 11: a[j]='b';

case 12: a[j]='c';

case 13: a[j]='d';

case 14 : a[j]='e';

case 15 : a[j]='f';}

}

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

{if(a[i]<97) printf("%d",a[i]);

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

printf("\n");

}

第三题

#include<>

void main()

{

int m,n,i,a[5000],b[5000],f,j,k,z,l,t1,t2,s,d,v,p,g;

printf("Please input the total number and enrollment in:");

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

for(i=0;i

{

printf("Please enter the %d number and grade",i+1) ;

scanf("%d %d",&a[i],&b[i]);

printf("\n");

}

for(z=0;z

for(l=z+1;l

{ if(b[z]

t1=b[z],b[z]=b[l],b[l]=t1,t2=a[z],a[z]=a[l],a[l]=t2;

}

for(k=0;k

for(v=k+1;v

{ if(b[k]==b[v]&&a[k]>a[v]) t1=b[k],b[k]=b[v],b[v]=t1,t2=a[k],a[k]=a[v],a[v]=t2;}

f=m*;

for(g=f;g<=n;g++)

if(b[f-1]==b[f]) f++;

printf("interview scores for the actual interview number is%d %d\n",b[f-1],f);

for(s=0;s

printf("%d %d\n",a[s],b[s]);

}

第四题

#include<>

void main()

{

int i,j,k,n,m=0,l=0,a[20],t1,t2,t;

printf("请输入待选商品总数:");

scanf("%d",&n);

printf("\n");

printf("请输入各待选商品的价格");

while(l

{ scanf("%d ",&a[l]);

l++;

}

printf("\n");

for(i=0;i

{ for(j=0;j

for(k=0;k

if(a[i]>=a[j]&&a[j]>=a[k]) m++;

}

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

}

C语言程序设计竞赛题及其答案

数学与统计学院 第三届计算机程序设计竞赛题 竞赛需知: 1、答案必须写在答题纸上。 2、程序采用C/JAVA/VB/VFP语言实现均可。 3、考虑到各种因素,程序的键盘输入和结果输出可以用伪代码或者自然语言表示。但是必 须说明输入变量和输出变量。 4、题目最好能用完整、正确的语言程序来解决问题,如确实无法编写完整语言程序的,可 以写出程序主要框架和流程,必要时可以用伪代码或者自然语言描述算法(程序)。 一、玫瑰花数(20分) 如果一个四位数等于它的每一位数的4次方之和,则称为玫瑰花数。例如: + + 1634+ =, 4^4 4^3 4^6 4^1 编程输出所有的玫瑰花数。 #include void main() { int i,j,k,l,m; for(i=999;i<=9999;i++) { j=i/1000; k=i%10; l=i/100-10*j; m=i/10-100*j-10*l; if(i==j*j*j*j+k*k*k*k+l*l*l*l+m*m*m*m) printf("%d\n",i); } } 二、菱形图案(20分) 对给定的奇数n,编程打印菱形图案。 输入样例: 7 输出样例: * *** ***** ******* ***** *** * #include #include void main() {

int i,j,k; int n; scanf("%d",&n); for(i=0;i #include void main() { int i,j,x,y; float r; int a,b,count=0; printf("请输入矩阵的行列i,j:"); scanf("%d%d",&i,&j); printf("请输入圆心的坐标点及半径x,y,r:"); scanf("%d%d%f",&x,&y,&r); for(a=0;a

程序设计比赛试题

程序设计比赛试题 最少钱币数: 【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M (1<=M<=2000,整数),接着的一行中,第一个整数K(1<=K<=10)表示币种个数,随后是K个互不相同的钱币面值Ki(1<=Ki<=1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

Feli的生日礼物 【问题描述】 Felicia的生日是11月1日(和Kitty是同一天生的哦)。于是Feli请来Kitty一起过生日。Kitty带来了最新款的“Kitty猫”玩具准备送给Feli,不过她说,这份礼物可不是白送的。Feli要帮她一个忙,才能够得到心仪已久的玩具。Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100*_*,Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。Feli听了大吃一惊。要知道,算出n!是一个无比艰巨的任务。Feli告诉Kitty,就算Feli算出n!,Kitty也看不下去,因为当n=20时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。于是Kitty说,你只要告诉我n!最后一位非0的数就可以了。Feli想了想,立刻动手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,AC的男生将会得到一个“Hello Kitty”计算器(可编程,CPU 1THz,Mem 1TMB),AC的女生将会得到一个仿真“Hello Kitty”宠物(善解人意,无须喂养,智商1101,附带写情书功能)。 【要求】 【数据输入】每行一个n,直到输入数据结束 【数据输出】对应输入的n,每行输出一个答案 【样例输入】 1101 【样例输出】 8

市青少年计算机程序设计竞赛试题

‘96上海市青少年计算机程序设计竞赛试题 竞赛注意事项: 1.上机竞赛在2小时内完成,可以不经书编程,直接输入计算机调试。 2.试题一~五的程序完成后,分别以A、B、C、D、E文件名存入磁盘。 3.每完成一题后即填写完成时间,以备机器故障时给予处理。 4.竞赛的程序以运行结果作为主要评分依据,人为判断、直接打印者不给分。 5.测试数据将有多套,运行速度的快慢将作为评分依据之一。 一、如下图,有I种货物将存放在N个仓库里(I=N,I<=20)。假设各种货物由同一种车辆 运输,一种货物存放在一个仓库,而且每个仓库都足够大。现在已知货物1的存储量为M1吨,周转周期为D1天(即在D1天里,有M1吨货物1运进,并运出。),货物2的存储量为M2吨,周转周期为D2天,…,货物I的存储量为Mi吨,周转周期为Di天。问怎样安排仓库储存,可使运输的车公里数为最少?(15分) 原始数据由正文文件输入,文件第一行是一个数字I,表示I种货物,第二行为I种货物的存储量,第三行为I种货物的周转周期,同一行中各数字间以空格分隔。输入数据均不 需判错。 由屏幕打印运行结果,第一行是仓库的编号,第二行为对应货物的编号。 例对右图的正文文件,输入输出格式如下: Enter file name : TEST1-1.TXT TEST1-1.TXT 7 N1 N2 N3 N4 N5 N6 N7 12 7 38 109 64 580 1088 Ix Ix Ix Ix Ix Ix Ix 30 23 8 14 5 42 113 二、求N!的精确值(N<100。N!为1*2*3*4*5……*N)。(15分) 输入输出格式为: INPUT N = 23 23!= 25852016738884976640000 三、编写一个整理TURBO PASCAL源文件的程序,它先输入要整理的源文件标识符,然 后逐个字符读取该文件的所有内容,经适当改造后再存入目标文件标识符。程序应能自动地将源文件中的所有TURBO PASCAL 的保留字改成大写,将每个单词的首字母改成大写, 其余的改成小写。但不影响字符串和注释语句中的大小写。(20分) 程序运行时输入、输出格式: Enter source filename :源文件标识符 Enter target filename :目标文件标识符 输入数据均不需判错。 附TURBO PASCAL 52 个保留字: ABSOLUTE AND ARRAY BEGIN CASE CONST CONSTRUCTOR DESTRUCTOR DIV DO DOWNTO ELSE END EXTERNAL FILE FOR

第六届程序设计比赛题目与答案

一、鸡兔同笼 问题描述 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物 输入数据 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (a < 32768)。 输出要求 n行,每行输出对应一个输入。输出是两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用空格分开。如果没有满足要求的情况出现,则输出2个0。 输入样例 2 3 20 输出样例 0 0 5 10 解题思路 这个问题可以描述成任给一个整数N,如果N是奇数,输出0 0,否则如果N是4的倍数,输出N / 4 N / 2,如果N不是4的倍数,输出N/4+1 N/2。这是一个一般的计算题,只要实现相应的判断和输出代码就可以了。题目中说明了输入整数在一个比较小的范围内,所以只需要考虑整数运算就可以了。 参考程序 1.#include 2.void main( ) 3.{ 4.int nCases, i, nFeet; //nCases 表示输入测试数据的组数,nFeet表示输入的脚数。 5.scanf("%d", &nCases); 6.for(i = 0; i < nCases; i++){ 7.scanf("%d", &nFeet); 8.if(nFeet %2 != 0) // 如果有奇数只脚,则输入不正确, 9.// 因为不论2只还是4只,都是偶数 10.printf("0 0\n"); 11.else if (nFeet%4 != 0) //若要动物数目最少,使动物尽量有4只脚 12.//若要动物数目最多,使动物尽量有2只脚 13.printf("%d %d\n", nFeet / 4 + 1, nFeet / 2); 14.else printf("%d %d\n", nFeet / 4, nFeet / 2); 15.} 16.}

程序设计大赛试题及答案

试题 1、数学黑洞(程序文件名maths.c/maths.cpp) 【问题描述】 任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。 【输入】 一行,一个4位正整数n(1000< n<9999) 【输出】 掉进黑洞的步数 输入 1234 输出 3 2、进制转换(程序文件名conver.c/conver.cpp) 【问题描述】 任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。 【输入】 一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。 【输出】 转换后的数 【输入输出样例】 输入 255 8 输出 377 3、分数线划定(程序文件名score.c/score.cpp) 【问题描述】 公务员选拔工作正在 A 市如火如荼的进行。为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。 【输入】 第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。输入数据保证m*150%向下取整后小于等于n。 第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。数据保证选手的报名号各不相同。 【输出】 第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。 从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。 【输入输出样例】 输入 6 3 1000 90 3239 88 2390 95 7231 84 1005 95 1001 88

C语言程序设计大赛题目

日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。 题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include int main() { int n,count=0; printf("Please enter number:"); scanf("%d",&n); /*输入任一整数*/ do{ if(n%2) { n=n*3+1; /*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2; /*若为偶数n除以2*/ printf("[%d]: %d/2=%d\n",++count,2*n,n); } }while(n!=1); /*n不等于1则继续以上过程*/ }

数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 #include #include int main() { int number,i,j,k,l; printf("Please enter a number="); scanf("%d",&number); /*输入整数*/ for(i=1;i int main() { int a,b,c,d; printf("Please enter a number:"); scanf("%d",&a); /*输入整数*/ b=a*a*a; /*求整数的三次方*/ printf("%d*%d*%d=%d=",a,a,a,b); for(d=0,c=0;c

最新慈溪市小学生计算机程序设计竞赛复赛试题(定稿)

2012年慈溪市小学生计算机程序设计比赛 复赛试题 比赛时间:2012年12月23日上午8:30—10:30 题目概览 注意事项 1.每位选手都应先在E盘根目录下建立自己的答卷文件夹,该文件夹的名称为自己的考号;2.选手最终所提交的所有文件都必须存放在自己的考生文件夹中,凡错放及以书面形式提交的答卷一律视作无效; 3.每题提交的解答都必须包括以下二个文件,即源程序文件和经编译后生成的可执行文件,其名称必须与各题中所规定的相一致; 4.程序中必须采用文件读写的方法来实现数据的输入和结果的输出,即程序运行时所需输入数据应从题中指定的输入文件中读取(而不得采用键盘输入的方式),程序运行的结果应写入到题中指定的文件中(而不是输出到屏幕上)。 5.用于提供输入数据和记录输出结果的文件的名称都已在题中具体规定,选手程序在调用它们时不得为其指定任何特别的路径。 6.复赛用机房电脑C盘和D盘均已设置成开机还原保护,选手切勿把程序存放在C盘和D 盘中,否则如果重新开机后程序将不复存在。 7.比赛结束后请不要关机。

1.统计成绩(score.pas/exe) 【问题描述】 每次考试或测试后,老师们都要进行成绩统计。假如某次期末考试有语文、数学、英语三门课,现请你编程输出总成绩最高分以及每门学科的最高分。 【输入数据】 输入文件score.in:输入从文件中读取,输入共n+1行。 第1行是一个正整数n(1≤n≤100),表示学生人数,从1到n编号。 接下来n行,每行3个整数,依次表示每个学生的语文、数学、英语成绩(每门课成绩是0到100之间的整数,包括0和100)。 【输出数据】 输出文件score.out:结果输出到文件中,输出共1行,包含4个整数,分别表示三门课总成绩最高分,语文学科的最高分,数学学科的最高分,英语学科的最高分。 【输入输出样例】 【样例解释】 输入3个学生成绩,第1个学生语文、数学、英语三门课的成绩分别为80,67,96,第2个学生语文、数学、英语三门课的成绩分别为88,71,93,第3个学生语文、数学、英语三门课的成绩分别为90,95,80。第3个学生的总成绩最高,为265。语文学科的最高分是90分,数学学科的最高分95,英语学科的最高分96。 【数据范围约定】 所有的输入数据保证1≤n≤100,成绩在0到100分之间(包括0和100)。 2.最小的Y(miny.pas/exe) 【问题描述】 程序设计与数学密切相关,所以兴趣小组的辅导老师经常拿一些有趣的数学题来让大家思考。一次课上,辅导老师又拿出了一个有趣的数学问题,题目是这样的:给你两个正整数x和z,求最小的整数y,使得x×y以后再除以z的余数为0。 比如x=3,z=6,求最小的y。 题目一出,马上有同学说:最小的y是0。 老师说:是的,非常厉害,最小的y是0。那最小的正整数y是多少呢? 【输入数据】 输入文件miny.in:输入从文件中读取,输入共1行,两个正整数,分别表示x和z (1≤x≤2147483647, 1≤z≤2147483647)。 【输出数据】 输出文件miny.out:结果输出到文件中,输出共1行,表示使得x×y以后再除以z的

acm程序设计大赛题目

The Mailboxes Manufacturers Problem Time Limit:1000MS Memory Limit:65536K Total Submit:299 Accepted:227 Description In the good old days when Swedish children were still allowed to blowup their fingers with fire-crackers, gangs of excited kids would plague certain smaller cities during Easter time, with only one thing in mind: To blow things up. Small boxes were easy to blow up, and thus mailboxes became a popular target. Now, a small mailbox manufacturer is interested in how many fire-crackers his new mailbox prototype can withstand without exploding and has hired you to help him. He will provide you with k(1 ≤ k≤ 10) identical mailbox prototypes each fitting up to m(1 ≤ m≤ 100) crackers. However, he is not sure of how many firecrackers he needs to provide you with in order for you to be able to solve his problem, so he asks you. You think for a while and then say, “Well,if I blow up a mailbox I can’t use it again, so if you would provide me with only k = 1 mailboxes, I would have to start testing with 1 cracker, then 2 crackers, and so on until it finally exploded. In the worst case, that is if it does not blow up ev en when filled with m crackers, I would need 1 + 2 + 3 + … + m = m ×(m+ 1) ? 2 crackers. If m = 100 that would mean more than 5000 fire-crackers!” “That’s too many,” he replies. “What if I give you more than k = 1 mailboxes? Can you find a strategy that requires less crackers?” Can you? And what is the minimum number of crackers that you should ask him to provide you with? You may assume the following: 1.If a mailbox can withstand x fire-crackers, it can also withstand x? 1 fire-crackers. 2.Upon an explosion, a mailbox is either totally destroyed (blown up) or unharmed, which means that it can be reused in another test explosion.

C语言程序设计竞赛模拟试题

1、编写程序,从键盘上连续输入若干字符,直到回车换行符结束。统计并输出所输入的空 格、大写字母、小写字母,以及其他字符(不含回车换行符)的个数。 #include "" main() { char ch=' '; int i=0, j=0, k=0, m= ?1; do { if (ch>='a' && ch<='z') i++; else if (ch>='A' && ch<='Z') j++; else if (ch == ' ') m++; else k++; }while((ch=getchar())!='\n'); printf ("small letter = %d, capital letter = %d\n", i, j); printf ("space = %d, other = %d\n", m, k); } 2、编写程序,求100~999之间所有的水仙花数。所谓“水仙花数”,即是一个三位数, 它个位、十位、百位数字的立方和,恰好等于该数本身。 #include "" main() { int i, j = 1; int nf, ns, nt; for (i =100; i<=999; i++) { nf = i%10; ns = i/10%10; nt = i/100; nf = nf * nf * nf; ns = ns * ns * ns; nt = nt * nt * nt; if ((nf + ns + nt) == i) { printf ("The %d's number is %d\n", j, i); j++; } } 3、编写程序,求1-1/2+2/3-3/4+4/5-5/6+6/7….-99/100=

华为编程大赛试题2

客观题部分,共30分,建议这部分答题用40分钟。 一、单选题(每题1分,共10题) 1、以下叙述中不正确的是______。? A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量 C) 在一个函数内定义的变量只在本函数范围内有效 D).在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的 成对括号构成的代码)? 2、下列全局变量定义中,正确的是:______。 A) char abc [] []; B) char abc [] [NUM]; C) char abc [NUM] []; D) char abc [0]; 3、关于断言,错误的说法是:______。 A) 我们可以使用断言来发现软件问题。 B) 在正式发布的软件版本中也要保留断言,以便于定位问题。 C) 断言不能用于对外部输入数据的判断,只能用于程序内部逻辑的判断。 D) 不能用断言来代替错误处理。 4、关于函数参数,正确的说法是______。 A) 防止将函数的参数作为工作变量。 B) 应该为函数功能的扩展预留尽可能多的参数接口。 C) 通常函数内部会对函数参数进行合法性检查,为了提高效率,函数调用者不需要再 次进行参数合法性检查。 D) 不要输入指针变量。 5、关于函数实现,下面不正确的说法是______。 A) 为简单功能编写函数。 B) 函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。 C) 防止把没有关联的语句放到一个函数中。 D) 为了增强函数的可用性,应尽量设计多用途面面俱到的函数。 6、关于函数,不正确的说法是______。 A) 如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。 B) 功能不明确较小的函数,特别是仅有一个上级函数调用它时,应考虑把它合并到上 级函数中,而不必单独存在。 C) 对所调用函数的错误返回码可以根据需要决定是否处理。 D) 对于提供了返回值的函数,在引用时最好使用其返回值。 7、编程中下面说法错误的是______。 A) 编程时,要防止差1错误。如:把“<=”误写成“<”或“>=”误写成“>”。 B) 系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用,但 可以使用操作系统的默认初始化值。 C) 有可能的话,if语句尽量加上else分支,对没有else分支的语句要小心对待; switch语句必须有default分支。 D) 要时刻注意易混淆的操作符,如C/C++中的“=”与“==”、“|”与“||”、“&” 与“&&”等。当编完程序后,应从头至尾检查一遍这些操作符,以防止拼写错误。

C语言程序设计大赛题目

C语言程序设计大赛题 目 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1.角谷猜想 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。 题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include<> intmain() { intn,count=0; printf("Pleaseenternumber:"); scanf("%d",&n);/*输入任一整数*/ do{ if(n%2) { n=n*3+1;/*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2;/*若为偶数n除以2*/ printf("[%d]:%d/2=%d\n",++count,2*n,n); } }while(n!=1);/*n不等于1则继续以上过程*/

}

2.四方定理 数论中着名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。 请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 #include<> #include<> intmain() { intnumber,i,j,k,l; printf("Pleaseenteranumber="); scanf("%d",&number);/*输入整数*/ for(i=1;i intmain() { inta,b,c,d; printf("Pleaseenteranumber:"); scanf("%d",&a);/*输入整数*/

第三届Java程序设计大赛题目

第三届Java程序设计大赛题目 重要提示: 1.除下载竞赛题目和上交代码,其余时间不允许连接网络,否则取消竞赛资格! 2.创建以“学号-姓名”命名的根文件夹(形式 如:“10317210135-张三”),并将竞赛结果代码严格按题目上的命名要求进行命名并直接保存在该文件夹下; 3.在两个小时之内完成源代码,源代码上交前要将前面创建的文件夹(如前面创建的“10317210135-张三”文件夹)压缩成“rar”格式,命名形如:“10317210135-张三.rar”; 3. 将压缩的源代码上交到上传 至“ftp://100.1.0.38/”,用户名:student10,密 码:student10; 4.源代码上交期限是4月27日21:00前,否则不予接收。 注意:凡违反上述规定的考生,其成绩一律按零分处理!

1. 竞赛第一题 有5个学生,他们的姓名分别为丁一,刘二,张三,李四,王五,他们的英语成绩分别为62,46,91,73,29;数学成绩分别为 64,97,81,75,90,物理成绩分别为94,27,65,51,88,编写一个Java程序,找出他们当中总分最高的学生,并输出他的姓名和分数。(提示:为每一个学生创建一个Student类,并将他们的姓名,各科成绩作为属性存储起来,然后建个Student类型的数组通过比较找出符合要求的人)。 要求: Java源文件包含main()方法,运行能输出结果,将制作好的应用程序类保存为“T1.java”,放在根文件夹下。 2. 竞赛第二题 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(本题20分) 要求: Java源文件包含main()方法,运行能输出结果,将制作好的应用程序类保存为“T2.java”,放在根文件夹下。

2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题

2014年宁波市第29届中小学生计算机程序设计竞赛小学组初赛试题 一、选择题(每题有且仅有一个正确答案,选对得1.5分,选错、不选或多选均失分) 1.存放一个ASCII码需要的字节数为 (A)1字节(B)2字节(C)0.5字节(D)4字节 2.下列软件中不属于操作系统的是 (A)win7(B)linux(C)winxp(D)winrar 3.下列数中最小的是 (A)(7)8(B)(11)7(C)(15)10(D)(11)5 4.世界上第一台电子计算机诞生于 (A)1949(B)1849(C)1946(D)1893 5.在下面各奖项中,为计算机科学与技术领域作出杰出贡献的科学家设立的奖项是(A)沃尔夫奖(B)诺贝尔奖(C)菲尔兹奖(D)图灵奖 6.操作系统的文件夹采用的层次结构为 (A)网状(B)链状(C)树状(D)块状 7.在pascal语言中,pos(‘a’,’bbccc’)的返回值为 (A)0(B)-1(C)5(D)’a’ 8.在pascal语言中,下列语句属于正确的赋值语句的是 (A)s:=1(B)s=a+1(C)a+1=s(D)a+1:=s 9.计算圆周长的算法描述如下: ①输入圆半径r; ②计算圆周长a(计算公式为a=2πr); ③输出结果; ④结束。

该算法属于 (A)枚举算法(B)递归算法(C)排序算法(D)以上都不是 10.现有一个数列A为1,2,3,另一个数列B为3,2,1,若采用选择排序分别的两个数列实现从小到大排序,则两个数列需要的比较次数为 (A)A比B多(B)A和B一样多(C)B比A多(D)不一定 11.在下述程序段中,判断语句a<>100被执行的次数为 a:=99 while a<>100do a:=a+1; (A)0(B)1(C)2(D)3 12.下面关于堆栈和队列的说法中错误的是 (A)队列是一种先进先出的线性表 (B)堆栈可以选择栈的任意位置进行弹出操作 (C)堆栈只能选择栈顶进行压入操作 (D)堆栈是一种先进后出的线性表 13.下列说法中不属于计算机病毒特点的是 (A)破坏性(B)传染性(C)潜伏性(D)抗药性 14.程序设计的三种基本结构是 (A)主程序、函数、过程(B)顺序、选择、循环 (C)变量、常量、不定量(D)数组、字符串、浮点型 15.下列内容中属于信息的是 (A)报纸(B)黑板(C)课本(D)黑板上的放假通知 16.在pascal语言中,记录类型用到的保留字为 (A)record(B)struct(C)baidu(D)then 17.某班有30个同学报名参加100、400、800m3个运动项目比赛。已知有6人获100m

首届程序设计大赛题目及答案

首届程序设计大赛题目及答案 程序设计大赛题目 1. 硬币兑换:用一元人民币兑换一分、二分和五分的硬币,编程求出所有兑换方法,并打印每种情况下各面值硬币需几枚?(10分) 2. 旅馆里有一百个房间,从1到100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”,……,以后每个服务员都是如此。问第100个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。) (15分) 3. 整型数组,长度为10,输入数组各元后,求数组各元的平均值,并找出最接近平均值的那个元素。打印输出上述两个结果,用逗号隔开,不要有其它字符。(20分) 4. 编程求两个很长的整数之和,比如两个20位十进制整数。(很长的整数指无法用long型存储的数)(25分) 例如: 12345678900987654321+12345678900987654321=24691357801975308642 5.编写布雷程序。(30分) 在一个10*10的方格中,随机分布10个地雷,并在其它没有地雷的格中显示该方格周围相邻的方格中共有几枚地雷。 样例输出:(图中-1的位置表示地雷,其它值表示该位置相邻的八个格子中的地雷数) 答案: 第一题: #include using namespace std; int main() { int i,j,k; for(i=1;i<=20;i++) for(j=1;j<=50;j++) {

k=100-5*i-2*j; if(k>0) cout<<"五分硬币"< using namespace std; int main() { int i,j; //i为服务员编号,j为房间编号 int a[101]; for(int t=1;t<101;t++) a[t]=1; for(i=2;i<101;i++) for(j=i;j<101;j++) if(j%i==0) a[j]*=-1; cout<<"打开的房间为:"; for(i=1;i<101;i++) if(a==1) cout< #include using namespace std; int main() { int a[10],i,sum=0,n=0; float ave,ca; for(i=0;i<10;i++) { cin>>a; sum+=a; } ave=sum/10.0; cout<<"数组平均值为:"<

2010程序设计大赛决赛题及参考答案

海南软件职业技术学院第四届计算机文化节 程序设计大赛决赛题 提醒:请各队在各自电脑D盘根目录下创建一个命名为“2010程序设计大赛-队名”的文件夹,将所有题目的答案都放到此目录底下。 做题过程中请注意保存。每做完一题就通过电子教室系统提交一次,电脑上没装电子教室软件的每题做完后举手示意工作人员用U盘提交。 各题源文件都分别保存在一个单独的文件夹中,文件夹命名为:题号_队名。 第一部分(简单题型): 1、(10分)马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩, 在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人?输出所有可能的组合。 样例输出: Men Women Children 1: 0 20 10 2: 1 18 11 3: 2 16 12 4: 3 14 13 5: 4 12 14 6: 5 10 15 7: 6 8 16 8: 7 6 17 9: 8 4 18 10: 9 2 19 11: 10 0 20 Java参考答案: void main() { int men,women,children; int count=0; printf(" %10s%10s%10s\n”,”men”,”women”,”children"); for(men=0;men<=16;men++) for(women=0;women<=25;women++) for(children=0;children<=30;children++) if(men+women+children==30&&men*3+women*2+children==50) { count++; printf(“%2d%10d%10d%10d\n”,count,men,women,children); } }

程序设计大赛试题

“指院杯”第五届程序设计大赛题目 (2011年6月12日) 注意事项:1、考试时间为上午9:30-11:30,下午12:30-15:30。 2、考试编程环境为VC6.0。 3、考试结束后将所有的源代码、程序、相关文档打包,文件名为参赛编号, 并上传到指定服务器。确认后方可离开。 1、0的个数 源程序名zero.c(zero.cpp) 输入文件名 zero_in.txt 输出文件名 zero_out.txt 问题描述 编写程序,计算n! (n<=100000)的尾部0的个数。 输入文件(zero_in.txt) 包含一个整数n。 输出文件(zero_out.txt) 输出n!尾部0的个数。 样例 输入(exp_in.txt) 26 输出(exp_out.txt) 6 2、洗牌加密法 源程序名poker.c(poker.cpp) 输入文件名 poker _in.txt 输出文件名 poker_out.txt 问题描述 有一种根据扑克牌的洗牌原理设计的简单加密方法。加密过程如下,将输入字符串,前后等分成两部分。如果有奇数个字符,则后半部分多一个字符。然后将前后两部分交叉,即从后半部分字符串取第一个字符,然后从前半部分取第一个字符,直到所有字符都取完。这个过程重复n次。 例如:对于输入字符串(注:此处"号不是输入内容): “shaken not stirred” 分成两半分别为 “shaken no” “t stirred” 交叉后得到:“ts hsatkiernr endo”

再次处理后得到:“etrsn rh seantdkoi“ 现在要求根据密文和处理次数(相当于密钥)计算出明文。 输入文件(poker_in.txt) 输入文件包含两行:前一行为密文内容,以.号结尾(.号不是密文内容),密文内容中不包含.号,后一行为密钥,即加密时重复的次数。 输出文件(poker_out.txt) 输出数据仅有一行,即对密文,输出一行明文(以.结尾)。 样例 输入(poker_in.txt) etrsn rh seantdkoi. 2 输出(poker_out.txt) shaken not stirred. 3、猜数字 源程序名guess.c(hand.cpp) 输入文件名 guess_in.txt 输出文件名 guess_out.txt 问题描述 猜数字是一个非常流行的电脑游戏,电脑选择四个不重复的数字,你要根据电脑的提示尽快猜出这个数字。 它的游戏规则如下:玩家首先输入四位不同的数字(0~9),电脑会根据玩家的输入和事先确定的数字进行匹配,并给出提示,提示的形式是“#A#B”,其中“#”是0~4的数字,“#A”表示猜中了数字及其位置的数目,“#B”表示仅猜中数字的数目。例如,电脑选择的是“1234”,而玩家猜的数字是“6139”,那么电脑给出的提示是“1A2B”,因为数字“3”及猜中了数字,也猜对了位置,而数字“1”只猜中了数字,所以电脑给出的提示就是“1A2B”。 如果你在猜测一次数字之后仔细记录并观察电脑的提示,可以计算出电脑所给出的实际的数字。 输入文件(guess_in.txt) 包含了多个测试序列,每个序列的第一行是一个单独的正整数N,它表示猜测的次数,接下来的N 行表示N次猜想的记录。 它的形式为:#### #A#B 其中前面四个数字是猜想的数字,后面是电脑对猜想的提示。输入的N为0或者为负数则表明输入结束,并且无须处理,而且每个测试序列都提供了足够的信息,可以让你猜出该数字。 输出文件(guess_out.txt) 输出:对于每个测试序列,输出一行,给出电脑选定的数字,要求数字和位置都正确。 样例 输入(guess_in.txt) 5

相关主题