解题思路:对于这种要操作一个数多个位数的题目,我们优先选择拆分各位数和放入字符串数组的方法思路进行解决,但对于该题来说,应用字符串的方法解题,会受atoi函数声明不能带有未知量而不能进行for循环语句操作,需要逐个转化,而使得解题过程繁琐,算法不够简洁。因此,对于该题,我们选择拆分各位数的方法进行解题。

这里我们需要拆分各位数,就需要运用%和/运算符,记录每个位数立方之和的累加变量sum,记录初值的fnum变量,一个用于存放各位数的数组a[3]。我们输入一个三位数num变量,先通过一个整型fnum变量记录num的初值,再对num进行操作。运用for循环,我们先对各位开始拆分,先使用%对num取余数得到个位数,并将余数通过连续自乘加入累加变量sum中,以此来记录每个位数立方的值的和;此时我们若要对十位操作,必先用num减去个位数再除以10,便可按照上述步骤进行十位数的拆分;对于第三次时,num通过上述操作,百位数已经变为个位数了,便无需过分操作,直接将其放入a[2]中即可。

最后我们只需比较sum与fnum的值是否相等,并选择输出对应的判断结果即可完成解题。

注意事项:

参考代码:

#include<stdio.h>

int main(){

int i,n=0,sum=0,num,fnum,a[3];

fnum=num;

for(i=0;i<3;i++){

if(num<10){

a[i]=num;

}

else{

a[i]=num%10;

num=(num-a[i])/10;

}

sum+=a[i]*a[i]*a[i];

}

if(sum==fnum){

printf("1");

}

else {

printf("0");

}


点赞(0)
 

0.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论