導航:首頁 > 編程語言 > 小猴編程

小猴編程

發布時間:2022-01-18 07:00:19

『壹』 C語言編程題,關於猴子分桃問題

高質量不允許參考補充內容,這種打回的管理員需要回爐培訓。

『貳』 C語言編程:一隻猴子摘了若干個桃子,已知第1天猴子吃了所摘桃子的一半多一個;

#include<stdio.h>
int f(int n)
{
int x=0;
int i=0;

while(n>0)
{
x=2*x+1;
i++;
if(i==2)
{x=4;}
n--;
}
return x;
}
void main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
}

『叄』 C語言編程 小猴吃了5個桃子,大猴吃的是小猴的3倍少1,編程並輸出他們共吃多少桃

……這還要編程
#include<stdio.h>

void main()
{
int a=5;
printf("一共吃了%d個桃\n",a+3*a-1);
}

『肆』 一個有關猴子吃桃子的編程題,用c語言循環語句怎麼做

1、首先在電腦中打開vc6.0,新建一個項目,添加頭文件,如下圖所示。

『伍』 猴子選大王的編程,數據結構方法

如果給好評的話,麻煩寫一句:
章魚桶是個好人


不確定具體題目,從網上摘抄來的題目:

山上有n只猴子要選大王,選舉辦法如下:所有猴子從1到n進行編號並圍坐一圈,從第一號開始按順序1,2,...m繼續報數,凡是報m號的猴子都退出到圈外,照此循環報數,直到圈內只剩下一隻猴子時,這只猴子就是大王.輸出大王的編號。


這個題目是循環鏈表的應用,循環鏈表參見:

http://ke..com/view/178643.htm

#include<stdio.h>
#include<stdlib.h>

{
intposition;
CircularLinkedListElement*next;
};
intmain(void)
{
/*
變數聲明
*/
intn,m;
inti;
CircularLinkedListElement*start;
CircularLinkedListElement*p;
CircularLinkedListElement*q;
intstep;
/*
讀入猴子數量n,以及淘汰的號碼m
注意輸入的是正整數,為了滿足一般從0開始計數的規律,讀入後將n、m均減一
*/
printf("Pleaseentermonkeysnumbern:");
scanf("%d",&n);
n--;
if(n<=0)
{
fprintf(stderr,"**Error:Monkey'snumbershouldbepositive. ");
return1;
}
printf("Pleaseenterobsoletenumberm:");
scanf("%d",&m);
if(m<=0)
{
fprintf(stderr,"**Error:. ");
return1;
}
m--;

/*
創建循環鏈表
*/
start=(CircularLinkedListElement*)malloc(sizeof(CircularLinkedListElement));
if(start==NULL)
{
fprintf(stderr,"**Error:mallocerror. ");
return1;
}
start->position=0;
start->next=NULL;
p=start;
for(i=1;i<=n;i++)
{
q=(CircularLinkedListElement*)malloc(sizeof(CircularLinkedListElement));
if(q==NULL)
{
fprintf(stderr,"**Error:mallocerror. ");
return1;
}
q->position=i;
q->next=NULL;
p->next=q;
p=q;
}
p->next=start;

/*
開始淘汰猴子
*/
step=1;
while(start->next!=start)
{
printf("#step%d ",step++);
printf("Currentmonkeys:");
p=start;
while(p->next!=start)
{
printf("%d",p->position+1);
p=p->next;
}
printf("%d ",p->position+1);
p=start;
for(i=0;i<(m-1);i++)
p=p->next;
q=p->next;
p->next=q->next;
start=q->next;
printf("Obsoletemonkeyis:%d ",q->position+1);
free(q);
}
/*
輸出猴王
*/
printf("Themonkeykingis%d. ",start->position+1);
return0;
}

英文系統,所以輸出都寫的是英文,見諒

『陸』 c語言編程解決小猴爬山

