中國大學MOOC《程序設計入門-C語言》學習(七):正序分解整數

正序分解整數

問題描述:

輸入一個非負整數,正序輸出它的每一位數字。如輸入: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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章