c++ 一道题目,求程序,用递归方法求解。
发布网友
发布时间:2023-11-30 11:56
我来回答
共3个回答
热心网友
时间:2024-01-19 12:25
时间有限,只实现了十进制的转换
#include <stdio.h>
#include <stdlib.h>
char* itoa_t(int a, char* buf, int b)
{
static n = 0; //静态变量,只在定义的时候初始化
int temp = 0;
if (a < 10)
{
buf[n] = a + '0';
++n;
return buf;
}
temp = a%10;
itoa_t(a/10, buf, b);
buf[n] = temp + '0';
++n;
buf[n] = '\0';
return buf;
}
int main()
{
int c = 9875654;
char p[10];
char *q = itoa_t(c, p, 10);
printf("%s\n",q);
}
热心网友
时间:2024-01-19 12:26
#include <stdio.h>
#include <string.h>
int main(void)
{
void int_to_string(int num,char *buf,int len);
char buf[100];
int len = 0;
memset(buf,0,100);
int_to_string(1233333346,buf,len);
printf("buf=%s\n",buf);
return 0;
}
/*整形转换字符串函数*/
void int_to_string(int num,char *buf,int len)
{
int i = 0;
int tmp = -1;
if(num>0)
{
for(i=len;i>=0;i--) //数组全部后移一位
buf[i+1] = buf[i];
tmp = num-(num/10)*10; //取出个位
buf[0] = tmp+48; //数字转换成字符
num = num/10;
len++;
int_to_string(num, buf,len);
}
}追问数组全部后移一位, 那个语句好像错了?
热心网友
时间:2024-01-19 12:26
#include "stdio.h"
#define nLength 20
int itoa(int nIn, char *sOut)
{
int ans;
if (nIn >= 10) ans = itoa(nIn / 10, sOut);
else ans = 0;
sOut[ans++] = (nIn%10) + '0';
return ans;
}
int main()
{
int a = 123456789;
char buf[nLength] = {0};
itoa(a, buf);
printf("%s\n",buf);
return 0;
}
最多就只用了一个printf...
应该还是比较容易理解的吧,就不多做解释了~追问不能用动态数组的方法吗?