中易网

设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,请问下面的程序哪地方错了?

答案:1  悬赏:70  
解决时间 2021-02-19 14:18
设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。编制函数Josegh()实现此功能


#include<stdio.h>
#include<stdlib.h>
int n,s,m,out,a[100]; //n为所有人数,out为出局的人
void josegh( );
void main()
{
int i;
for (i = 1; i < 100; i++) //定义数组a[100],按顺序赋值1 -3
a[i] = i;
printf ("n = "); scanf ("%d", &n);
printf ("s = "); scanf ("%d", &s);
printf ("m = "); scanf ("%d", &m);
out = s + m -1;
if (out > n)
out = out - n;
printf ("out = %d",a[out]);
n --;
while (out <= n)
a[out] = a[++out];

while (n != 0)
{
printf("\nm = ");
scanf("%d", &m);
josegh ( );
}
system("pause");
}
void josegh ( ) //每当出局一个人,n减1,数组重新排列
{
if (m > n)
m = m - n;
else if (m <= n)
printf ("o = %d",a[m]);
n--;
while (m <= n)
a[m] = a[++m];
}

最后一步,o应该等于2,怎么会是1呢?



最佳答案
#include<stdio.h>
#include<stdlib.h>
int n,s,m,out,a[100];
void josegh( );
void main()
{
int i;
printf ("n = "); scanf ("%d", &n);

printf ("s = "); scanf ("%d", &s);
printf ("m = "); scanf ("%d", &m);
for (i = 1; i <=n; i++)
a[i] = i;
while (n != 0)

josegh ( );
system("pause");
}
void josegh ( )
{
out = s + m - 1;

while (out > n)
out-= n;
printf ("o = %d\n",a[out]);
n--;
s=out;
while (out <= n)
a[out++] = a[out+1];
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
极品飞车12 应用程序无法正常启动(0x000
地是我的树是别人的
康婷怎么样,好做吗?
我是安卓手机型号 就是Android 能刷机吗?不知
弥勒明林轮胎经营部这个地址在什么地方,我要
为什么空调工况温度干求是27℃,湿球温度19.5
记者证可以免高速费吗
家有喜事婚礼庆典怎么去啊,有知道地址的么
腹股沟疝气手术
体检后多久可以在康康体检网查询体检报告?
长城不锈钢304(69)代表什么
新美婷生活馆地址有知道的么?有点事想过去
电脑上的电影怎么传到手机上
中国平安财产保险广西分公司贺州中心支公司在
组装个4G内存的电脑好不:能玩3D大型游戏吗
推荐资讯
新疆的太阳为什么那么毒
湖北日发汽车座椅厂,厂里主要做什么
不下载qq能用qq邮箱吗?
怎么追女孩人家都有女朋友了与恨都喜欢什么类
"Another"的中文意思是什么?
紫航绝味香地址有知道的么?有点事想过去
保德工具大全在什么地方啊,我要过去处理事情
灌顶传承很多,修什么本尊好
我贷款上浮5%现降息,怎么算?
苹果手机有id后怎么下载铃声。
斐讯K2这款路由器怎么样呢?
幻想三国二转男武士有什么技能
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?