c基础求助

来源:百度知道 编辑:UC知道 时间:2024/06/10 02:55:02
谁能帮我看一下下面的程序中的的函数Josegh()哪里出问题了 为什么不能得到想要的结果,n个人坐成一圈,(存到数组p[100]中)从s号开始数m个数,把第m个人放到数组的最后一个位置,并把其它的前移,最后按跳出的先后输出数字,正确的函数在下面,谢谢了!其它的地方都是没有问题的。
#include <stdio.h>
#define N 100
#define S 1
#define M 10
int p[100], n, s, m;
void WriteDat(void);
void Josegh(void)//这个函数为什么不对啊 我实在找不出问题来
{
int i,j,k=1,t,z;
for(i=0;i<100;i++)
p[i]=i+1;
i=0;

for(z=n;z<=0;z--)
{
i=(i+9)%z;

t=p[i];

for(j=i;j<z;j++)
p[j-1]=p[j];

p[j]=t;
}
}
void main()
{
m = M;
n = N;
s = S;
Josegh();
WriteDat();
}
void WriteDat(void)
{
int i;
FILE *fp;
fp = fopen("OUT.dat", "w");
for (i=N-1; i>=0; i--)
{
printf("%4d ", p[i]);
fprintf(fp, "%4d", p[i]);
if (i%10 == 0)

首先int i,j,k=1,t,z;
定义的是ij变量不是i和j

for(z=n;z<=0;z--)//z<=0 为真循环 也就是说z得是负数 得100时循环没执行
{
i=(i+9)%z;

t=p[i];

for(j=i;j<z;j++)
p[j-1]=p[j];

p[j]=t;
}
}

两个变量要加逗号饿这个是标准的。要是i和j间加空格的话用我的软件编译的话是错误,因为命名不能有空格。如果你能编译通过的话就试验下实际运行吧。我是习惯标准的东西就标准的写

恩,问题快过期了,把分给我吧。
感谢