gpt4 book ai didi

C 程序列出阿姆斯特朗数最多 1000

转载 作者:行者123 更新时间:2023-11-30 20:51:16 32 4
gpt4 key购买 nike

#include<stdio.h>
#include<conio.h>
#include<math.h>

void main()
{
int i , n , sum=0, rem;
clrscr();
for(i=1;i<=1000;i++)
{
while(i!=0)
{
rem = i%10;
sum = sum + pow(rem,3);
i = i / 10;
}
if(i == sum)
printf("\n %d", i);
}
getch();
}

我尝试使用上面的代码来打印最多 1000 的阿姆斯特朗数字。我得到的输出是一个零列表。我无法找到代码中的错误。预先感谢:)

最佳答案

您应该保留 i 的副本,以便可以保留它以与 sum 变量进行比较。

到目前为止,当 i 变为 0 时,您将在每一步中比较 sum 和 i。

您应该使用临时变量来存储 i 的值(在执行 i/=10 之前)。

此外,你不能将 i 保留在 while 循环中,因为它始终为 0,因此后增量对其没有影响。您应该需要另一个临时变量,例如 div .

并且,您最终应该打印 temp .

此外,阿姆斯特朗数是一个 n 位数字,等于其数字的 n 次方之和。

因此,对于 1000,您需要计算 4 次方。

int temp,div;
for(i=1;i<=1000;i++)
{
temp = i;
div = i;
while(div!=0)
{
rem = div%10;
sum = sum + pow(rem,3);
div = div / 10;
}
if(temp == sum)
printf("\n %d", temp);
}

注意:- 可能您正在使用 Turbo C 编译器(检查 header <conio.h> ),您不应该使用它(您应该避免它)。您应该使用GCC(在Linux系统上)、CodeBlocks IDE(在Windows上)。

关于C 程序列出阿姆斯特朗数最多 1000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579844/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com