C语言初体验(一)
来源:互联网 发布:淘宝店铺模板代码 编辑:程序博客网 时间:2024/05/29 08:17
N个人围成一圈报数,这N个人的编号从1到N,先从第一个人报数,第一个人报1,第二个人报2, 报到M的人退出,然后又从下一个人开始从1开始继续报数,报到M的人退出,问最后剩下哪一个人? (N, M由用户输入)
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i = 0,j = 0;
int a[10000] = {0};
int N, M;
int k=0;
int tmp;
printf("Input n(n must be a natural number less than 10000):");
scanf("%d %d", &N, &M);
if(N>10000)
{
printf("%d is out of range of valid values.\n", N);
goto err0;
}
//给N个人编号
for(j = 1;j <= N; j++)
{
a[j]= j;
printf("%d ", a[j]);
}
putchar('\n');
tmp = N;
while(1)
{
do
{
j = M % tmp;
printf("j = %d\n", j);
// M % tmp > 0 需将退出人的位置在中间,
//需将退出人后面的人整体往前移一个标号
if(M % tmp > 0)
{
for(k = j; k <= tmp; k++)
{
a[k] = a[k + 1];
printf("%d %d\n", k, a[k]);
}
}
tmp--;
printf("tmp = %d\n", tmp);
}while(tmp > 1);
break;
}
//通过while()循环后,剩下的最后一个人必然是在a[1] 中
printf("The last NUMBER is %d\n", a[1]);
return 0;
err0:
return -1;
}
以N = 8,M = 5为例,整个报数流程如下:
希望大家一起来交流学习,谢谢····
- C语言初体验(一)
- C语言初体验
- C语言初体验
- Delphi2009初体验 - 语言篇 - 体验泛型(一)
- C语言初体验(二)
- C语言程序初体验
- 贺老师《C语言及程序设计初步》网络课程一.4C语言程序初体验项目2圆柱体表面积
- R语言体验一
- C语言链表再体验
- C语言(一)
- C 语言(一)
- C语言(一)C语言格式
- C语言编程初讲(一)
- quick_cocos2dx 初体验 (一)
- Java初体验(一)
- ztree (一)----初体验
- ESP8266(一)初体验
- ListView初体验(一)
- 微生物群落功能预测工具
- kafka消息发送和消息接受
- 机器学习的学习方式
- 一起加油----java开发之路
- JavaIo流,文件文件夹拷贝工具类
- C语言初体验(一)
- Android 实现一个简单加载进度条的功能
- 多版本JDK切换方式
- 去除空格求和
- Java+Selenium3.0基础篇4-如何启动IE
- 机器学习常用算法解析和入门
- 定时器和BOM对象和Date类
- Web集群搭建(2)-mysql双主配置
- memory latency