首页 > 解决方案 > 为什么我的代码没有给出正确的输出?

问题描述

这是打印用户输入的 m 到 n 范围内的所有 armstrong 数字的代码。但是当我运行它时,它没有给出正确的输出。假设我输入 m 作为 1 和 n 作为大约 10000,它只显示 '1 is armstrong' 而没有别的。请告诉我我的代码是否有问题。

#include<stdio.h>
void main()
{

    int m,n,a,i,j=0,r; 
    printf("Enter m\n");
    scanf("%d",&m);

    printf("Enter n\n");

    scanf("%d",&n);

    for(i=m;i<=n;i++)
    {
        int temp=i;
        while(i>0)
        {
            r=i%10;
            j=j+r*r*r;
            i=i/10;
        }

        if(j==temp)
        {
            printf("%d is armstrong\n",temp);
        }


    }
}

标签: c

解决方案


for(i=m; i<=n; i++)
{
    j = 0;
    int temp = i;
    while(temp > 0)
    {
        r = temp % 10;
        j = j + r*r*r;
        temp = temp/10;
    }

    if(j == i)
    {
        printf("%d is armstrong\n", i);
    }


}

在 while 循环中,您需要使用变量 temp 以使 i 保持不变,以便 for 循环正确继续。在开始新的 while 循环之前,设置 j = 0 以从 0 重新开始计数。在 if 语句中比较 j == i 因为 temp 变量被 while 循环减少为 0。


推荐阅读