一道狐狸找兔子的题

Ø 围绕着山顶有 10 个圆形排列的洞,狐狸要吃兔子,兔子说: 可以,但必须先找到我,我就藏身于这十个洞中的某个 洞。你从1号洞找,下次隔1个洞(即 3 号洞)找,第三次隔2个洞(即 6 号洞)找,再隔 3 以后在这个圆圈中如 此类推,次数不限。 但狐狸从早到晚进进出出了 1000 次,仍没有找到兔子。
Ø 问兔子究竟藏在哪个洞里?
自己编的程序:
#include<stdio.h>
#define NUM 10
const int count=1000;
void main(void)
{
int i;
int curr = 0;
int hole[10] = {0};
for(i=1;i<=count;++i)
{
hole[curr] = 1;
curr += (i+1);
if((curr)>9)
curr=curr%10;
}
printf("兔子可能藏在以下洞里:/n");
for(i=0;i<NUM;i++)
{
if(hole[i]==0)
printf("第%d个洞/n",(i+1));
}
}
下面是班上一个同学写的,挺有意思的,和大家分享
// 运行结果说明:
// 1.在控制台中Y表示“有可能在这个洞”,N表示“狐狸已来过”
// 2.在D盘根目录生成一个FindSteps.txt 里边有查找过程的演示
//  
// 梁鑫辉
// 2011年4月13日
//
//
#include <stdio.h>
char hole[10];
int Holes()
{
int i=0;
int count=10;
for(i=0;i<10;i++)
{
printf("  %c",hole[i]);
if(hole[i]=='N') count--;
}
printf("/t剩余:%d个洞/n",count);
return count;
}
void main()
{
int i,j;
int n=2;
int current=0;
FILE *fs;
if(NULL==(fs=fopen("d://FindSteps.txt","w")))
{
printf("创建文件失败!");
getch();
exit(1);
}
//每个洞都标记为Y,表示“兔子可能在这里”
for(i=0;i<10;i++)
hole[i]='Y';
fprintf(fs,"下面演示了找兔子的过程:/n");
fprintf(fs,"次数 一 二 三 四 五 六 七 八 九 十/n");
for(i=0;i<1000;i++)
{
hole[current]='N';
//打印到文件
fprintf(fs,"%d/t",i+1);
for(j=0;j<current;j++)
fprintf(fs,"   ");
fprintf(fs,"×/n");
//输出到屏幕
Holes();
current+=n;
n++;
if(current>9) current=current%10;
}
fprintf(fs,"/n*************************************/n");
fprintf(fs,"最终 一 二 三 四 五 六 七 八 九 十/n");
fprintf(fs,"     ");
for(i=0;i<10;i++)
{
if(hole[i]=='N')
fprintf(fs,"× ");
else fprintf(fs,"   ");
}
fclose(fs);
}
注:以上程序均无错误,在vs2005上运行通过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值