鱼C论坛

 找回密码
 立即注册
查看: 2562|回复: 1

[已解决]编程

[复制链接]
发表于 2022-11-16 16:40:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//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);
        }
}
要求一个四位数的每一位的四次方和等于其本身,为什么我的这个没有输出
最佳答案
2022-11-17 15:52:06
本帖最后由 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); //应该有空格
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-17 15:52:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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); //应该有空格
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 09:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表