C递归问题
用递归方法将一个整数字符串转化为格式化的十进制整数例如输入字符串"987", 输出“900 + 80 + 7”
如何编写程序?
多谢指教
程序代码:/*------------------------------------------------------------------------------
用递归方法将一个整数字符串转化为格式化的十进制整数
例如输入字符串"987", 输出“900 + 80 + 7”
==================================================================
本来想用长整型来作,后来一想那样转化的位数太少。其实就是为了
迎合题意,不然就不用转换为整型数组了,用字符串也是一样滴输出效果。
本程序为学习之用,请在看过后理解透彻,然后自己再作另外一个。
谢谢。
-----------------------------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#define N 100
int i;
void SWITCH(int *p,int *e)
{
int *q;
if(p==e)/* 当输出到最后一个字符的时候,结束递归 */
{
printf(" + %d\n",*p);
return ;
}
q=p; /* 定义 q 指针,指向现在的字符 */
printf("%c %d",(i==0?' ':'+'),*q);/* 输出现在的字符 */
i=1;
for(;q<e;++q)
printf("0");/* 在字符后面加上相应的零 */
SWITCH(p+1,e); /* 递归 */
}
int main(void)
{
char a[N];
int num[N];
int i;
printf("input a[]:\n");
gets(a); /* 输入字符串 */
for(i=0;i<strlen(a);++i)
num[i]=(a[i]-'0'); /* 将字符串转化为整型数组 */
SWITCH(num,(num+strlen(a)-1)); /* 递归 */
return 0;
}