用c語言遞迴法將整數化為字串,用C語言遞迴法將乙個整數化為字串

2021-05-04 18:27:58 字數 5524 閱讀 4240

1樓:一路清晨

int a=1234;

int a_len=3;//a轉化成字串長度減1int aptr=0;

int he=0;

int i=0;

char chara[5]=;

void int_to_char()

a=a-he;//每次a減去a最高位的數值如:1234 減去1000 再遞迴 234 減去200

a_len--;

int_to_ptr();}

2樓:匿名使用者

只告訴你思路,自己寫**。

為簡單,弄個足足夠大的字元陣列 因為整數最大是9還還是10個數了,忘了,你可以申請陣列長度11或者更大都行。 申請兩個。乙個存倒序,乙個存正序。

在while迴圈中,首先對整數除以10求餘數,c語言是%,這樣最後乙個數字就出來了,+『0』 或者|0x30,得到相應數字的ascii碼,其實就已經把這個數字轉成字元了,存到陣列裡。

然對整數反覆除以10, c語言是(/),取整,方法很簡單,直接把/後的結果=乙個整形變數,直接就是取整了,否則呼叫取整函式也行,那樣麻煩。這樣,最後一位數字被砍掉,因為第2部已經處理過它了。

反覆上面步驟,迴圈,直到最後乙個數字,(判斷條件為%10的餘數為0), 說明所有數字處理完了,迴圈終止,在這中間過程最後有個計數器,計下你共存了多少個數,做為第5步的長度。

由於這時候得到的陣列是倒的,也就是從最後乙個數字開始儲存的,要把它倒過來,存到另外一陣列裡。這部用乙個for迴圈就搞定。

不好意思,我的答案是非遞迴的。

遞迴更簡單,

#include

void convert(int n)

如果要把結果存到陣列裡,自己調整一下吧。

c語言程式:用遞迴法將乙個整數n轉化成字串

3樓:義昀欣

//舉例說明該函式流程,假如輸入123,123/10後得12,餘數是3

//再次執行convert函式,12/10得1,餘數是2//再次執行convert函式,1/10得0,餘數是1//至此,遞迴結束,開始列印數字,首先列印最後一次遞迴的結果1//然後列印倒數第二次的結果2

//最後列印3,輸出123

void convert(int n)

main()

convert(number); //執行遞迴函式}

4樓:匿名使用者

你這程式有錯誤哦,輸出結果是原序輸出

以下是我稍微修改的程式,及相應的注釋

#include

void convert(int n)

main()

convert(number); //呼叫遞迴函式convert()}希望能幫到你,可以繼續**!

5樓:井鈺

寫了一下,看基本符合你要求了,不過還有些可以改的下面是程式**:

#include

int gnn(int e)

return last;

}void fun(long int n,int n)else }

void main()

printf("轉換後的輸出為: ");

printf("\"");

fun(n,n);

printf("\n");

//getch();}

6樓:成紅微生英飆

while的條件是不對的

n%10!=0

如果n=10

就退出了!

n的值也沒改變

所以是死迴圈。

而且即使改正之後輸出的結果也是與原數相反的

7樓:enjoy冰心玉壺

我把你的程式改了一下,現在可以得到正確的答案了。先把源**複製在下面吧。

#include

#include

#include

#include

int fun(int number,int digit,char *str);

int main()

else

printf("the result is %s\n",string);

return 0;

}int fun(int number,int digit,char *str)

return 0;

}也是用的遞迴的方法,可以自己跑一下程式。再說一下問題吧,感覺你不太熟悉strcat()這個函式,其中的引數都應是char型指標變數,還有一些小的問題,比如函式返回值什麼的。你可以再看看書或者查一下。

執行結果如下:

8樓:牧羊人

將乙個整數,轉化為與它等價的字串型別的資料。怎麼說,就是乙個int n,它表示的數為321,那對應著的字串表示就是s[0]=3的acs碼,s[1]=2的asc碼, s[2]=1的asc碼。

9樓:匿名使用者

舉個例子,比如輸入的是123,呼叫convert函式,convert(123)->convert(12)->convert(1)->convert(0),返回至上層,即convert(1)函式裡繼續執行,s[0]=1%10+'0'='1';deep++;,再次返回上層函式裡執行,s[1]=12%10+'0'='2';deep++;繼續返回上層函式裡執行,s[2]=123%10+'0'='3';deep++;執行2完畢,返回至main函式。s[4]=0;puts(s)輸出字串123.

