c語言中,對於給定的一個十進制數n,求出它是幾位數並求它的各個位的數值,順序輸出和逆序輸出

2020-08-11 17:01:01

不管是順序輸出還是逆序輸出,首先都要設計一個函數來實現統計十進制數位的位數:用tmp標記十進制數的位數,將數是否爲0作爲分類標準。
在逆序輸出每一位時需構造while回圈語句,回圈的次數即十進制數的位數,先利用n%10,得到個位並輸出,然後利用n/=10來丟棄個位。
在順序輸出中,也是構造while回圈語句,回圈次數即十進制數的位數,先利用n / (int)pow(10.0, i - 1)得到首位並輸出,接下來利用n %= (int)pow(10.0, i - 1)將首位丟棄。

#include<stdio.h>
#include<math.h>
int Figure(int n)
{
	int tmp=0;
	if (n == 0)
	{
		return 1;
	}
	while (n != 0)
	{
		tmp++;
		n /= 10;
	}
	return tmp;
}
void Print(int n)//順序輸出
{
	int i = Figure(n);
	if (n == 0)
	{
		printf("0\n");
		return;
	}
	while (n != 0 && i>=0)
	{
		printf("%d  ", n / (int)pow(10.0, i - 1));//得到首位數位並輸出
		n %= (int)pow(10.0, i - 1);//丟棄首位
		i--;

	}
	printf("\n");
}
void ReversePrint(int n)//逆序輸出
{
	if (n == 0)
	{
		printf("0\n");
		return;
	}
	while (n != 0)
	{
		printf("%d  ", n %10);//得到末尾數位並輸出
		n /= 10;//丟棄末尾
	}
	printf("\n");
}
int main()
{
	ReversePrint(12345);
	ReversePrint(0);
	ReversePrint(1);
	ReversePrint(122);
	ReversePrint(1234);
	Print(12345);
	Print(0);
	Print(1);
	Print(122);
	Print(1234);
	return 0;

}

偵錯結果:
在这里插入图片描述