用C语言递归法将一个整数化为字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言递归法将一个整数化为字符串相关的知识,希望对你有一定的参考价值。
只告诉你思路,自己写代码。
为简单,弄个足足够大的字符数组 因为整数最大是9还还是10个数了,忘了,你可以申请数组长度11或者更大都行。 申请两个。一个存倒序,一个存正序。
在while循环中,首先对整数除以10求余数,C语言是%,这样最后一个数字就出来了,+‘0’ 或者|0x30,得到相应数字的ascii码,其实就已经把这个数字转成字符了,存到数组里。
然对整数反复除以10, c语言是(/),取整,方法很简单,直接把/后的结果=一个整形变量,直接就是取整了,否则调用取整函数也行,那样麻烦。这样,最后一位数字被砍掉,因为第2部已经处理过它了。
反复上面步骤,循环,直到最后一个数字,(判断条件为%10的余数为0), 说明所有数字处理完了,循环终止,在这中间过程最后有个计数器,计下你共存了多少个数,做为第5步的长度。
由于这时候得到的数组是倒的,也就是从最后一个数字开始存储的,要把它倒过来,存到另外一数组里。这部用一个for循环就搞定。
不好意思,我的答案是非递归的。
递归更简单,
#include<stdio.h>
void convert(int n)
int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
如果要把结果存到数组里,自己调整一下吧。
参考技术A int a=1234;int a_len=3;//a转化成字符串长度减1
int aptr=0;
int he=0;
int i=0;
char chara[5]=0;
void int_to_char()
if(0!=a>>a_len)
chara[i]=a>>a_len;
for(aptr;aptr<a_len;aptr++)
he=he*10;
a=a-he;//每次a减去a最高位的数值如:1234 减去1000 再递归 234 减去200
a_len--;
int_to_ptr();
2017-03-06
1.用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意的整数。
#include <stdio.h> void zifu(int n); int main() { int n; printf("请输入数字n\\n"); scanf("%d",&n); zifu(n); printf("%c",n); return 0; } void zifu(int n) { int a; char b; if(n!=0) { zifu(n/10); a=n%10; b=a+‘0‘; printf("%c",b); } }
总结:1.在调用一个函数过程中又出现直接或间接的调用函数自身称为函数的递归调用。
2.递归的两个条件(1)回推公式:将大规模问题转化成小规模问题 (2)边界条件:就是递归的终止条件
3.这道题主要把函数的调用和算法弄懂 输入一个数在自定义函数里通过函数公式一直调用自己本身直到为零为止 再将各数字依次输出
2.用递归法写出1+2+3+·······+99+100的程序。
#include <stdio.h> int leijia(int n); int main() { int a; a=leijia(100); printf("%d",a); return 0; } int leijia(int n) { if(n==1) return 1; else return n+leijia(n-1); }
3.用指针改写交换两个数
#include <stdio.h> void jiaohuan(int *m,int *n); int main() { int m,n; printf("请输入两个数m和n\\n"); scanf("%d%d",&m,&n); jiaohuan(&m,&n); printf("%d %d",m,n); return 0; } void jiaohuan(int *m,int *n) { int temp; temp=*m; *m=*n; *n=temp; }
总结:1.指针就是变量的地址 指针变量存储是变量的地址 指针变量量的存储空间中存放的是一个地址
2.*指针变量=初始地址值
3.
4.
int ia;
int *pi;
ia=100;
pi=&ia; //&ia的计算结果为变量ia的地址 对&后面的变量进行取地址运算
5.指针变量只能指向定义时所规定类型的变量
以上是关于用C语言递归法将一个整数化为字符串的主要内容,如果未能解决你的问题,请参考以下文章
C语言:用递归法讲一个整数n转换成字符串。例如输入483,应输出字符串“483”,n的位数不定,为任意位数整