
C语言用递归法将一个整数N转换成字符串求解析!!!!!!急啊!!!!!!
5个回答
展开全部
#include<stdio.h>
void reversal(char str[], int length){ //反转
int i;
for(i=0; i<length/2; i++){
char temp = str[i];
str[i] = str[length-i-1];
str[length-i-1] = temp;
}
}
void itos(int n, char str[], int i){ //递归
if(n==0){
str[i] = '\0';
reversal(str,i);
return;
}
str[i++] = n%10+48;
itos(n/10,str,i);
}
int main(void)
{
int n, i = 0;
char str[100];
printf("输入一个整数:");
scanf("%d",&n);
itos(n,str,i);
printf("转化为字符串输出:");
printf("%s\n",str);
return 0;
}
void reversal(char str[], int length){ //反转
int i;
for(i=0; i<length/2; i++){
char temp = str[i];
str[i] = str[length-i-1];
str[length-i-1] = temp;
}
}
void itos(int n, char str[], int i){ //递归
if(n==0){
str[i] = '\0';
reversal(str,i);
return;
}
str[i++] = n%10+48;
itos(n/10,str,i);
}
int main(void)
{
int n, i = 0;
char str[100];
printf("输入一个整数:");
scanf("%d",&n);
itos(n,str,i);
printf("转化为字符串输出:");
printf("%s\n",str);
return 0;
}
展开全部
#include<stdio.h>
void f(int n,char a[])
{
static int i=0;
if(n!=0)
{
a[i++]=n%10+'0';
f(n/10,a);
}
return;
}
int main()
{
int n,i=0,l,j;
char a[80]={0},t;
scanf("%d",&n);
f(n,a);
l=strlen(a);
j=l/2;
for(i=0,l--;i<j;i++,l--)
{
t=a[i];
a[i]=a[l];
a[l]=t;
}
puts(a);
return 0;
}
void f(int n,char a[])
{
static int i=0;
if(n!=0)
{
a[i++]=n%10+'0';
f(n/10,a);
}
return;
}
int main()
{
int n,i=0,l,j;
char a[80]={0},t;
scanf("%d",&n);
f(n,a);
l=strlen(a);
j=l/2;
for(i=0,l--;i<j;i++,l--)
{
t=a[i];
a[i]=a[l];
a[l]=t;
}
puts(a);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你不会用sprintf和sscanf吗= = 这样好麻烦 不过如果你要用递归的话就是各个取位数之后加上‘0’
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main()
{
int convert(int n);
int n;
scanf("%d",&n);
if(n < 0){
printf("-");
printf(" ");
n = - n;
}
convert(n);
return 0;
}
int convert(int n)
{
int i = n / 10;
if(i != 0){
convert (i);
}
putchar(n % 10 + '0');//printf("%c ",n % 10 + '0');
putchar(' '); //putchar(32);
}
不需要那么复杂的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void f(int n,char a[])
{
static int i=0;
if(n!=0)
{
a[i++]=n%10+'0';
f(n/10,a);
}
return;
}//递归
int main()
{
int n,i=0,l,j;
char a[80]={0},t;
scanf("%d",&n);
f(n,a);
l=strlen(a);
j=l/2;
for(i=0,l--;i<j;i++,l--)
{
t=a[i];
a[i]=a[l];
a[l]=t;
}
puts(a);
return 0;
}
void f(int n,char a[])
{
static int i=0;
if(n!=0)
{
a[i++]=n%10+'0';
f(n/10,a);
}
return;
}//递归
int main()
{
int n,i=0,l,j;
char a[80]={0},t;
scanf("%d",&n);
f(n,a);
l=strlen(a);
j=l/2;
for(i=0,l--;i<j;i++,l--)
{
t=a[i];
a[i]=a[l];
a[l]=t;
}
puts(a);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询