得到一个数字中每一位的数字

学习编程也有一段时间了,随着学习的不断深入,我越来越体会到了算法的重要性,最近遇到了一些非常有意思的算法,比如打印水仙花数、将数字逆置,在这两个算法中会用到一个数字钟每一位的值

如:判断数字123是否是水仙花数需要得到每一位的数字

通常计算每一位的数字的算法是:

个位:a = 123 % 10 = 3

十位:b  = 123 %100 / 10 = 2

百位::c = 123 % 100 = 2


随着位数的越来越大,这种方法满足不了程序的需求

比如计算:123445677777777777777777777每一位的数字使用上面的方法肯定是不行的


最近我学了一种比较好的方法:

为了便于理解这种方法,我用前面的例子使用这种方法计算123中每一位的值


需要计算的数字:

1 2 3

首先定义变量  j = 123

m = 0


第一步:求出个位上的数字

m = j % 10 = 123 % 10 = 3

j = j / 10 =  123 / 10 = 12;//将三位数变成两位数


第二步:求出十位上的数字

m = j % 10 = 12 % 10 = 2

j = j / 10 = 12 / 10 = 1//将两位数变成一位数


第三步:求出百位上的数字

m = j % 10 = 1 % 10 = 1

j = j / 10 = 1 / 10 = 0//将数字清零


最后得到个位上的数字是3,十位上的数字是2, 百位上的数字是1


程序代码:

#include 
#include 

void main()
{
	int num;
	int i = 0;

	printf("请输入一个数字:");
	scanf("%d", &num);

	while(num>0)
	{
		i = num % 10;//计算每一位上的数字

		printf("%d\n", i);//打印每一位数字

		num = num / 10;//实现位与位之间的遍历
	}

	system("pause");
}

测试程序:
当输入123时

得到一个数字中每一位的数字_第1张图片


当输入一个比多位数时:比如12341221

得到一个数字中每一位的数字_第2张图片



你可能感兴趣的:(C语言)