您的位置:

c语言递归数字转字符串,C语言数字转字符串

本文目录一览:

C语言题目:使用递归法将整数转换成字符串。

可以这样用ascii码来转换

ascii码从48~58分别是0,1,2...9

int a=3;

char b;

b=char(a+48);

然后b就是字符'3'了

#includestdio.h

char mychar[100];//定义一个无限大的字符数组来存放所生成的字符 不过最好使用c的动态内存分配

int i=0;

char* function(int a)

{

if (a10) {

mychar[i++]=char(48+a);

return mychar;

}

function(a/10);

mychar[i++]=char(48+a%10);//转化为字符串使用ascii码来转换

return mychar;

}

void main()

{

char*a;

int num=0;

scanf("%d",num);

a=function(num);

printf("转化为字符串后:%s",a);

}

C语言编程:用递归法将一个整数n转换成字符串。

你好!

你不是用递归做的,如果只是简单的输出,可以这样做:

void

tran(int

a)

{

if(a=10)

tran(a/10);

printf("%d",a%10);

}

void

main()

{

tran(12345);

}

希望对你有所帮助,望采纳。

数字转字符串C语言(必须用递归算法)

#include stdio.h

#include math.h

int Digit(int n)

{

int d = 0;

do{

++d;

n /= 10;

}while(n 0 || n 0);

return d;

}

void itoa(int n, char* des)

{

if(n 0)

{

int x = (int)pow(10.0, Digit(n)-1);

*des = n / x + '0';

itoa(n-(n/x)*x, des+1);

}

else{

*des = '\0';

}

}

void itora(int n, char* des)

{

*des++ = n 0 ? itora(n/10, des), n % 10 + '0' : '\0';

}

int main()

{

char b[10], c[10];

itoa(12345, b);

itora(12345, c);

printf("%s %s", b, c);

}

C语言用递归法将一个整数n转换成字符串的程序中 putchar(n%10+'0');有什么作用?

作用就是输出整数n的个位数对应的字符。

n%10对10取余数,得到个位。

个位+ '0'就是得到对应的数字字符比如1 + '0' = '1'

查看下ASCII码表就知道了。

C语言,请问:递归函数把整数转换成字符串:如123,字符串“123”怎么做?非常急

这个题目是用循环好做,用递归还有点烦,还好做出来了:

#include "stdio.h"

int itoc(int num, char *buffer)

{

int i=0;

if(num0)

{

*buffer='-';

num=0-num;

itoc(num,buffer+1);

}

else if(num=10)

{

i=itoc(num/10,buffer);

*(buffer+i)=(num%10)+'0';

*(buffer+i+1)=0;

}

else

{

*buffer=num+'0';

*(buffer+1)=0;

}

return i+1;

}

void main()

{

char str[20];

itoc(0,str);

printf("%s\n",str);

itoc(17858,str);

printf("%s\n",str);

itoc(-12345,str);

printf("%s\n",str);

}

用递归将一个整数n转换成一个字符串。如将1234转换为"1234"。

#include "stdio.h"

main()

{

void convert()

int m;

printf("pinput m=")

scanf("%d",m)

convert(m);

}

void convert(int n)

{

int i;

char c;

if((i=n/10)!=0)/*结束递归调用的条件是i==0*/

convert(i);

c=n%10+'0'

putchar(c);

putchar('\t');

}

1、设m=123,第一次进入convert()方法

if((i=n/10)!=0) //这个时候i =123/10 = 12,因为i!=0,所以进入if

convert(i); 调用convert()

2、第二次进入convert()方法,此时参数带入的是n=12

if((i=n/10)!=0) //这个时候i =12/10 = 1,因为i!=0,所以进入if

convert(i); 调用convert()

3、第三次进入convert()方法,此时参数带入的是n=1

if((i=n/10)!=0) //这个时候i =1/10 = 0,所以不进入if,直接执行下面语句

c=n%10+'0' //c='1',这里的+'0',是为了让数字转换为字符

putchar(c); //输出1

putchar('\t');

因为这个方法体已经执行完毕,所以跳出这个方法,回到第二次的convert()方法。

4、第二次的convert()方法,因为convert(i); 已经执行完,则执行下面那句

c=n%10+'0' //c=12%10+'0'='2' putchar(c); //输出2

putchar('\t');

因为这个方法体已经执行完毕,所以跳出这个方法,回到第一次的convert()方法。

5、第一次的convert()方法,因为convert(i); 已经执行完,则执行下面那句

c=n%10+'0' //c=123%10+'0'='3' putchar(c); //输出3

putchar('\t');