C语言编程问题!谁帮帮忙啊!

题目:现有n名同学,站成一个圈,他们分别以号码排序,即从01,02,03到n第一名同学手中(01)有一个球,他可以将球向左传也可以向右传。他传出去后,接到球的同学也可以向... 题目:现有n名同学,站成一个圈,他们分别以号码排序,
即从01,02,03到n
第一名同学手中(01)有一个球,他可以将球向左传也可以向右传。
他传出去后,接到球的同学也可以向左或向右传,
一共传m次。
请输出所有可能的传球路线。
n与m由键盘输入,分别满足:
3<=n<=30,1<=m<=30
我自己编了一个程序,但是有错误,谁来帮忙改进一下,顺便说下我那里错了。
我的原程序:
// Head file
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Pre-Declearing
char Out[123];
int counter=0,Now=1;
char Temp[4];
// Main
main()
{
// Declearing Key
int Key(int n,int m);
// Input
int inputn,inputm;
printf("input the number of students (n)\n");
scanf("%d",&inputn);
printf("input the number of times the ball will be passed (m)\n");
scanf("%d",&inputm);
// Pre-setting
Out[1]='0'; Out[2]='1'; Out[0]='*';
Temp[0]='-'; Temp[1]='>';
// Using Key
Key(inputn,inputm);
// Pause screen
system("pause");
}
// Key
int Key(int n,int m)
{int Delete ();
int a,i;
if (counter>m)
puts(Out);
else
{counter=counter+1;
// Passing-right (up)
Now=Now+1;
if(Now==n+1)
Now=1;
if(Now<10)
{Temp[2]='0';
Temp[3]=48+Now;
}
else
{Temp[2]=48+Now/10;
Temp[3]=48+Now-Temp[2]*10;
}
strcat(Out,Temp);
// Passing-left (down)
Now=Now-1;
if(Now==0)
Now=n;
if(Now<10)
{Temp[2]='0';
Temp[3]=48+Now;
}
else
{Temp[2]=48+Now/10;
Temp[3]=48+Now-Temp[2]*10;
}
strcat(Out,Temp);
}
Delete();
}
// Delete
int Delete()
{int i;
for (i=0;i<=122;i++)
if(Out[i]==0)
break;
Out[i-1]=0;
Out[i-2]=0;
Out[i-3]=0;
Out[i-4]=0;
}
我用的是Dev-C++ V.4.9.9.2 (可以读C语言那种)
原程序②段// Key
int Key(int n,int m)
{int Delete ();
int a,i;
if (counter>m)
{puts(Out);
counter=counter-1;
Delete();
}
else
{
// Passing-right (up)
counter=counter+1;
Now=Now+1;
if(Now==n+1)
Now=1;
if(Now<10)
{Temp[2]='0';
Temp[3]=48+Now;
}
else
{Temp[2]=48+Now/10;
Temp[3]=48+Now-Temp[2]*10;
}
strcat(Out,Temp);
Key(n,m);
Now=Now-1;
// Passing-left (down)
counter=counter+1;
Now=Now-1;
if(Now==0)
Now=n;
if(Now==-1)
Now=n-1;
if(Now<10)
{Temp[2]='0';
Temp[3]=48+Now;
}
else
{Temp[2]=48+Now/10;
Temp[3]=48+Now-Temp[2]*10;
}
strcat(Out,Temp);
Key(n,m);
Now=Now+1;
}
}
// Delete
int Delete()
{int i;
for (i=0;i<=122;i++)
if(Out[i]==0)
break;
Out[i-1]=0;
Out[i-2]=0;
Out[i-3]=0;
Out[i-4]=0;
}
展开
 我来答
eyexing
2009-07-17
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
首先,我不太明白你程序的结果是什么意思。恩,不过没关系。

程序运行不了主要有三个问题:
1.main函数是要有类型的。至少加一个void在前面。
2.Delete函数没有任何返回值,却给了一个int的类型。把int 改成void。(记得在所有Delete出现的地方都要改)
3.Delete函数需在main的上面声明。

然后就可以运行了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-07-18
展开全部
提问的人根本不说出来什么问题,不知道问题所在总知道出错的表现吧?或者编译不对的话有出错信息?这样帮你查错还不如帮你编一个呢!
另外,main不一定要加void,实际上标准C的main是int型的,什么都不加的话等同于加了int,命令行系统下程序结束一般会有返回值的,表示命令执行成功与否。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鱼小泡泡泡泡
2015-01-07 · 贡献了超过214个回答
知道答主
回答量:214
采纳率:0%
帮助的人:106万
展开全部
参考 有一种默契叫心照不宣,有一种感觉叫妙不可言,有一种幸福叫有你相伴,有一种白痴会把短信看完。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-07-18
展开全部
这么简单的问题也不会,还想学编程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式