关于C语言中的问题

有12345678这几个数,然后数每隔两个数取出一个数,放到另外的组里,以此类推,直到将他们全部放到另一个组里,这个用C语言怎么完成

#include <stdio.h>
#include <stdlib.h>
#define n 19 //宏定义,设定19个猴子
#define m 4 //报数最大报到4
typedef struct monkey //设计一个猴子的结构体,该结构体用monkey表示
//link表示该结构体的指针
{
int num; //它的号码
struct monkey *next; //下个猴子的地址指针
} Monkey,*LINK;
void main()
{
LINK p,head,p2; //定义了三个猴子结构的指针
int i;
head=p=p2=(LINK)malloc(sizeof(Monkey));//开辟空间用来存储猴子结构
for(i=1;i<n;i++) //生成了个猴子结构的链表
{
p=(LINK)malloc(sizeof(Monkey)); //开辟新空间用来存各个猴子结构
p2->next=p;
p2=p;
}
p2->next=head;//这步很重要,这样链表变成循环链表了,也就是说链表到了结
//尾它的下个地址就是链表头了如此不停循环下去,就是个圆
p=head;
printf("对猴子进行编号!\n");
for(i=1;i<=n;i++)
{
p->num=i; //对猴子编号
printf("%d号猴子:%d\n",p->num,p->num);
p=p->next; //指针指向下个猴子
} //所有猴子编号结束
i=0;
p=head; //又将p指向了链表的头
while(1)
{
i++;
printf("%d号猴子报:%d\n",p->num,i);
if(p->next==p)//这是结束条件,你想自己的下一个就是自己本身了,是不是说
//明只剩下自己了,也就是大王了
break;

if(i==m) //如果这一个报到了数m
{
i=0; //再次从1开始报数,因为以后要执行i++语句
printf("%d号猴被淘汰\n",p->num); //这个号码的猴子要被淘汰
printf("\n");
p2->next=p->next;//将该猴子从链表中拿下
p=p2->next;//指针指向下一个猴子
continue; //该语句可以舍去,没有啥用
}
else //没有报到m的继续报数
{
if(i==m-1) p2=p;
p=p->next;
}
}

printf("胜出:%d",p->num);

}
跟这个相识,,自己改改吧。。。。
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言常见问题有哪些
1、书写标识符时,忽略了大小写字母的区别。2、忽略了变量的类型,进行了不合法的运算。3、将字符常量与字符串常量混淆。4、忽略了等号与双等号的区别。5、忘记加分号。6、输入变量时忘记加地址运算符。7、输入数据的方式与要求不符。8、输入字符的格式与要求不一致。9、输入输出的数据类型与所用格式...

C语言的问题!
4,下一步是使用浮点参数以符合浮点格式规范,或在程序中的其他位置执行浮点分配。请注意,此操作将导致加载浮点支持。5,最后一步是,当程序以混合语言编写的程序链接时,在FORTRAN库之前指定C库。重新解决了秋天的飞行问题。

搞懂这8个C语言问题,你也能进大厂
高懂这8个c语言问题,你也能进大厂 1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。 #define SEC_YEAR (365*24*60*60)UL考察点:1.#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)。2.懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多...

c语言常见问题有哪些?
4.忽略了“=”与“==”的区别。在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3)then …但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3)a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,...

关于C语言中汉字排序的问题
解释问题如下:1、汉字的编码方式有关,gb2312下一级汉字是按拼音排序,二级汉字按照偏旁部首排序;2、日文一级汉字是按汉字的最常用音读,五十音排序,二级汉字则是按偏旁部首;3、读音相同或相似汉字在不同区域,如钟和锺读音相似,码位十万八千里;4、闫是阎家,阎是一级汉字,闫是二级汉字,一级...

C语言编程常见十大面试问题(内附答案)
C语言编程面试中常遇到的十大问题,下面就逐一解答:1. 变量\/函数声明与定义的区别:变量\/函数声明告知程序它们的存在,如类型和参数信息,但不分配内存。定义则同时包含声明并为变量分配内存,定义是声明的扩展或细化操作。2. C中的存储类说明符:主要有auto、register、static和extern,它们分别定义了变量...

求c语言一些常见问题,
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“...

C语言的运行出现不了的问题是什么问题??
或在特定的环境中运行代码。逻辑问题:代码逻辑存在问题,导致代码无法正确执行。可以检查代码逻辑是否正确,是否存在死循环、递归深度过大等问题。综上,C语言代码运行不出现象可能有多种原因,需要逐一排查解决。可以利用编译器和调试工具来定位问题,或参考其他人的代码或文档来解决问题。

问几个C语言里很多人没注意过的问题
说实话要是这几个问题只要理解了C语言的人,怎么可能不明白。很多人没注意,说明他们还没学懂。当然我也不是在自夸,我也是初学者,可是我还是为楼上几位悲哀。1.你要知道程序在内存中的结构,有栈区、堆区、文字常量区、全局变量区、函数区,使用 char* a = "xxx";这样的语句初始化指针a,"...

c语言面试经常问到的问题有哪些?
c语言面试经常问到的问题有:1、C语言的主要特征是什么?C是一种过程语言。C语言的主要功能包括对内存的低级访问,简单的关键字集和简洁的样式。这些功能使其适用于诸如操作系统或编译器开发之类的系统编程。2、i ++和++i有什么区别?1)表达式“i ++”返回旧值,然后递增i。表达式++i递增该值...

相似回答