C语言 函数递归调用错误
#include<stdio.h>
char a[26];
void main()
{
int change(long);
long num;
scanf("%ld",&num);
a[change(num)+1]='\0';
printf("%s\n",a);
}
int change(long num)
{
int i,f,x=10,E=10;
static n=0;
if(n==0)
if(num<0)
{
a[n]='-';
n++;
}
else
;
else
;
if(num<10)
a[n]=num;
else
{
while(x>9)
{
f=0;
x=num/10;
f++;
}
a[n]=x;
n++;
for(i=1;i<f;i++)
E=E*E;
num=num-x*E;
change(num);
}
return(n);
}
我想输入一组数字然后转换成一串字符串输出例如,输入-154,则输出字符串-154这样
编译时没有任何语法错误,运行却似乎死机了,反正没结果,
tell me why
我想可能是字符串赋值的时候出错了
你这毛病太多!!
首先没看明白你的主函数怎样调用的change函数。
再者函数参数不够详细啊!!光有一个参数是不够的,还得有个数组下蠢御标作参数,好能表示你的字符要存到数组的哪个元素里。主函数中调用函数时用 change(num,0,)
下面按照你的大体思路,给你答案。
#include<stdio.h>碧晌
char a[26];
void main()
{
int change(long,int);
long num;
scanf("%ld",&num);
a[change(num,0)]='\0';
printf("%s\n",a);
}
int change(long num,int p)
{
int i,n;long x,f;
n=p;
if(n==0&&num<0)
{
a[n]='-'带慧岩;
n++; num*=-1;
}
if(num<10)
{a[n]='0'+num;return 1;}
else
{ x=num;f=1;
while(x>9)
{
x=x/10;
f=f*10;
}
a[n]='0'+x; printf("%d\n",x);
n++;
num=num-x*f;
}
return change(num,n)+n-p;
}
错得一塌糊涂