1.首先定义一个转换函数专门用来将各个位上的数平方之后再相加。
2.1肯定是快乐数,对于不是1的数持续用转换函数的条件是其值大于9,也就是说跳出循环的条件是m <= 9;
#include<stdbool.h> int change(int x){ //自定义转化函数 int sum = 0; while( x > 0){ int j = x % 10; sum = sum + j*j; x = x / 10; } return sum; } bool happynum(int n ) { if(n == 1) return true; //把1单独放一边 int m = 0; while(n > 1){ //大于1的数就转换 m = change(n); //转换之后小于10的数就不继续转换了,直接收网判结 while(m > 9) { //只有大于9的数才需要继续转换,直到最后结果小于等于9才结束循环 m = change(m); //循环转换 } break; //跳出转换的循环 } //开始判结 if(m == 1) return true; else return false; }