编程
//1#include<stdio.h>
#include<math.h>
int main()
{
int num=0,a,b,i;
for(i=1000;i<9999;i++)
{
while(i)
{
a=i%10;
num=num+pow(a,4);
i=i/10;
}
if(num==i)
printf("%2d",i);
}
}
要求一个四位数的每一位的四次方和等于其本身,为什么我的这个没有输出 本帖最后由 zhangjinxuan 于 2022-11-17 15:55 编辑
你的代码存在四个问题,下面的代码已改正:
#include <stdio.h>
#include <math.h>
int main() {
int num = 0, a, b, i;
for (i = 1000; i <= 9999; i++) { //应该枚举到 9999, 虽然 9999 不是玫瑰数,不过这样做是为了严谨
num = 0; //num 必须清零
int t = i; //必须用一个新变量来记,否则会死循环,你可以模拟一下,比如枚举 1000 时 while 过后就清零了,然后又要重开始枚举……
while (t) {
a = t % 10;
num = num + pow(a, 4);
t = t / 10;
}
if (num == i) {
printf("%2d ", i); //应该有空格
}
}
页:
[1]