题目:输入一个整数,用递归将其变成字符串输出. 例如,输入-123,则输出“-123”
#include <stdio.h>
void main()
{
void f(char a[], int n, int i);
void reverse(char a[], int cnt);
char a[80];
int n, cnt = 0, i, m, k;
printf("输入n:");
scanf("%d", &n);
k = m = n;
while (m)
{//用于统计输入的数的位数
m = m / 10;
cnt++;
}
if (n < 0)
{
n = -n;
f(a, n, 0);
}
else
f(a, n, 0);
a[cnt] = '\0';
reverse(a, cnt);
if (k < 0)
{//用于判断是否需要在最前面加上负号
for (i = 0; i < cnt + 1; i++)
{
a[cnt + 1 - i] = a[cnt - i];
}
a[0] = '-';
}
puts(a);
}
void f(char a[], int n, int i)
{//将每一位数"取"出来放入字符数组中
if (n < 0)
n = -n;
if (!n)
return;
else
{
f(a, n / 10, i + 1);
a[i] = n % 10 + '0';
}
//a[]中出来的字符是逆序的
}
void reverse(char a[], int cnt)
{//逆置a[]中的字符
int i;
char ch;
for (i = 0; i < cnt / 2; i++)
{
ch = a[i];
a[i] = a[cnt - i - 1];
a[cnt - i - 1] = ch;
}
}