c語言實現輸出一個數的每一位
阿新 • • 發佈:2017-07-26
文件 語言 use 我們 str 一次 在屏幕上 ont popu
分析:對於給定的數或者是輸入的數,從高位到低位一次輸出~第一個while循環計算出了數據的位數。第2個while循環用於打印每個位,假設我們未定義tmp變量。第一個while運行完。給定數字變成0。第二個while就進不去。所以。設定新的變量保存一份數據。
比方輸入1234。在屏幕上打印出1 2 3 4
代碼展示:
方法一:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<math.h> //實現打印一個數的每一位 int main() { int num = 1234; int count = 0;//用來保存數字的位數 int tmp = num; int y = 0; while (tmp) { ++count; tmp /= 10; } while (num) { printf("%d ",y = num/pow(10,count-1)); num = num - y * pow(10,count - 1); --count; } system("pause"); return 0; }
第2個while是怎樣實現打印的呢?以num = 1234為例。
num = 1234,打印y = 1234/(10^3) = 1。 num = num - 1*1000 = 234;count = 4,。
num = 234。打印y = 234/100 = 2;num = num - 2*100 = 34;
num = 34。......
num = 4,......
num = 0,退出循環~
方法二:
int main() { char arr[5]; int num = 1234; int i = 0; while (num) { arr[i] = num % 10 + '0'; num /= 10; i++; } while (i >= 1) { printf("%c ",arr[i-1]); i--; } system("pause"); return 0; }分析:利用字符數組存儲每一位,比用整型數組存儲更節省空間。以num = 1234為例。
第一個while
num= 1234,arr[0] = ‘4‘;i = 1;
num = 234, arr[1] = ‘3‘;i = 2;
num = 34, arr[2] = ‘2‘;i = 3;
num = 4, arr[3] = ‘1‘;i = 4;
num = 0,退出循環
第2個while循環,arr[3] = arr[4-1];依次輸出~
方法三:遞歸實現
void print_num(int n) { if (n > 9) print_num(n/10); printf("%d ",n % 10); } int main() { print_num(1234); system("pause"); return 0; }
註:最後兩段代碼都未引入頭文件。在每段代碼中。測試數據我都是直接給出,當然,我們也能夠鍵盤輸入測試數據~~
c語言實現輸出一個數的每一位