C语言教程
C语言控制语句
C语言函数
C语言数组
C语言指针
C语言字符串
C语言数学函数
C语言结构
C语言文件处理
C预处理器

C 显示两个区间之间的阿姆斯特朗数的程序

显示两个区间之间的阿姆斯特朗数的 C 程序

在本例中,您将学习在用户输入的两个整数之间查找所有阿姆斯壮数。
要理解此示例,您应该了解以下C 编程 主题:
C if...else 语句 C for 循环
一个正整数称为阿姆斯特朗数( n 阶) if
abcd... = an + bn + cn + dn + 
对于 3 位数的阿姆斯特朗数,每位数的立方和等于该数本身。例如,153 是一个阿姆斯特朗数,因为
153 = 1*1*1 + 5*5*5 + 3*3*3
在这个程序中,我们将打印两个整数之间的所有阿姆斯特朗数。这意味着这两个整数不会是范围的一部分,而只会是它们之间的那些整数。
例如,假设我们要打印 153 和 371 之间的所有 Armstrong 数字。这两个数字也是阿姆斯特朗数字。
然后,此程序打印所有大于 153 且小于 371 的阿姆斯壮数,即 153 和 371 不会被打印,即使它们是 Armstrong 数字。
注意: 提示: 在尝试这个程序之前,学习如何检查一个整数是否是阿姆斯特朗数。

两个整数之间的阿姆斯特朗数

#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;
}
输出
Enter two numbers(intervals): 200
2000
Armstrong numbers between 200 and 2000 are: 370 371 407 1634 
在程序中,外循环从(low+ 1)到(high-1)进行迭代。在每次迭代中,检查 number 是否是 Armstrong 数。
在外循环内部,首先计算一个整数的位数并存储在 count中。并且,各个数字的幂的总和存储在 result 变量中。
如果 number 等于 result,则该数字为 Armstrong 数。
注意事项:
如果 high 的用户输入小于 low 的输入,您需要交换 lowhigh .要了解更多信息,请查看我们关于交换两个数字的示例。 您需要在外循环的每次迭代中将 countresult 重置为 0。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4