书后习题让用递归做,感觉没什么问题,就是得不到结果啊。。。
#include "stdafx.h"
#include
using namespace std;
char * hehe(int n, int i, char*p)
{
int a[56];
if (n < 10) {
int j = 0;
a[i] = n; while (i--)
{
p[j++] = a[i] + 48;
}
p[j] = '\0';
return p;
}
else {
int ni = n / 10;
a[i++] = n - ni * 10;
hehe(ni, i, p);
}
}
int main()
{
int i = 0;
char name[20];
char(&p)[20] = name;
int n;
cin >> n;
hehe(n, i, p);
cout << p;
system("pause");
return0;
}
打断点调试看下哪里有问题
你的i为0了
i代表转换多少位
函数结束前少了一个return
#include<iostream>
using namespace std;
int a[56];//改为全局
char * hehe(int n, int i, char*p)
{
//int a[56];
if (n < 10)
{
int j = 0;
a[i] = n;
while (i)
{
// cout<<i<<" "<<a[i]<<endl;
p[j++] = a[i] + 48;
//字符'0'的ascii码为48
i--;
}
p[j] = '\0';
return p;
}
else
{
int ni = n / 10;
a[i++] = n - ni * 10;
// cout<<a[i-1]<<endl;
hehe(ni, i, p);
}
}
int main()
{
int i = 1;
char name[20];
int n;
cin >> n;
hehe(n, i, name);
cout << name;
return 0;
}