解题思路:通过将整数分别分解为100、10、1的倍数,然后将这些因数进行重组,若能按照水仙花数的规则重组成功,即为水仙花数。

注意事项:看了一下其他人的解法,发现若不设变量的话,容易使代码看起来比较冗长,下面的代码设的变量较多(不过还好函数之间的局部变量不会相互影响,而且变量的含义相同,我就直接设了相同的变量)。。。。。。。萌新代码,比较垃圾,谨慎参考(-_-+)

参考代码:

#include <stdio.h>

#include <math.h>

int main()

{

 int condition(int x);         //括号里的int x是形式参数 

 int y;             //储存函数condition的返回值 

    int num;            //基数 

    int m,n,p;            //分解因数变量 

 for(m = 1;m < 10;m++)         //遍历基数 

 {

  for(n = 0;n < 10;n++)

  {

   for(p = 0;p < 10;p++)

   {

    num = 100*m + 10*n + p;      //分解因数

    y = condition(a);       //调用函数condition来判断是否满足水仙花数的条件 

    if(y == 1) printf("水仙花数:%d\n", a); //筛选水仙花数 

   }

  }

 }

    return 0;

}

int condition(int x)          //condition函数 

{

 int m, n, p, q;           //局部变量的作用域仅局限在该函数中 

 m = x/100;     

 n = (x%100)/10;

 p = (x%100)%10;

 q = pow(m,3) + pow(n,3) + pow(p,3);

 if (q == x) x = 1;          //筛选 

 else   x = 0;

 return x;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论