编程学习网 > 编程语言 > C/C++开发 > 如何学习C语言,三种经典方法求水仙花数带你入门(c语言中水仙花数该怎么做)
2022
06-27

如何学习C语言,三种经典方法求水仙花数带你入门(c语言中水仙花数该怎么做)

C语言作为一门通用的计算机编程语言,被广泛的应用于底层开发,并且在各大高校作为一门必修课出现,它能以简易的方法编译处理低级存储器,可以提高人们的工作效率,但是由于C语言比较难入门,导致很多同学在学习过程中有心无力。因此,编程学习网带大家以三种经典方法求水仙花数带你入门C语言,快来看看你知道这几种方法吗

原题:输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。


算法一:除减法

①将数除以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;


这种算法对我们菜鸟来说很新奇,难以想到。

即使这样,该算法也不比算法一简洁,所以需要改进。

算法二改进

①将数除以10取余数得个位c,将该数除以10

②重复①得到十位b

③继续重复①得到百位a

代码实现


int sum = 0; //求和变量int temp=i; //存放数值i,防被覆盖而丢失int rem; //余数for (int j = 0; j < 3; j++)//第一次循环得到个位立方和,第二次循环得到个位与十位立方和...{ rem = temp % 10; temp /= 10; sum += rem * rem*rem;}


这算法简便,效率较高

有点难懂

完整代码


//输出水仙花void NarcissusNumber(){ for (int i = 100; i < 1000; i++) { int sum = 0; int temp=i; int rem; for (int j = 0; j < 3; j++) { rem = temp % 10; temp /= 10; sum += rem * rem*rem; } if (sum == i) { printf("%d ", i); } }}


以上就是“如何学习C语言,三种经典方法求水仙花数带你入门(c语言中水仙花数该怎么做)”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取