
C语言程序:用递归法将一个整数n转化成字符串
10个回答
展开全部
将一个整数,转化为与它等价的字符串类型的数据。怎么说,就是一个int n,它表示的数为321,那对应着的字符串表示就是s[0]=3的acs码,s[1]=2的asc码, s[2]=1的asc码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int deep=0;
char s[100]={0};
void convert(int n)
{
if(n==0)return ;
convert(n/10);
s[deep]=n%10+'0';
deep++;
}
int main()
{
int n;
scanf("%d",&n);
if(n==0)
{
s[0]='0';
puts(s);
return 0;
}
convert(n);
s[deep]=0;
puts(s);
return 0;
}
int deep=0;
char s[100]={0};
void convert(int n)
{
if(n==0)return ;
convert(n/10);
s[deep]=n%10+'0';
deep++;
}
int main()
{
int n;
scanf("%d",&n);
if(n==0)
{
s[0]='0';
puts(s);
return 0;
}
convert(n);
s[deep]=0;
puts(s);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哪里不明白啊?
if(n==0) 如果输入0,则不用调用函数,直接输出
{
s[0]='0';
puts(s);
return 0;
}
convert(n); 对于非0的进行递归转换
s[deep]=0; 置串结束符\0
void convert(int n)
{
if(n==0)return ; n每次缩小10倍,最终会是0
convert(n/10);
s[deep]=n%10+'0'; 把个位数保存起来,个位以上的数会在上一句的递归调用中转换完成
deep++;
}
if(n==0) 如果输入0,则不用调用函数,直接输出
{
s[0]='0';
puts(s);
return 0;
}
convert(n); 对于非0的进行递归转换
s[deep]=0; 置串结束符\0
void convert(int n)
{
if(n==0)return ; n每次缩小10倍,最终会是0
convert(n/10);
s[deep]=n%10+'0'; 把个位数保存起来,个位以上的数会在上一句的递归调用中转换完成
deep++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while的条件是不对的
n%10!=0
如果n=10
就退出了!
n的值也没改变
所以是死循环。
而且即使改正之后输出的结果也是与原数相反的
n%10!=0
如果n=10
就退出了!
n的值也没改变
所以是死循环。
而且即使改正之后输出的结果也是与原数相反的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写了一下,看基本符合你要求了,不过还有些可以改的
下面是程序代码:
#include<stdio.h>
int gnn(int e)
{
int j;
int last=1;
for(j=0;j<e;j++)
{
last=10*last;
}
return last;
}
void fun(long int n,int N)
{
int next;
if(N<1)
{
printf("\"");
return;
}
else
{
next=n/gnn(N-1);
printf("%d",next);
fun(n%gnn(N-1),N-1);
}
}
void main()
{
long int n;
printf("请输入所要转换的数字:");
scanf("%d",&n);
int N=1;
long int k=n/10;
for(int i=0;k!=0;i++)
{
k=k/10;
N++;
}
printf("转换后的输出为: ");
printf("\"");
fun(n,N);
printf("\n");
//getch();
}
下面是程序代码:
#include<stdio.h>
int gnn(int e)
{
int j;
int last=1;
for(j=0;j<e;j++)
{
last=10*last;
}
return last;
}
void fun(long int n,int N)
{
int next;
if(N<1)
{
printf("\"");
return;
}
else
{
next=n/gnn(N-1);
printf("%d",next);
fun(n%gnn(N-1),N-1);
}
}
void main()
{
long int n;
printf("请输入所要转换的数字:");
scanf("%d",&n);
int N=1;
long int k=n/10;
for(int i=0;k!=0;i++)
{
k=k/10;
N++;
}
printf("转换后的输出为: ");
printf("\"");
fun(n,N);
printf("\n");
//getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |