1. 程式人生 > >c語言實現輸出一個數的每一位

c語言實現輸出一個數的每一位

文件 語言 use 我們 str 一次 在屏幕上 ont popu

比方輸入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;
}
分析:對於給定的數或者是輸入的數,從高位到低位一次輸出~第一個while循環計算出了數據的位數。第2個while循環用於打印每個位,假設我們未定義tmp變量。第一個while運行完。給定數字變成0。第二個while就進不去。所以。設定新的變量保存一份數據。

第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語言實現輸出一個數的每一位