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

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

#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(即该数位数) 
}

 

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.魚肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值