C程序列出最多1000个阿姆斯特朗号码 #包括 #包括 #包括 void main() { int i,n,和=0,rem; clrsc(); 对于(i=1;i

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

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

到现在为止,当我变成0时,你在每一步比较sum和i

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

此外,您不能将i保持在while循环中,因为它始终为0,因此后增量对它没有影响。您应该需要另一个临时变量,例如
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;
  }