循环结构题!!!新手小白
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 是正确的,我想知道是哪个地方出错了!? 你的程序中存在几个问题。首先,你需要使用%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。 isdkz 发表于 2023-3-18 15:54
你的程序中存在几个问题。首先,你需要使用%ld而不是%d来读取long int类型的变量。其次,pow函数在计算时使 ...
最近几个贴回答的太像....? {:10_312:}{:10_312:}{:10_312:} 傻眼貓咪 发表于 2023-3-18 15:59
最近几个贴回答的太像....?
{:10_256:} isdkz 发表于 2023-3-18 15:54
你的程序中存在几个问题。首先,你需要使用%ld而不是%d来读取long int类型的变量。其次,pow函数在计算时使 ...
c h a t g p t? liuhongrun2022 发表于 2023-3-18 16:06
c h a t g p t?
这么明显吗???{:10_284:} isdkz 发表于 2023-3-18 16:18
这么明显吗???
除了 c h a t g p t 谁会用那种语气说话? isdkz 发表于 2023-3-18 16:18
这么明显吗???
太明显了 {:5_97:} isdkz 发表于 2023-3-18 15:54
你的程序中存在几个问题。首先,你需要使用%ld而不是%d来读取long int类型的变量。其次,pow函数在计算时使 ...
谢谢你!我理解啦! isdkz 发表于 2023-3-18 16:18
这么明显吗???
承认了?
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=225807&pid=6181712
页:
[1]