㈠ 有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]);
}