正序分解整數
問題描述:
輸入一個非負整數,正序輸出它的每一位數字。如輸入:12345,輸出:1 2 3 4 5。
程序
第一個爲我自己寫的程序,用的是while循環,後來看老師的課件,發現用的是do_while循環(第二個程序)。想了一下子後,發現在進入該語句之前,divisor始終是大於等於1的,即無論如何都會進入循環體,用while循環相當於判斷(必定成立)—>執行—>判斷…其實這種用法與do_while是一樣的。雖然兩個程序的結果是一樣的,但是還是選用do_while循環好一點。
#include <stdio.h>
int main()
{
int n; //輸入的非負整數
int x; // 每一位的數字
int number;
int divisor = 1;
scanf("%d",&n) ;
x = n;
while (x > 9){
divisor *= 10;
x /= 10;
}
//這裏我用的while循環
while (divisor > 0) {
number = n/divisor;
n = n%divisor;
divisor /= 10;
printf("%d", number); //輸出每一位數字之間的空格
if (divisor > 0){
printf(" ");
}
}
return 0;
}
推薦使用
#include <stdio.h>
int main()
{
int n; //輸入非負整數
int x;
int number; // 每一位的數字
int divisor = 1;
scanf("%d",&n) ;
x = n;
while (x > 9){
divisor *= 10;
x /= 10;
}
//這裏老師用的do_while循環
do {
number = n/divisor;
n = n%divisor;
divisor /= 10;
printf("%d", number);
if (divisor > 0){ //輸出每一位數字之間的空格
printf(" ");
}
} while (divisor > 0);
return 0;
}