猴子選大王c語言pta,猴子選大王c語言數組

本文目錄一覽:

C語言 猴子選大王 高手糾錯啊。。。。。。

#includestdio.h

#includemalloc.h

int main()

{

struct king{

int data;

struct king *next;

};

int i,m,n;

scanf(“%d%d”,n,m);

struct king *p,*head,*t,*tmp;

head=(struct king*)malloc(sizeof(struct king));

head-next=NULL;

head-data=1;

p=head; //循環鏈表

for (i=2;i=n;i++)

{

t=(struct king*)malloc(sizeof(struct king));

t-data=i;

t-next=NULL;

p-next=t;

p=p-next;

}

p-next=head;

p=head; //刪除鏈表

while(p-next!=p)

{

for(i=1;im-1;i++)

p=p-next;

tmp=p-next;

p-next=p-next-next;

p=tmp-next;

free(tmp);

}

printf(“%d”,p-data);

getchar();

getchar();

return 0;

}

//

p=tmp-next;

你那個是指向下下個節點了

求高手幫忙調試一下「猴子選大王C語言代碼」誠謝!本人新手學C語言

#include stdio.h

#define SHUMU 10

void main()

{

int i=0, weizhi=0,shumu=10;

int houzi[SHUMU]={1,1,1,1,1,1,1,1,1,1};

while(shumu1)

{

i=1;

while(i6)

{ weizhi++;

if(weizhi9) weizhi=weizhi-10;

if(houzi[weizhi]=1) i++;

}

houzi[weizhi]=0;

shumu–;

}

i=0;

while(i10)

{

printf(“第%d只猴子是大王\n”, i);

i++;

}

}

C數組猴子選大王

這是運行結果 需要的話給我個郵箱

/*

結果:

————————

**********猴子競選大王*********

–請輸入猴子的總數num = 10

按順時針方向就坐的猴子編號依次是:

猴子1 猴子2 猴子3 猴子4 猴子5 猴子6 猴子7 猴子8 猴子9 猴子10

規定數字,報出這個數的猴子將被淘汰出局,這個數max_hao = 2

被淘汰出局的猴子依次是:

猴子2 猴子4 猴子6 猴子8 猴子10 猴子3 猴子7 猴子1 猴子9

競選結果:

猴王:5

—————————–

*/

C 語言中關於猴子選大王的代碼

注釋寫得很清楚 相信你能看懂 #include stdio.h

#include stdlib.h

#define MAXSIZE 100

typedef struct Node

{

int data;//存儲猴子編號

struct Node *next;

}*List;

/* 用鏈表來得出大王的序號 */

int LinkedList(int num_monkey,int number);

/* 用順序表來得出大王的序號 */

int SequenceList(int num_monkey,int number);

/* 創建循環單鏈表 */

List CreateList(int n);

void main()

{

int m, n, way, king;

printf(“請輸入猴子個數:”);

scanf(“%d”, n);

printf(“請輸入要報的數:”);

scanf(“%d”, m);

while (1)

{

printf(“\n請選擇解決問題的方法:\n”);

printf(“1.單鏈表\n”);

printf(“2.順序表\n”);

scanf(“%d”, way);

if (way == 1)

{

king = LinkedList(n,m);

break;

}

else if (way == 2)

{

king = SequenceList(n,m);

break;

}

else

{

printf(“輸入不合法!\n”);

}

}

printf(“%d號猴子是大王\n”, king);

}

/* 創建循環單鏈表 */

List CreateList(int n)

{

int i;

List head, p;

head = (List)malloc(sizeof(struct Node));

head-next = head;

for (i = 1; i n; ++i)

{

p = (List)malloc(sizeof(struct Node));

p-next = head-next;

head-next = p;

}

p = head;

for (i = 0; i n; ++i)

{

p-data = i+1;

p = p-next;

}

return head;

}

/* 用鏈表來得出大王的序號 */

int LinkedList(int num_monkey,int number)

{

int i,j;

List head = CreateList(num_monkey);

List tail = head;//用來存儲最後一個節點的地址

List out,p;//out指向要淘汰的節點,p指向其前一個節點

/* 讓tail指向最後一個節點 */

for (i = 1; i num_monkey; i++)

{

tail = tail-next;

}

/* 淘汰的猴子個數比總個數少1,報數一輪就淘汰一個猴子,所以需要報數的輪數比

猴子總個數少1*/

for( i = 1; i num_monkey; i++ )

{

p = tail;

/* 讓p指向要淘汰的猴子的前一個 */

for ( j = 1; j number; j++ )

{

p = p-next;

}

out = p-next;

/* 如果最後一個猴子被淘汰就更新尾節點 */

if (out == tail)

{

tail = p;

}

p-next = out-next;

printf(“猴子%d淘汰\n”, out-data);

free(out);//刪除被淘汰猴子的節點

}

return p-data;

}

/* 用順序表來得出大王的序號 */

int SequenceList(int num_monkey,int number)

