C程序列出最多1000个阿姆斯特朗号码 #包括 #包括 #包括 void main() { int i,n,和=0,rem; clrsc(); 对于(i=1;i
您应该保留一份i的副本,以便与sum变量进行比较 到现在为止,当我变成0时,你在每一步比较sum和i 您应该使用一个临时变量来存储i的值(在执行i/=10之前) 此外,您不能将i保持在while循环中,因为它始终为0,因此后增量对它没有影响。您应该需要另一个临时变量,例如C程序列出最多1000个阿姆斯特朗号码 #包括 #包括 #包括 void main() { int i,n,和=0,rem; clrsc(); 对于(i=1;i,c,C,您应该保留一份i的副本,以便与sum变量进行比较 到现在为止,当我变成0时,你在每一步比较sum和i 您应该使用一个临时变量来存储i的值(在执行i/=10之前) 此外,您不能将i保持在while循环中,因为它始终为0,因此后增量对它没有影响。您应该需要另一个临时变量,例如div 最后,您应该打印temp 此外,阿姆斯特朗数是一个n位数,等于其数字的n次幂之和 所以,对于1000,你需要计算四次方 #include<stdio.h> #include<conio.h> #i
div
最后,您应该打印temp
此外,阿姆斯特朗数是一个n位数,等于其数字的n次幂之和
所以,对于1000,你需要计算四次方
#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();
}
int-temp,div;
对于(i=1;i,您还可以使用此代码在给定范围内打印阿姆斯特朗编号
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);
}
#包括
int main()
{
int num,r,sum,temp;
最小整数,最大整数;
printf(“输入最小范围:”);
扫描频率(“%d”和最小值);
printf(“输入最大范围:”);
扫描频率(“%d”和最大值);
printf(“给定范围内的阿姆斯特朗数为:”);
对于(num=min;numAlso,1000为4位数字,因此OP必须将pow(rem,3)更改为pow(rem,4)不@Am_I_有帮助,Armstrong number是一个数字,它等于数字总和乘以数字中的总位数的幂eah..明白了!I的值应该被保留。但即使这样,我们也在打印I,它已经是0了。所以问题出在这里remains@Am_I_Helpful您不能在while
循环中使用i
。for
循环试图增加i
,但是while
循环总是将i
返回到0。这不能很好地结束。GCC(在Linux系统上),CodeBlocks IDE(在Windows上)
只是吹毛求疵:GCC是一个编译器,CB是一个IDE,不同的东西。Windows上的CB也使用GCC作为编译器,您也可以在Linux上使用CB!如果答案有帮助,请不要忘记接受答案。请参阅如何接受答案-->
#include<stdio.h>
int main()
{
int num,r,sum,temp;
int min,max;
printf("Enter the minimum range: ");
scanf("%d",&min);
printf("Enter the maximum range: ");
scanf("%d",&max);
printf("Armstrong numbers in given range are: ");
for(num=min;num<=max;num++)
{
temp=num;
sum = 0;
while(temp!=0)
{
r=temp%10;
temp=temp/10;
sum=sum+(r*r*r);
}
if(sum==num)
printf("%d ",num);
}
return 0;
}