h-b-z-d-j-s-m 发表于 2022-11-16 16:43:11

c编程


#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);
        }
}
要求一个四位数的每一位的四次方和等于其本身,为什么我的没有输出

两手空空儿 发表于 2022-11-16 16:47:13

这一套下来   while结束的时候i = 0
if(num==i)到这一句的时候 i=0, 所以就没有输出了

jackz007 发表于 2022-11-16 16:53:59

本帖最后由 jackz007 于 2022-11-16 17:02 编辑

      for(i=1000;i<9999;i++)
      {
                num = 0                  ;// 对于每一个 i ,num 都需要重新初始化为 0 值。
                j = i                  ;// 经过后面的循环 i 会成为 0 值,而后面比相等还要用 i ,而且,i 是 for 的循环变量,不允许被改变,所以,这里需要一个替身
                while(j)                  // 让 j 顶替 i
                {
                        a = j % 10       ;
                        num=num+pow(a,4) ;
                        j = j / 10       ;// 让 j 顶替 i
                }
                if(num == i)                // 这里比较要用到 i,所以,必须用 j 顶替 i

h-b-z-d-j-s-m 发表于 2022-11-16 17:07:05

本帖最后由 h-b-z-d-j-s-m 于 2022-11-16 17:13 编辑

jackz007 发表于 2022-11-16 16:53


页: [1]
查看完整版本: c编程