到底哪里错啦?输出来的数为啥是155?我真的看不出来了,请各位帮忙解答。



关注【以下回答由 GPT 生成】
#include <stdio.h>
int isArmstrong(int num) {
int originalNum, remainder, result = 0, n = 0;
originalNum = num;
// 计算数字的位数
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
// 检查是否为水仙花数
while (originalNum != 0) {
remainder = originalNum%10;
result += pow(remainder, n);
originalNum /= 10;
}
if (result == num)
return 1; // 是水仙花数
else
return 0; // 不是水仙花数
}
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
if (isArmstrong(n)) {
printf("%d是水仙花数", n);
} else {
printf("%d不是水仙花数", n);
}
return 0;
}
这里的修复方法涉及到修改isArmstrong函数,这个函数需要实现计算一个整数是否为水仙花数。在给出的代码中,我加入了计算原始数字的位数的代码,并使用pow函数计算了水仙花数的判定条件。希望这个修复可以解决你的问题。
【相关推荐】