求C语言大神帮忙原程序的基础初上改正错误并且编成约瑟夫环的问题 30
#include"stdio.h"#include"stdlib.h"#include"string.h"#defineN30voidfun1(){inti,j,n,m,...
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define N 30
void fun1(){
int i,j,n,m,k,mem[N];
m=1; n=30; k=7; j=1;
printf("总人数为:%d/n",n);
printf("从%d开始/n",m);
printf("到第%d结束/n",k);
for(i=1;i<n;i++)
mem[i]=j++;
}
void fun2(){
int i,n,m,k,f;
n=30;k=7;f=1;
for(i=1;i<n;i++){
for(i=1;i<n;i++){
if(k<n||i==k){
printf("%d",mem[i]);
}
else if(n<k){
printf("%d",mem[n]);
}
n=n-1;}
for(i=1;i<n;i++)
if(k<n){do{
mem[i]=mem[++k];
}while(mem[i]==mem[n+1]);
mem[i]=mem[f++];
}
else if(k>n){
do{
mem[i]=mem[f++];
}while(mem[i]==mem[n+1]);
}
}
void main(){
int i,n,m,k;
fun1();
fun2();
} 展开
#include"stdlib.h"
#include"string.h"
#define N 30
void fun1(){
int i,j,n,m,k,mem[N];
m=1; n=30; k=7; j=1;
printf("总人数为:%d/n",n);
printf("从%d开始/n",m);
printf("到第%d结束/n",k);
for(i=1;i<n;i++)
mem[i]=j++;
}
void fun2(){
int i,n,m,k,f;
n=30;k=7;f=1;
for(i=1;i<n;i++){
for(i=1;i<n;i++){
if(k<n||i==k){
printf("%d",mem[i]);
}
else if(n<k){
printf("%d",mem[n]);
}
n=n-1;}
for(i=1;i<n;i++)
if(k<n){do{
mem[i]=mem[++k];
}while(mem[i]==mem[n+1]);
mem[i]=mem[f++];
}
else if(k>n){
do{
mem[i]=mem[f++];
}while(mem[i]==mem[n+1]);
}
}
void main(){
int i,n,m,k;
fun1();
fun2();
} 展开
展开全部
你的逻辑我是理不清楚了。改改你代码上的问题
第一,不知道是不是你复制少了还是什么,你的main函数被包含在在fun2函数里面,在void main前面加个大括号!
第二,一些小问题,printf("从%d开始/n",m); 换行符是\n,不是/n
第三,你的mem数组,你在fun1里面定义赋值了之后,在fun1函数执行结束后会被释放掉,也就是说你这些赋值一点用没有,你在#define N 30 后面定义一个全局数组mem,或者在main函数里面定义一个,然后把数组mem当成参数传进去就行。
逻辑我没给你动,结果是
总人数为:30
从1开始
到第7结束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
如果不对的话就把你的解题思路给我,我再给你看看
第一,不知道是不是你复制少了还是什么,你的main函数被包含在在fun2函数里面,在void main前面加个大括号!
第二,一些小问题,printf("从%d开始/n",m); 换行符是\n,不是/n
第三,你的mem数组,你在fun1里面定义赋值了之后,在fun1函数执行结束后会被释放掉,也就是说你这些赋值一点用没有,你在#define N 30 后面定义一个全局数组mem,或者在main函数里面定义一个,然后把数组mem当成参数传进去就行。
逻辑我没给你动,结果是
总人数为:30
从1开始
到第7结束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
如果不对的话就把你的解题思路给我,我再给你看看
更多追问追答
追问
一开始任选一个正整数作为报数上限值m,从
第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出
列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1
报数, 利用单向循环链表存储结构模拟此过程,按照出列的顺序印
出各人的编号。实现提示 程序运行后,首先要求用户指定初始报数上
限值,然后读取各人的密码。可设n≤30。
追答
可是你这也不是单向循环列表啊。
链表确实要好做很多。可是在你这个源程序上改。。改不了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询