關于C語言用遞歸拆分整數?
將一個整數的各個位分離出來的最簡單方法就是模10,取個位數,直到該變為0。
參考代碼:
#include <stdio.h>void main(){ int n=0; scanf("%d", &n ); do { printf("%d\n", n%10 ); //每次輸出個位 n/=10 ; //縮小10倍,去除原來的個位。 }while(n);}但這整拆分的特點是從后向前輸出每一位數。
如果僅是為了輸出,還想正向輸出每一位數,則可用遞歸函數來解決。(也可以實現逆向輸出)
參考代碼:
#include <stdio.h>void split_int( int n ){ if ( n>0 ) { //printf("%d\n", n%10 );//逆向輸出,放開這里,關閉下面的printf().即:先輸出當前個位,再去高位的數 split_int( n/10 );//先去輸出高位的數 printf("%d\n", n%10 ); //再輸出當前的個位數 }}void main(){ int n; scanf("%d", &n); split_int(n);}如果想把分離開的數據存儲到數組中,則最簡單的方法是將整數用sprintf()存儲到字符數組中,然后,遍歷數組,逐位取出。
參考代碼:
#include <stdio.h>void main(){ int n,i; char str[20]; scanf("%d", &n); sprintf(str,"%d", n); for( i=0;str[i];i++ ) //正向輸出 printf("%c\n", str[i] ); for( i--;i>=0;i-- ) //逆向輸出 printf("%c\n", str[i] );}上一篇電視上的廣告叫什么
下一篇c語言怎樣增大輸出字體