【C语言】用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数(负数/正数)。

导读:本篇文章讲解 【C语言】用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数(负数/正数)。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

程序如下,有不懂或者错误评论区留言,谢谢!

#include<stdio.h>
#include<math.h>
#define N 10
int main(){
	int tran(int,int);
	int x,i=1,j=0;
	char num[N]={'\0'};		//定义字符数组并置空 
	puts("输入一个数:"); 
	scanf("%d",&x);			//接收一个数 
	puts("转化为字符串为:"); 
	if(x<1e-6){				//判断是否为负数 
		x=-x;				//若为负数,取其相反数 
		num[j++]='-';		//使第一个元素为'-' 
	}
	/*调用函数并将其转化为字符串存入字符数组中*/ 
	for(i=tran(x,i),x=x*10;i>0;i--,j++)
		num[j]=((int)(x/pow(10,i)))%10+'0';//将整除结果转化为int型用于取余计算,加上字符0的ASCII码值赋给该元素; 
	puts(num);	//输出字符串 
	return 0;
} 
int tran(int a,int i){
	a=a/10;			//取余后赋值给自己 
	if(a!=0)tran(a,++i);	//如果取余后不为零则继续递归 
	else return(i);	//返回递归次数(即该数位数) 
}

如果不是用递归,程如下:
 

#include<stdio.h>
#include<math.h>
#define N 10
int main(){
	int tran(int,int);
	int x,i=1,j=0;
	char num[N]={'\0'};		//定义字符数组并置空 
	puts("输入一个数:"); 
	scanf("%d",&x);			//接收一个数 
	puts("转化为字符串为:"); 
	if(x<1e-6){				//判断是否为负数 
		x=-x;				//若为负数,取其相反数 
		num[j++]='-';		//使第一个元素为'-' 
	}
	/*调用函数并将其转化为字符串存入字符数组中*/ 
	for(i=tran(x,i),x=x*10;i>0;i--,j++)
		num[j]=((int)(x/pow(10,i)))%10+'0';//将整除结果转化为int型用于取余计算,加上字符0的ASCII码值赋给该元素; 
	puts(num);//输出字符串 
	return 0;
} 
/*-计算输入数字的位数-*/
int tran(int a,int i){
	for(i=0;a>0;i++){
		a=a/10;			//取余后给自身,直到a小于0 
	}
	return(i);	//返回循环次数+1(即该数位数) 
}

【C语言】用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数(负数/正数)。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82667.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!