上山下山應該是一樣的,都是讓電腦一個值一個值去判斷。我的想法是讓電腦先判斷出所有可能的組合,比如2+3+5和3+2+5是一個概念,然後建立一個排列組合的函數,對組合進一步處理。上山為例:
#include<stdio.h>
intjc(inta)//階乘
{
inti,j=1;
for(i=a;i>0;i--)
{
j=j*i;
}
returnj;
}
intmain(intargc,char*argv[])
{
intn;//方法數
constintt=50;//台階數
inti,j,k;

for(i=0;i<=25;i++)//2*25=50
for(j=0;j<17;j++)//3*16=48
for(k=0;k<13;k++)//4*12=28
{
if(2*i+3*j+4*k==t)//兩步、三步或四步
{
n=n+jc(i+j+k)/(jc(i)*jc(k)*jc(j));
}
}
printf("上山總數為:%d種 ",n);
return0;
}

這個程序計算出來上山有3731種

『柒』 猴子撈月,c語言編程

#include"stdio.h"
#include"conio.h"
#definemax30001
main()
{
inti,k,m,n,num[max],*p,h,count,c;
FILE*fp;
fp=fopen("LeftQueue.txt","w+");
printf("1Pleaseinputthetotalnumber(beginwithno.1)");
scanf("%d",&n);
printf("");
scanf("%d",&count);
printf("");
scanf("%d",&c);
fprintf(fp,"編號從1到%d,報%d者出列,每列存放%d個數據。 出列順序如下: ",n,count,c);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
h=0;
while(m<n-1)
{
if(*(p+i)!=0)k++;
if(k==count)
{
fprintf(fp,"%7d",*(p+i));
*(p+i)=0;
k=0;
m++;
h++;
if(h%c==0)fprintf(fp," ");
}
i++;
if(i==n)i=0;
}
while(*p==0)p++;
printf(" 1%disleft.%dnumberleftthequeue.",*p,h);
fprintf(fp," 最後留下的數為:%d;共%d個數離開。",*p,h);
fclose(fp);
getch();
}

『捌』 計算機編程c++ 猴子分桃

#include<iostream>
#include<map>
usingnamespacestd;

longlongfastpow(inta,intb){
longlongans=1;
longlongtemp=a;
while(b){
if(b&1){
ans*=temp;
}
temp*=temp;
b>>=1;
}
returnans;
}

intmain(){
intN,M;
cin>>N>>M;
longlongleft=(M-1)*(fastpow(M-1,N-1)-1);
if(left==0){
left=M-1;
}
cout<<left<<endl;
for(inti=0;i<N;i++){
if(left%(M-1)){
cout<<"ERROR:"<<left;
}
else{
left=left/(M-1)*M+1;
}
}
cout<<left<<endl;
}

『玖』 編程 猴子吃桃問題 猴子第一天摘下若干個桃子當機吃了一半還不過癮又吃了一個 以後每天早

先分析問題:用逆向思維來思考它,根據題意「以後每天早上吃前天剩下的一半零一個」,則我們可以用逆向思維來推導它,即從第十天往前推。已知第十天有一個,根據題意第九天應該就是(1+1)*2=4個,第八天應該就是(4+1)*2=10,第七天應該就是(10+1)*2=22,第六天應該就是(22+1)*2=46,
依此類推,直至第1天應該就是第2天(766+1)*=1534個桃子,即猴子第一天摘了1534個桃子。
為了驗證這個推導的正確性,你可以按正常邏輯來把它(即此時由前往後)推導,即由第一天1534個桃子,第二天就是1534/2-1=766個桃子,依此類推,直至第十天,那麼猴子此時就會發現只剩一個。


至此,我們由了推導的思想,再來編寫的代碼,就是小菜一碟的事情啦,實現的它方式無非就是那麼兩種,一種是簡單的for循環,另一種是遞歸。這里我採用遞歸,因為解決此類問題往往用遞歸來思考它,會讓問題變得更簡單。按照數學思維來說 就是求未知數,則可以根據已知數出發進行求解(那麼這里的已知數已經告訴了我們,它說第十天只有一個桃子)。

下面是我的遞歸演算法來求解它的方法:

#include<iostream>
usingnamespacestd;
intrecurrent_monkey(intdays)//猴子吃桃遞歸
{
intpeach;
if(days==10)peach=1;//遞歸出口條件(已知條件第10天只有一個桃子)
elsepeach=(recurrent_monkey(days+1)+1)*2;
returnpeach;
}
intmain()
{
intdays=1;
cout<<recurrent_monkey(days)<<endl;
}

『拾』 用C++編程 猴子選大王

#include <iostream>
using namespace std;
template <class datatype> class LinkList;

template <class datatype>
class Node
{
friend class LinkList<datatype>;//友元類
private:
datatype data;//計猴子號
Node<datatype> *next;
};

template <class datatype>
class LinkList
{
public:
LinkList();
void monkey(int m); //建立有m個元素的單鏈表
datatype Get(int a); //取單鏈表中第i個結點的元素值
datatype Delete(int n); //在單鏈表中刪除第n個結點
private:
Node<datatype> *head,*tail; //單鏈表的結構指針
};

template <class datatype>
LinkList<datatype>:: LinkList( )
{head=new Node<datatype>; head->next=NULL;}

template <class datatype>
void LinkList<datatype>::monkey(int m)
{
int i;//整型變數i,用於計數
Node<datatype> *p,*q;//聲明結構指針
p=new Node<datatype>;//為p分配空間
p->data=1; //初始化p結點data域為1
p->next=NULL;//初始化p結點next域為空
head=p;//鏈表頭指針head賦值為p
q=p; //q賦值為p
for (i=2; i<=m; i++) //用循環結構構造鏈表
{
p=new Node<datatype>;//為p配內存空間
p->data=i; //初始化p結點data域為i,表示猴子號
q->next=p; //將p點加到鏈表尾部
q=p; //讓指向鏈表尾部結點
p->next=NULL; //鏈表尾部為空
}
tail=q;//鏈表尾
tail->next=head;//鏈表尾部指向鏈表頭,形成循環鏈表
}

template <class datatype>
datatype LinkList<datatype>::Delete(int n)
{
Node<datatype> *p,*q;
int j=0;
q=tail; //指向循環鏈表尾部
cout<<"被刪除的猴子號碼依次為:"<<endl;
while (q!=q->next) //剩餘結點數不為1,則繼續循環
{
p=q->next;//p賦值給下一個相鄰結點
j++;
if(j%n==0)
{
cout<<p->data<<ends;
q->next=p->next;//刪除此結點
delete p;//釋放空間
p=NULL;
}
else q=p;//q指向相鄰的下一個結點p
}
cout<<endl;
head=q;//head指向結點q,q為鏈表中剩餘的一個結點
return head->data;
}

template <class datatype>
datatype LinkList<datatype>::Get(int a)
{
Node<datatype> *p;
int j;//計數器
p=head->next; j=1; //或p=head; j=0;
while (p && j<a)
{
p=p->next; //工作指針p後移
j++;
}
if (!p) throw "a值不合法";
else return p->data;
}

void main()
{
int m,n;
LinkList<int>mon;
cout<<"請輸入猴子的總數:"<<endl;
cin>>m;
cout<<"請輸入要刪除猴子的所報的數:"<<endl;
cin>>n;
mon.monkey(m);
mon.Delete(n);
cout<<"猴王是:"<<mon.Get(1)<<"號"<<endl;
}

閱讀全文

與小猴編程相關的資料

熱點內容
怎樣把圖片分別放置在文件夾中 瀏覽:871
推流伺服器地址是什麼 瀏覽:630
java允許多重繼承 瀏覽:511
解壓小玩具好玩又可愛 瀏覽:408
騰訊雲大帶寬伺服器 瀏覽:821
加密鎖的售後 瀏覽:268
linux登不上去 瀏覽:729
聯想伺服器休眠後如何喚醒 瀏覽:111
四川話女孩學習編程 瀏覽:322
編譯原理文法區分 瀏覽:1001
教師可以做程序員嘛 瀏覽:637
終結戰場安卓國際服怎麼下載 瀏覽:155
現在的高端伺服器屬於什麼 瀏覽:810
企業銀行解壓流程 瀏覽:447
用app壓縮文件 瀏覽:227
柱子正負零加密區 瀏覽:322
車輛貸款交完要去4s店解壓 瀏覽:65
電腦可以運行plc編程嗎 瀏覽:594
下載app的怎麼連不上 瀏覽:765
程序員做量化交易有前途么 瀏覽:233