解题思路:通过将整数分别分解为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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复