Онлайн компилятор C

#include <stdio.h> int is_happy_number(int n) { int sum = 0, x = 1; while (n != 0) { sum += n % 10; x *= n % 10; n = n / 10; } if (x == sum) return 1; else return 0; } int main() { printf("%d", is_happy_number(123)); return 0; }
这段代码定义了一个函数 `is_happy_number`,它计算一个整数的各位数字之和与各位数字之积,然后判断两者是否相等。如果相等则返回1,否则返回0。主函数用123作为测试输入并打印结果。

- 你的代码逻辑是正确的,但注意变量 `x` 初始化为1,如果数字中有0,乘积会变成0,可能导致结果不符合预期。考虑一下当数字包含0时,你希望函数返回什么?
- 另外,函数名是 `is_happy_number`,但“快乐数”通常有另一种定义(重复计算各位平方和直到出现1或循环)。你的实现实际上是判断“各位和等于各位积”的数,确认这是你想要的逻辑吗?