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

题目:现有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;
}

第1个回答  2009-07-17
首先,我不太明白你程序的结果是什么意思。恩,不过没关系。

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

然后就可以运行了。本回答被网友采纳
第2个回答  2009-07-18
提问的人根本不说出来什么问题,不知道问题所在总知道出错的表现吧?或者编译不对的话有出错信息?这样帮你查错还不如帮你编一个呢!
另外,main不一定要加void,实际上标准C的main是int型的,什么都不加的话等同于加了int,命令行系统下程序结束一般会有返回值的,表示命令执行成功与否。
第3个回答  2015-01-07
参考 有一种默契叫心照不宣,有一种感觉叫妙不可言,有一种幸福叫有你相伴,有一种白痴会把短信看完。本回答被提问者采纳
第4个回答  2009-07-18
这么简单的问题也不会,还想学编程。
相似回答
大家正在搜