|
20鱼币
本帖最后由 冰逸琉璃 于 2021-6-8 07:19 编辑
就是术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下,魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A, 将黑桃A放到桌面上,第二次数1,2将第一张牌放在这些牌的下面,将第二张牌翻过来,正好是黑桃2, 也将它放在桌子上这样依次进行将13张牌全部翻出,准确无误。我是这样写的,感觉没有错误,但是运行出来不对,看了一天也没看出那错了,请教下大佬们
#include <stdio.h>
#include <stdlib.h>
#define MAX 13
typedef struct node
{
int num;
struct node* next;
}node;
node* initialization();//创建循环链表
void sort(node* p);//排序牌顺序
node* initialization()//创建链表
{
node* head = NULL;
node* s;//节点
node* r = NULL;//指向最后一个节点
for (int i = 0; i < MAX; i++)
{
s = (node*)malloc(sizeof(node));
if (s == NULL)
{
exit(1);
}
s->num = 0;
if (head == NULL)
{
head = s;
s->next = head;
r = head;
}
else
{
r->next = s;
s->next = head;
r = s;
}
}
return head;
}
void sort(node* p)//排序牌顺序
{
node* head = p;
int number = 2;
int j;
head->num = 1;
while (1)
{
for (j = 0; j < number; j++)
{
head = head->next;
if (head->num != 0)
{
head = head->next;
j--;
}
}
head->num = number++;
if (number == MAX + 1)
{
break;
}
}
}
int main(void)
{
node* p;
p = initialization();
sort(p);
for (int i = 0; i < MAX; i++)
{
printf("%d ", p->num);
p = p->next;
}
return 0;
}
类似这样的代码,没有意义,什么事情也不做
- #include <stdio.h>
- int main(void) {
- 1;
- 2;
- 3;
- 100;
- ;
- ;
- int i = 100;
- i + 1;
- i;
- printf("%d\n", i);
- printf("hello world!\n");
- return 0;
- }
复制代码
|
|