一道简单的c语言程序,跪求解答

设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出... 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请编写一个完整的程序用函数Josegh()实现此功能
#include <stdio.h>
int main(void)
{
int a[100];
void Josegh(int a[]);

Josegh(a); /*调用函数Jpsegh()*/
return 0;
}
void Josegh(int a[])
{
int s,m,i,n,k,x,y,t,count=0;
printf("Enter n:");
scanf("%d",&n); /*输入n*/

for(i=0;i<=n;i++){
a[i]=(i+1);
i++;
}
t=n;
printf("Enter m:");
scanf("%d",&m); /*输入m*/

printf("Enter s:");
scanf("%d",&s); /*输入s*/

for(i=0;i<n;i++){
if(i=0){
if(m<=(n-s)){
printf("%d ",&a[s+m-1]);
for(k=a[s+m-1];k<t;k++)
a[s+m-1]=a[s+m];
x=s+m-1;
t--;
}
if(m>(n-s)&&m<n){
printf("%d ",&a[s+m-n-1]);
for(k=a[s+m-n-1];k<t;k++)
a[s+m-n-1]=a[s+m-n];
y=s+m-n-1;
t--;
}

if(m>=n){
m=m-n;
i--;
}
}

if(i>0){
if(x+m<=n){
printf("%d ",&a[x+m-1]);
for(k=a[x+m-1];k<t;k++)
a[x+m-1]=a[x+m];
t--;
}
if(m>(n-x)&&m<n){
printf("%d ",&a[x+m-1]);
for(k=a[x+m-1];k<t;k++)
a[x+m-1]=a[x+m];
t--;
}

if(m>=n){
m=m-n;
i--;
}
}

}
count++;
if(count%10==0)
printf("\n");
}
我这样做没有显示错误,但为什么不会出现结果,求大神解答
展开
 我来答
s15885823584
2013-06-28 · TA获得超过411个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:216万
展开全部

不知道是不是你想要的,代码如下:

#include <stdio.h>
#include <math.h>
int main(void)

 int a[1000]; 
 void Josegh(int a[]);  
 Josegh(a);                       /*调用函数Jpsegh()*/ 
 return 0;
}
void Josegh(int a[])

 int s,m,i,n,j,t;
 int b[100][10]={0}, *fp;
 fp=b[0];
 printf("Enter n:");      
 scanf("%d",&n);                   /*输入n*/  
 for(i=0;i<=n;i++) 
  a[i]=(i+1);  
 t=n; 
 printf("Enter m:"); 
 scanf("%d",&m);                   /*输入m*/ 
 printf("Enter s:"); 
 scanf("%d",&s); /*输入s*/
 while(t>0)
 {
  i=s+m-1;
  if(i>n-1)
   i=i-n+1;
  s=i+1;
  *fp=a[i];
  fp++;
  t--;
 }
 t=n/10;
 if(n%10!=0)
  t++;
 for(i=0;i<t;i++)
 {
  printf("\n第%d组: ",i+1);
  for(j=0;j<10;j++)
  {
   if(b[i][j]!=0)
    printf("%d\t",b[i][j]);
  }
 }
 printf("\n");
}

 

运行结果如下:

百度网友5d9cc89
2013-06-28
知道答主
回答量:21
采纳率:0%
帮助的人:9.8万
展开全部
for(i=0;i<=n;i++){
a[i]=(i+1);
i++;
} 是不是这个 i 每次循环+2的原因?
更多追问追答
追问
刚刚试了,不是那个原因
但这也是处错误。。谢谢了
追答
printf("%d ",&a[s+m-1]);  把取地址符去掉试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
全力哈士奇
2013-06-28 · 超过16用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:25.1万
展开全部
你会单步调试吗?
更多追问追答
追问
不会。怎么弄
你可以帮我稍微修改下吗
追答
请自学单步调试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式