标签:style blog class code c ext
学习编程也有一段时间了,随着学习的不断深入,我越来越体会到了算法的重要性,最近遇到了一些非常有意思的算法,比如打印水仙花数、将数字逆置,在这两个算法中会用到一个数字钟每一位的值
如:判断数字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 <stdio.h> #include <stdlib.h> 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时
当输入一个比多位数时:比如12341221
标签:style blog class code c ext
原文地址:http://blog.csdn.net/u010105970/article/details/25958279