10樓:樂跑小子

下面是程式**:

#include

int gnn(int e)

return last;

}void fun(long int n,int n)else }

void main()

printf("轉換後的輸出為: ");

printf("\"");

fun(n,n);

printf("\n");

//getch();}

11樓:

#include

int deep=0;

char s[100]=;

void convert(int n)

int main()

convert(n);

s[deep]=0;

puts(s);

return 0;}

12樓:匿名使用者

**不明白啊?

if(n==0) 如果輸入0,則不用呼叫函式,直接輸出convert(n); 對於非0的進行遞迴轉換s[deep]=0; 置串結束符\0

void convert(int n)

用遞迴法將乙個整數轉換成字串

13樓:匿名使用者

你這程式有錯誤哦,輸出結果是原序輸出

以下是我稍微修改的程式,及相應的注釋

#include

void convert(int n)

main()

convert(number); //呼叫遞迴函式convert()}希望能幫到你,可以繼續**!

14樓:義昀欣

//舉例說明該函式流程,假如輸入123,123/10後得12,餘數是3

//再次執行convert函式,12/10得1,餘數是2//再次執行convert函式,1/10得0,餘數是1//至此,遞迴結束,開始列印數字,首先列印最後一次遞迴的結果1//然後列印倒數第二次的結果2

//最後列印3,輸出123

void convert(int n)

main()

convert(number); //執行遞迴函式}

看不懂**:用遞迴法將乙個整數n轉化成字串。

15樓:匿名使用者

關鍵的部分:遞迴,初學者會搞不明白,但一旦搞清遞迴原理,就會覺得很簡單。

乙個整數 3456 要變成 '3456'

只要反覆除以10, 商 345, 餘數就是 6那 345 可以再次呼叫自已進行處理,6就可以+'0' 輸出了,

16樓:匿名使用者

//總思想是:從右向左逐位輸出後,使原數去除最後一位(已輸出),重複以上操作,直到沒有位數可輸出為止(0不可能是最高位)。

void convert(int n)

c語言程式設計:用遞迴法將乙個整數n轉換成字串。

17樓:用著追她

1、新建乙個工程和.c檔案 ,輸入標頭檔案和主函式。

2、宣告被呼叫的函式,定義變數型別。

3、輸入整數。

4、用乙個if語句去判斷整數是否為負數,若為負數則用putchar函式輸出乙個負號。

5、呼叫乙個函式。

6、定義函式的返回型別和形參型別。

7、通過if語句判斷該數是否僅剩一位數,若不是則執行else語句。

8、編譯執行。

18樓:匿名使用者

while的條件是不對的

n%10!=0 如果n=10 就退出了!

n的值也沒改變 所以是死迴圈。

而且即使改正之後輸出的結果也是與原數相反的

19樓:匿名使用者

#include

void main()

每輸入乙個資料,敲乙個空格,或者敲乙個回車!這是個十位數的的轉換!

你的是不是沒輸入語句啊!沒有n值,所以沒資料吧

20樓:匿名使用者

你不是用遞迴做的,如果只是簡單的輸出,可以這樣做:

void tran(int a)

void main()

用遞迴法將乙個整數n轉換成字串

21樓:井鈺

寫了一下,看基本符合你要求了,不過還有些可以改的下面是程式**:

#include

int gnn(int e)

return last;

}void fun(long int n,int n)else }

void main()

printf("轉換後的輸出為: ");

printf("\"");

fun(n,n);

printf("\n");

//getch();}

c語言,用遞迴法並通過函式呼叫方法將乙個整數換成字串,如整數123對應的字串為「123」

22樓:匿名使用者

#include

#include

double length(char *s)double number(double n, char *s)else }

void main()

23樓:匿名使用者

#include

int n=-1

void copy(int i,char x)}

C語言將字元變成字串的問題

看你的 的意思是先把第乙個冒號前面的字串去掉,然後再分割標示符給你個短的版本,如下 include include include int main void p printf s n q 這裡還有最後乙個別忘了。return 0 include include include struct out...

c語言12320用函式遞迴法

include include int jc int n return result int jcsum int n else void main int a int s,int c s是次 數,也是最大的 內數 c是初值容 include int main e n printf lf n e re...

c語言字串程式設計問題

include int main for i 0 i a data i z data i a data i z continue for j i 1 j a data j z data j a data j z if itemp i else break for i itemp i 0 data i...