计算机C语言趣味的程序设计——题目百例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Contest - 2011级C语言课程大作业

Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public

写在最前:

本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了………………..

由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的….

呵呵……..有一两个….偷了下懒哦………

提供原题目还有本人自己的解答的源代码。感谢大家的。。。。建议…………….

问题A: 趣味程序设计_狼追兔子

时间限制: 1 Sec 内存限制: 128 MB

提交: 341 解决: 63

[提交][状态][讨论版]

题目描述

一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?

输入

有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。

输出

兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。

样例输入

10

8

15

样例输出

2 4 7 9

2 4 5 7 8 9 11 12 14

提示

用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。

#include

#include

int ok[110];

int main()

{

int n,s,i,find;

while(scanf("%d",&n)!=EOF)

{

memset(ok,0,sizeof(ok));

for(i=1;i<=200;i++)

if(!ok[find=(i*(i+1)/2)%n])

if(find==0)

ok[n]=1;

else

ok[find]=1;

for(s=0,i=1;i<=n;i++)

s+=ok[i];

for(i=1,find=0;i<=n;i++)

if(!ok[i])

{

if(find!=(n-s-1))

{

printf("%d ",i);find++;

}

else

printf("%d",i);

}

printf("\n");

}

return 0;

}

问题B: 趣味程序设计_巧夺偶数

时间限制: 1 Sec 内存限制: 128 MB

提交: 174 解决: 73

[提交][状态][讨论版]

题目描述

桌子上有25颗棋子。游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3颗棋子。双方照这样取下去,直到取光所有的棋子。于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。请编程实现人机游戏。人先走,计算机后走。若游戏结束,则输出“Game over!”。

输入

输入人取走棋子的个数。输入一次,按一次回车。游戏不止一轮。按下文件结尾符,退出游戏。必须在完成一轮后退出游戏。不得中途退出游戏。

输出

输出计算机取走的个数,每次输出最优解。

样例输入

1

1

1

1

1

1

1

2

1

3

2

1

3

1

样例输出

3

3

3

3

3

3

Game over!

2

3

1

2

3

1

Game over!

#include

int main()

{

int n,sum=25;

loop:

while(scanf("%d",&n)!=EOF)

{

sum-=n;

if(sum==1)

{

printf("1\nGame over!\n");

sum=25;

goto loop;

if(sum==3||sum==2)

{

printf("1\n");

sum--;

}

}

else

{

if(sum<=0)

{

printf("Game over!\n");

sum=25;

goto loop;

}

else

{

printf("%d\n",4-n);

if(n==1)

sum-=3;

if(n==2)

sum-=2;

if(n==3)

sum-=1;

}

}

}

return 0;

}

问题C: 趣味程序设计_五猴分桃

时间限制: 1 Sec 内存限制: 128 MB

提交: 186 解决: 102

[提交][状态][讨论版]

题目描述

5只猴子一起摘了1堆桃子。因为太累了,它们商量决定,先睡一觉再分。过了不知多久,1只猴子来了。它见别的猴子没来,便将这1堆桃子平均分成5份,结果多了1个,就将多的这个吃了,拿走其中的1堆。又过了不知多久,第2只猴子来了。它不知道有1个同伴已经来过,还以为自己是第1个到的呢。于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个,拿走其中的1堆。第3只、第4只、第5只猴子都是这样……问这5只猴子至少摘了多少个桃子?第5个猴子走后还剩下多少个桃子?

相关文档
最新文档