程序如下,有不懂或者错误评论区留言,谢谢!
#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(即该数位数)
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82667.html