C语言 猴子报数问题怎么做

Python09

C语言 猴子报数问题怎么做,第1张

#include <stdio.h>

#include <malloc.h>

typedef int datatype

typedef struct node {

datatype info

struct node *next

}NODE

void show(NODE *head) {

NODE *p

for(p = head->next p != head p = p->next)

printf("%d ",p->info)

printf("\n")

}

NODE *josefnode(int n) { // 创建有头结点单向循环链表

int i

NODE *p, *head

head = p = (NODE *)malloc(sizeof(NODE))

head->info = 0

head->next = NULL

for(i = 0 i < n ++i) {

p->next = (NODE *)malloc(sizeof(NODE))

p->next->info = i + 1

p = p->next

}

p->next = head

return head

}

void josef(int n,int s, int m) {

int cnt

NODE *h, *p, *q

if(s > n) {

printf("n = %d, s = %d, s > m\n",n,s)

return

}

h = josefnode(n)

for(cnt = 1,p = h cnt < s ++cnt,p = p->next)

show(h)

cnt = 0

while(h->next != h) {

if(p->next == h) p = p->next

++cnt

if(cnt % m == 0) {

q = p->next

printf("%d ",q->info)

p->next = q->next

free(q)

}

else p = p->next

}

printf("\n")

free(h)

h = NULL

}

int main() {

int n,s,m

printf("输入 n s m : ")

while(scanf("%d%d%d", &n,&s,&m) == 3 && n && s && m) {

josef(n,s,m)

printf("输入 n s m : ")

}

return 0

}

#include<stdio.h>

void main()

{

    int day, x1, x2

    day = 5

    x2 = 1

    while (day>0)

    {

        x1 = (x2 + 1) * 2

        x2 = x1

        day--

    }

    printf("total=%d\n", x1)

}