gyq497 发表于 2023-3-18 15:37:26

循环结构题!!!新手小白

int main()
{
        long int x,y,z;
        long int a;
        printf("请输入整数x,y(例2 3): ");
        scanf("%d %d",&x,&y);
        z = pow(x,y);
        printf("%ld\n",z);
        a = z % 1000;
        printf("%ld",a);
        return 0;
}


题目是球x的y次方的最后三位数,题目没有报错,但是如果我输入 13 20,答案z=-2147483648       最后三位a=-648,正确答案应该是801;
但是如果我输入2 9运行结果是512 是正确的,我想知道是哪个地方出错了!?

isdkz 发表于 2023-3-18 15:54:06

你的程序中存在几个问题。首先,你需要使用%ld而不是%d来读取long int类型的变量。其次,pow函数在计算时使用的是浮点数,这可能导致精度丢失和错误的结果。下面是修改后的代码:

#include <stdio.h>

int main()
{
    long int x, y, z;
    long int a;
    printf("请输入整数x,y(例2 3): ");
    scanf("%ld %ld", &x, &y);
    z = 1;
    for (int i = 0; i < y; i++)
    {
      z *= x;
      z %= 1000;
    }
    printf("%ld\n", z);
    a = z % 1000;
    printf("%ld", a);
    return 0;
}

在这个修改后的程序中,我们使用了一个循环来计算x的y次方,同时在循环中对结果取模1000,以避免溢出和精度丢失问题。

现在,如果你输入13和20,你将得到正确的答案:801。

傻眼貓咪 发表于 2023-3-18 15:59:08

isdkz 发表于 2023-3-18 15:54
你的程序中存在几个问题。首先,你需要使用%ld而不是%d来读取long int类型的变量。其次,pow函数在计算时使 ...

最近几个贴回答的太像....? {:10_312:}{:10_312:}{:10_312:}

isdkz 发表于 2023-3-18 15:59:44

傻眼貓咪 发表于 2023-3-18 15:59
最近几个贴回答的太像....?

{:10_256:}

liuhongrun2022 发表于 2023-3-18 16:06:34

isdkz 发表于 2023-3-18 15:54
你的程序中存在几个问题。首先,你需要使用%ld而不是%d来读取long int类型的变量。其次,pow函数在计算时使 ...

c h a t g p t?

isdkz 发表于 2023-3-18 16:18:35

liuhongrun2022 发表于 2023-3-18 16:06
c h a t g p t?

这么明显吗???{:10_284:}

liuhongrun2022 发表于 2023-3-18 16:22:22

isdkz 发表于 2023-3-18 16:18
这么明显吗???

除了 c h a t g p t 谁会用那种语气说话?

傻眼貓咪 发表于 2023-3-18 16:28:05

isdkz 发表于 2023-3-18 16:18
这么明显吗???

太明显了 {:5_97:}

gyq497 发表于 2023-3-18 18:35:11

isdkz 发表于 2023-3-18 15:54
你的程序中存在几个问题。首先,你需要使用%ld而不是%d来读取long int类型的变量。其次,pow函数在计算时使 ...

谢谢你!我理解啦!

歌者文明清理员 发表于 2023-3-18 20:08:55

isdkz 发表于 2023-3-18 16:18
这么明显吗???

承认了?
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=225807&pid=6181712
页: [1]
查看完整版本: 循环结构题!!!新手小白