C
C语言经典案例,三种方法求水仙花数附完整代码
原题输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。解题思路初始化
i=100。取i的各位数,百位a,十位b,个位c。判断i==a ∧3+b∧3+c∧3 是否成立如果成立则输出,否则不输出。
i=i+1,当i小于1000重复,否则结束。关键算法:取任意三位数的各位数算法一:除减法将数除以100,由整型数据特点,小数点后被忽略,取得百位a。该数减去a * 100,除以10,得到十位b。该数减去a * 100和b * 10即得个位c。代码实现a = i / 100;b = (i - 100 * a) / 10;c = i - 100 * a - 10 * b;完整代码:void NarcissusNumber(int m) { int a; //三位数的百位int b; //三位数的十位int c; //三位数的个位int d; //各位
数字立方和与数的差值 a = m / 100; b = (m - 100 * a) / 10; c = m - 100 * a - 10 * b; d = a*a*a + b*b*b + c*c*c - m; if (d==0) //各位数字立方和与数相等,输出{ printf('%d ', m); }}好处:易理解,菜鸟基本都会这算法。不足:当数字位数较大时,减法操作需要进行多次,比较代码比较冗长。算法二:除余法将数除以10取余数得个位c将数除以10后再与10
取余得到十位b将该数除以100再与10取余得到百位a代码实现int c = n % 10; //个位int b = n / 10 % 10; //十位int a = n / 100 % 10; //百位,或者写int c = n / 100;这种算法对我们菜鸟