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...