㈠ 有1~12十个山洞,一只狼从第0个山洞开始寻找兔子。第一次隔一个山洞,第二次隔两个,麻烦用c语言编写
#include <stdio.h>
int main(void)
{
int j,k=0,i=0,n[10];
for(j=1;j<=12;j++)
{
printf("%d ",j); //显示每一个查看的洞穴
k++;
n[i]=j;
j=k+j;
i++;
}
if(j>12) j=j-k-1;
printf("\n最后查看的洞穴是第%d个\n",j);//显示最后一次查看的洞穴
printf("一共查看了%d个洞穴\n",i);//一共查看的次数
for(j=1;j<=12;j++)
{
for(k=0;k<=i;k++)
if(j==n[k]) break;
if(k>i) printf("%d ",j);//显示没有查看的洞穴
}
printf("\n没有查看的洞穴一共有%d个!",12-i); //没有查看的洞穴个数
return 0;
}
答案以修改,根据自己的需要你可以自主的删除多余项。
㈡ C语言狼兔子洞
#include<stdio.h>
voidmain()
{
inti,s=0,a[10]={0};
for(i=0;i<500;i++)
{s+=i+2;a[s%10]++;}
printf("兔子可能在");
for(i=0;i<10;i++)
if(a[i]==0)
printf("第%d个,",i+1);
printf("洞里");
}
㈢ C语言 C语言
#include <stdio.h>
int main(int argc, char *argv[])
{
int aa[31]={0},i,a=0,n,j=1; //为了编号与组数下标相同,组数下标0不用,数组成员为最大加1是31个。
printf("输入围绕山顶的洞数:");
scanf("%d",&n);
if(n>=10&&n<=30)
{
for(i=0;i<10000;i++)
{
aa[(a+i)%(n-1)+1]++;a=a+i;
}
while(j<n&&aa[j]!=0)j++; //在围绕山顶的洞数有没有空的
if(j<=n&&aa[j]==0) //如果有空洞就输出所有兔子可能藏身洞的编号
for(i=1;i<n+1;i++)
{
if(0==aa[i])
printf(" %-2d号洞\n",i);
}
else
printf("It is nice!");
}
else
printf("数字不符合要求,退出\n");
return 0;
}
㈣ 一道C语言的编程题,兔子洞的问题。
# include <stdio.h>
int main()
{
//Hole表示20个三洞 ,Hole【21】是为了数组下标从1开始,方便对题目的理解
//初始化为0,表示还没有被 灰狼搜索
int Hole[21] = {0};
int i = 1,j;
//进行15次循环,表示灰狼搜索了15次
for(j = 1; j <= 15; j++)
{
Hole[i] = 1; //将洞i设为1,表示编号为i的洞已经搜索了
//设置下一个要搜索的山洞编号,因为隔两个,所以加3
//比如,一开始是1,然后是i1+3=4,隔着2和3号洞
//最后对20取余,是为了不超出20的范围,比如搜索完19号洞后,加上3是22,22%20=2,下一个就搜索2号洞
i = (i + 3) % 20;
if(i == 0)
Hole[20] = 1; //如果i为20,下次设置被访问的将是Hole【0】 = 1,所以将Hole【20】单独考虑
}
//15次循环完后,1-20剩余Hole【】数组中为0的,是为被搜索的山洞
for(i = 1; i <= 20; i++)
{
if(Hole[i] == 0) //如果为被搜索,输出该山洞号,即兔子所在的洞
printf("%d ",i);
}
return 0;
}
㈤ 狼追兔子的c语言实现
其实不用循环1000次的,我有个思路
按照兔子给出的算法,把得出的结果存到一个单链表或者数组中(用来检索重复),
然后定义一个数据结构存储每一个过程,还要定义一个单链表或者数组来存储每一个过程,如果发现某一个过程,和以前的出现过的某个过程重复就可以退出循环了,因为一个过程总是可以由它的前一个过程推算出来的。
最后,结果集合中不包含的洞数就是结果了。
说具体点就是
1+2 是 第一个过程 3 是第一个结果
3+3 是 第二个过程 6 是第二个结果
6+4 是 第三个过程 10 是第三个结果
0+5 是 第4个过程 5 是第4个结果
5+6 是 第5个过程 1 是第5个结果
1+7 是 第6个过程 8 是第6个结果
8+8 是 第7个过程 6 是第7个结果
6+9 是 第8个过程 5 是第8个结果
5+0 是 第9个过程 5 是第9个结果
5+1 是 第10个过程 6 是第10个结果
以此类推
由上可知,用来存储过程的结构体只需要包含一个加数成员
和一个被加数成员,如果两个过程的加数成员和被加数成员都是相同的,就可以退出循环了,这样最多循环10×10次就可以得到结果,实际上只需要20次,就会退出循环。
过程中加数成员和被加数成员以及结果一旦超过或者等于10,就减去10,这是因为按照兔子的算法,11+12和1+2根本就是一样的。
㈥ C语言:.围绕着山顶有10个洞,一只兔子和一只狐狸
#include<stdio.h>
int main()
{
int sum=0,inter[10]={0,0,0,0,0,0,0,0,0,0};
int i,HollNum;
for(i=1;i<=1000;i++)
{
sum=sum+i;
HollNum=sum%10;
// printf("HollNum is : %d",HollNum);
if(HollNum==0)
inter[0]=10;
else
inter[HollNum]=HollNum;
}
for(i=0;i<10;i++)
if(inter[i]==0)
printf("\nThe safe holl is :%d\n",i);
㈦ c语言 关于狼捉兔子存不存在安全洞的问题。。。
先证必要性,如果m,n不是互斥(最大公约数不是1)
那么假设在狼走了a次后绕圈b次后到达编号为1的洞,有
am=bn+1.
因为m,n不是互斥,所以可以提出一个公共约数i,等式两边除以i
am/i=bn/i+1/i
am/i和bn/i都是整数,1/i是小数,等式表示两整数之差是一个小数,这明显是错的。所以m,n必须互斥,这时i=1
再证明充分性,如果m,n互斥,那么两者最小公倍数是mn.也就是说在狼走n步之前是不能回到原点(0)的,只要证明狼这n之内所有点都不相同即可知狼走遍所有点。
假设在n步内狼两次经过同一点i,那么第一次有
a1m=b1n+i
第二次有a2m=b2n+i
两式子相减得到
(a2-a1)m=(b2-b1)n
(a2-a1)*m是两者的公倍数
因为是在n步之内,所以a2-a1<n
所以(a2-a1)*m<nm 这和最小公倍数定义违背
所以狼n步中每步都不同,那么必然遍历所有点
你的算法我没细看(一来就开十万的数组,有必要么),求最大公约数用辗转相除法,算法可以再网上找到
㈧ C语言 狐狸捉兔子
应该是,2,4号洞或者7号洞,代码如下:
------------------------
/*狐狸捉兔子——围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,
我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,
以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?
求解决此问题的C程序代码。谢谢!
*/
#include <stdio.h>
#include<iostream.h>
void main()
{
bool b[10];
int base=0;
for(int i=1;i<=1000;i++)
{
base+=i;
base%=10;
if(base==0) base=10;
b[base-1]=true;
}
for(i=0;i<10;i++)
{
if(!b[i])
printf("%d\n",i+1);
}
}
/*测试结果
2
4
7
*/
㈨ 急急快!!!在线等!狐狸抓兔子的c语言编程
在某个山上有n个洞,住着一直狐狸和兔子,这n个洞呈圆形排列,分布在山的周围,每个洞之间有一定的距离,狐狸总是想去捉吃兔子。有一天,兔子远远地看见了狐狸,便对狐狸说:“这样吧,我们玩个游戏,把n个洞一次编成1至n号,你住的洞编号n号洞,我藏在另外的某个洞里。你从自己的洞出发,沿着一个方向走,第一次走一个间隔(相邻的两洞间为一个间隔),进入1号洞寻找我,第二次走2个间隔,进入3号洞寻找我,依次类推,次数不限,如果我被你找到了,我就甘愿成为你的美餐,如何?请为兔子找出不安全的洞号。程序中用a数组元素模拟每个洞,数组元素的下标为洞号,数组元素中的值为0时,表示该洞安全,为1时表示不安全。例如,形参n的值为30时,不安全的洞号为0、2、5、9、14、20、27.我来帮他解答
㈩ 编程4 围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我, 我就藏身于这十个洞中
#include<stdio.h>
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10}; // 洞
int i,j,k;
for(i=1,j=1;i<=1000;j=j+i)
{
if(j>10)
j=j-10; //循环
for(k=0;k<10;k++) //经过的洞置0
if(j==a[k])
a[k]=0;
i++;
}
printf("兔子在的洞:");
for(k=0;k<10;k++) //输出不是0的即是没经过的洞
if(a[k]!=0)
printf("%5d",a[k]);
}