Posted on 2011-09-18 21:03
hoshelly 閱讀(376)
評論(0) 編輯 收藏 引用 所屬分類:
C
要求:編寫一個遞歸函數,將一個整數n轉換為字符串,例如輸入483,應輸出字符串“483”。
設計思想:設置一個字符型數組str,用于存放轉換后的字符串,因為遞歸函數中要反復使用它,所以將其設置為全局數組變量。要實現整數n轉換成字符串的遞歸轉換,首先要將n的個位數n%10轉換為字符,插入到str字符串的最前面,然后將除個位后的高位部分n/10按照相同的方式來轉換,直到要轉換的數為0結束。
#include<stdio.h>
#include<string.h>
void IntToStr(int n);
char str[80]={0};
void main()
{
int num;
printf("input an integer number:");
scanf("%d",&num);
IntToStr(num);
printf("The string is:%s\n",str);
}
void IntToStr(int n)
{
int i;
if(n==0)//整數為0時,遞歸結束
return;
for(i=strlen(str)-1;i>=0;i--) //將字符串整個往后移一個字符
str[i+1]=str[i];
str[0]=n%10+0x30; //將該數的個位數轉換成字符放在字符數組的第一個元素的位置,+0x30表示十六進制的0,其實可以不加
IntToStr(n/10);//將該數的商,即除個位外的其他數通過遞歸轉換
}
//遞歸過程:例如輸入n=148,那么第一次遞歸時,str[0]存放的數是8,n/10=14,得到第二次遞歸的數是14;
//8原先存儲在str[0],但第二次遞歸向后移動一個字符,變成存在str[1]內,而4存在str[0]內;
//第三次遞歸時,同理可知8放在str[2],4放在str[1],而1放在str[0],這樣就將148轉換為字符串。