用C语言和数据结构编写一个简单的程序(求源代码)

来源:百度知道 编辑:UC知道 时间:2024/05/06 19:54:17
用C语言和数据结构编写一个:一个不大于六位的数字,列出这个数字数位的任意组合。
例如:输入1,2,3三个数,输出的三位数组就是:123,132,213,231,321,312。
程序的要求是输入数字个数必须不超过六个(可以少于六个),然后显示所有的组合形式。

急求源代码!!!
非常感谢!!!

/*使用递归,理论上说可以对任意多位数组合,但位数太多了,可能发生堆栈溢出.
以下程序在VC++6.0中编译通过.
*/
#include <stdio.h>
#include <string.h>

#define MAX_NUMBER 6 //修改这个参数来允许最大的位数,现设为6位

void GetZhe (const char * preStr,const char * strNum)
{
char newPreStr[MAX_NUMBER];
char tmpStr[MAX_NUMBER];
int i,j,k,iCnt;

k = strlen(strNum);
if (k>MAX_NUMBER) {
printf("超过最大允许的位数:%d!",MAX_NUMBER);
return ;
}

switch(k)
{
case 0:
return;
case 1:
strcpy(tmpStr,preStr);
strcat(tmpStr,strNum);
printf("%s\r\n",tmpStr);
break;
default:
tmpStr[0] = 0;
for (i=0;i<k;i++)
{
strcpy(newPreStr,preStr);
j = strlen(newPreStr);
newPreStr[j] = strNum[i];
newPreStr[j+1] = 0;

iCnt = 0;
for (j=0;j<k;j++)
{
if(j != i)
{
tmp