C语言指针实现循环报数问题(简单约瑟夫环问题)
来源:互联网 发布:医保网络业务申请表 编辑:程序博客网 时间:2024/06/15 05:22
题目描述:
报数:有n个人围成一圈,按照顺序从1到n编好号。从第一个人开始报数,报到x(x>1)的人退出圈子,下一个人从1开始重新报数,报到x的人退出圈子。如此下去,直到留下最后一个人。问留下来的人的编号。试编写相应程序。
分析:利用指针的赋0后的特性解决,
赋0,即空指针,就是不指向任何对象,相当于NULL地址为0的地址是不允许读写的,这是操作系统的保护机制,所以约定用地址0代表该指针不能使用,定义宏NULL为0,最新语言标准似乎专门定义了一个nullptr取代宏NULL,
源代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,n;
printf("请输入参加报数的人数:");
scanf("%d",&n);//利用数组与指针之间的关系改变地址,
printf("x:");
scanf("%d",&x);
int p[n];
for(i=0;i<n;i++)
p[i]=i+1;
int k=1;
int m=0;
while(m<n-1)
for(i=0;i<n;i++)
{
if(*(p+i)!=0)
{
if(k==x)
{
*(p+i)=0;//将退出的人标记为0
m++;//退出人数加1
k=0;
}
k++;
}
}
// *(p+i)=k;//循环一轮,指向第一个(可有可无)
for(i=0;i<n;i++)//找出地址非0的那个指针即所找的那个编号
if(*(p+i)!=0)
printf("%d\n",i+1);
return 0;
free(p);//归还 清除内存;
}
- C语言指针实现循环报数问题(简单约瑟夫环问题)
- 约瑟夫循环报数问题
- 约瑟夫环报数问题
- PHP实现 约瑟夫报数问题
- 报数问题(约瑟夫环)
- 报数(约瑟夫环问题)
- C语言实现约瑟夫环问题
- 约瑟夫问题 C语言循环链表
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题
- C语言循环链表约瑟夫环问题
- 约瑟夫问题简单实现-循环链表
- 约瑟夫环问题(报数问题)
- 约瑟夫环问题:圆桌报数问题
- 圆圈报数-约瑟夫问题
- Josephus(约瑟夫环问题)循环单链表c语句实现!
- Java用循环链表解决约瑟夫环问题(循环报数)
- C语言/约瑟夫环问题
- 【C语言】 约瑟夫环问题
- SSH搭建开发环境
- BestCoder Round #81 (div.2)C HDOJ5672 String(双指针法)
- Linux系统安装
- Spring定时任务的几种实现详解
- Win7安装Office2010时提示需要安装MSXML 6.10.1129.0
- C语言指针实现循环报数问题(简单约瑟夫环问题)
- 【转】MySQL 5.6 for Windows 解压缩版配置安装
- URAL 1841|Cableways|...
- 结构化思维(Structured Thinking)
- BlockingQueue
- 练习24:代码巩固练习
- 关于IGMP协议的知识点汇总
- jQuery中.bind() .live() .delegate() .on()的区别
- JAVA字符串格式化-String.format()的使用