用递归函数将一个整数n转换为字符串
- 格式:doc
- 大小:27.00 KB
- 文档页数:2
1.用递归函数将一个整数n转换为字符串.
例如:输入438,应输出字符串"438",n的位数不确定,可以是任意位数的整数.//方法一:不使用static型变量
#include<stdio.h>
void ltos(long d,char s[],int *i)
{
char t;
if(d<0)d=-d, s[(*i)++]='-'; //若为负则存入负号
t=d%10+'0';
d/=10;
if(d)ltos(d,s,i);
s[(*i)++]=t;
s[(*i)]='\0'; //字符串结束符
}
void main()
{
int i=0;
char str[20];
long int n;
printf("long n=");
scanf("%ld",&n);
ltos(n, str, &i);
printf("string=%s\n",str);
}
//方法二:使用static型变量
#include<stdio.h>
#include<string.h>
void ltos(long d, char s[])
{
char t;
static int i=0;
if(d<0)d=-d, s[i++]='-'; //若为负则存入负号
t=d%10+'0';
d/=10;
if(d)ltos(d, s);
s[i++]=t;
s[i]='\0'; //字符串结束符
}
void main()
{
char str[20];
long int n;
printf("long n=");
scanf("%ld",&n);
ltos(n, str);
printf("string=%s\n", str);
}
//方法三:不使用递归函数
#include<stdio.h>
void ltos(long d, char s[])
{
char t;
int i=0, j;
if(d<0)d=-d, s[i++]='-'; //若为负则存入负号do{
s[i++]=d%10+'0';
d/=10;
}while(d);
s[i]=0; //字符串结束符
j=i-1;
for(i=0; i<j; i++, j--){ //反序
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
//主函数的写法与方法二完全相同。