{

/* 用來表示個猴子的信息,如果猴子出局就存儲0,否則存儲1。第一個元素不使用 */

int monkey[MAXSIZE];

/* 用來表示出局的猴子的序號 */

int out = 1;

/* 用來表示當前猴子的個數 */

int num_now = num_monkey;

int i,j;

for (i = 0; i num_monkey+1; i++)

{ /* 開始將每個元素置1 */

monkey[i] = 1;

}

/* 報數次數比猴子個數少一 */

for (i = 1; i num_monkey; i++)

{

out = 1;

/* 報數整個過程 */

for (j = 0; j number; j++)

{

/* 如果序號數大於猴子個數,表示循環了一圈,那麼去掉那個圈數 */

if (out num_monkey)

out -= num_monkey;

/* 之前已經出局的猴子不參加報數 */

while(monkey[out] == 0)

{

out ++;

/* 如果序號數大於猴子個數,表示循環了一圈,那麼去掉那個圈數 */

if (out num_monkey)

out -= num_monkey;

}

out++;

}

out–;//報完數後out應該是被淘汰的猴子的下一個,所以要向前移動

monkey[out] = 0;

printf(“猴子%d淘汰\n”,out);

}

while(monkey[out] == 0)

{

out ++;

/* 如果序號數大於猴子個數,表示循環了一圈,那麼去掉那個圈數 */

if (out num_monkey)

out -= num_monkey;

}

return out;

}

c語言鏈表問題,猴子選大王,哪位大神能幫我看看

#include stdio.h

#include stdlib.h

typedef int status;

typedef int ElemType;

typedef struct NODE_MONKY

{

ElemType serial_number;

struct NODE_MONKY *next;

}LNode, *LinkList;

void Build(LinkList L,int n){

LinkList p,q;

p = L;

for(int i=0;in;i++)

{

printf(“%d\n”,i+1);

q = (LinkList)malloc(sizeof(LNode));

q – serial_number = i+1;

q – next = NULL;

p – next = q;

p = q;

}

p – next = L-next;

}

void Print(LinkList L,int x)//計算單鏈表的長度,然後輸出單鏈表

{

    LinkList p;

    p=L-next;

    while(x–)

    {

        printf(“%d “,p-serial_number);

        p=p-next;

    }

}

void Delete(LinkList L,int x,int y)//刪除值為x的結點

{

    LinkList p,q;

p=L-next;

for (int i = 1; i  y; i++)

{

for(int j = 2; j  x ; j++)

{

p = p-next;

printf(“serial_number change = %d\n”,p-serial_number);

}

q = p-next;

        p-next = q-next;

        printf(“delete %d success\n”,q-serial_number);

        printf(“p-serial_number = %d\n”,p-serial_number);

        free(q);

        q = NULL;

        p = p-next;

        printf(“p-serial_number now = %d\n”,p-serial_number);

}

}

int main()

{

int m,n;

LinkList L,p,q;

L = (LinkList)malloc(sizeof(LNode));

L – next = NULL;

L – serial_number = 1;

printf(“please input the number of mounky.\n”);

scanf(“%d”,n);

Build(L,n);

Print(L,n);

printf(“Please input the number M\n”);

scanf(“%d”,m);

Delete(L,m,n);

}

猴子選大王,C語言描述 請相信解釋我的代碼!

給你原文做了注釋。還不懂hi我

#include stdio.h

#includemalloc.h

typedef struct LNode

{

int num;

struct LNode *next;

}LNode, *LinkList; //定義結點

LinkList InitList(LinkList L,int n) //初始化循環鏈表

{

LinkList p,q;

int i;

L = (LinkList)malloc(sizeof(LNode)); //頭結點

L-num = 1; //一號猴子

q=L;

for(i = 2; i = n; i++) //從二號猴子開始生成結點

{

p = (LinkList)malloc(sizeof(LNode));

p-num = i;

q-next=p;

q=p;

}

q-next = L; //使鏈表循環起來

return L;

}

void ListDelete_L(LinkList L,int n)

{

LinkList p,q;

int j=1; //j為計數器

p=L;

while(p-next!=p) //p-next=p時是只剩一個結點。

{

while(j!=n-1) //當j=n-1時應該將該結點的下一個結點刪除。當就j!=n-1時就應該指針向後移,同時計數器加一

{

p=p-next;

j++;

}

q=p-next; //q即為被點到的猴子

p-next=p-next-next; //刪除q結點

printf(“%d\n”,q-num);

free(q);//釋放

j=0; //計數器清零,重新開始計數

}

printf(“%d”,p-num);//此時的結點就是大王

free(p);

}

int main()

{

LinkList L=NULL;

int n,m,e=0;

printf(“請輸入猴子個數:”);

scanf(“%d”,m);

printf(“請輸入n值:”);

scanf(“%d”,n);

if(mn){printf(“m應該 大於n請重新輸入”);return 0 ;

}

L=InitList(L,m);

printf(“出列的順序為:”);

ListDelete_L( L,n);

return 0;

}

原創文章,作者:BPTF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137064.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BPTF的頭像BPTF
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相關推薦

  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python去掉數組的中括弧

    在Python中,被中括弧包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括弧。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字元串進行格式化處理。 names = [‘A…

    編程 2025-04-29

發表回復

登錄後才能評論