我想打印一系列位于 m 和 n 之间的 Armstrong 数字。这里m和n是用户给出的两个输入

I want to print a series of Armstrong numbers which lie between m and n. Here m and n are the two inputs given by the user

我正在尝试打印该系列,但每当我将范围(我给出的输入)设置为 407 以上时。我只能得到 407 之前的输出。但是,当我将范围设置为 407 以下时,它会根据根据我给出的输入。谁能告诉我我做错了什么?

我使用在线编译器 (www.onlinegdb.com) 编写我的代码。

这是代码。

#include<stdio.h>  
#include<stdlib.h>
int 
main () 
{
  
int m, n;
 
printf 
    ("Enter two numbers to find the Armstrong numbers that lie between them.\n");
scanf ("%d%d", &m, &n);

system("clear");

if(m>n)
{
    m = m + n;
    n = m - n;
    m = m - n;
}

for (; m < n; m++)
{

int i = m + 1, r, s = 0, t;

t = i;

while (i > 0)
{
 r = i % 10;
 s = s + (r * r * r);
 i = i / 10;
}

if (t == s)
printf ("%d ", t);
}

return 0;
}



enter image description here

enter image description here

Try this code!!!


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



int main() {



  int low, high, number, originalNumber, rem, count = 0;
  double result = 0.0;



  printf("Enter two numbers(intervals): ");
  scanf("%d %d", &low, &high);



  printf("Armstrong numbers between %d and %d are: ", low, high);



  // swap numbers if high < low
  if (high < low) {
    high += low;
    low = high - low;
    high -= low;
  }


   
  // iterate number from (low + 1) to (high - 1)
  // In each iteration, check if number is Armstrong
  for (number = low + 1; number < high; ++number) {
    originalNumber = number;



    // number of digits calculation
    while (originalNumber != 0) {
      originalNumber /= 10;
      ++count;
    }



    originalNumber = number;



    // result contains sum of nth power of individual digits
    while (originalNumber != 0) {
      rem = originalNumber % 10;
      result += pow(rem, count);
      originalNumber /= 10;
    }



    // check if number is equal to the sum of nth power of individual digits
    if ((int)result == number) {
      printf("%d ", number);
    }



    // resetting the values
    count = 0;
    result = 0;
  }





  return 0;


}

试试这个代码:

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

int main()
{
int start, end, i, temp1, temp2, remainder, n = 0, result = 0;

printf(“Enter start value and end value : “);
scanf(“%d %d”, &start, &end);
printf(“\nArmstrong numbers between %d an %d are: “, start, end);

for(i = start + 1; i < end; ++i)
{
temp2 = i;
temp1 = i;

while (temp1 != 0)
{
temp1 /= 10;
++n;
}

while (temp2 != 0)
{
remainder = temp2 % 10;
result += pow(remainder, n);
temp2 /= 10;
}

if (result == i) {
printf(“%d “, i);
}

n = 0;
result = 0;

}
printf(“\n”);
return 0;
}