21xrx.com
2024-12-22 16:56:48 Sunday
登录
文章检索 我的文章 写文章
C++编程实现水仙花数检查——while语句
2023-07-12 07:04:17 深夜i     --     --
C++编程 水仙花数 检查 while语句

水仙花数又称阿姆斯特朗数,是指一个 n 位数恰好等于其各个位数字的 n 次方之和。例如,$153$ 是一个水仙花数,因为 $1^3+5^3+3^3=153$。现在我们可以用 C++ 语言来编写程序来检查一个数是否是水仙花数,以下是使用 while 语句实现的程序。


#include <iostream>

#include <cmath>

using namespace std;

int main() {

  int num = 0, temp = 0, sum = 0, digit = 0;

  cout << "请输入一个三位数:";

  cin >> num;

  temp = num;

  while(temp > 0) {

    digit = temp % 10;

    sum += pow(digit, 3);

    temp /= 10;

  }

  if(sum == num)

    cout << num << "是水仙花数" << endl;

   else

    cout << num << "不是水仙花数" << endl;

  

  return 0;

}

首先,在程序中我们定义了四个整型变量,分别表示输入的数(`num`)、暂存变量(`temp`)、各位数字的立方和(`sum`)以及位数(`digit`)。

然后,我们通过 `cin` 输入一个三位数,将其赋值给 `num`,并将 `num` 赋值给 `temp` 来进行后续操作。接着,在 `while` 循环中,我们先判断 `temp` 是否为零,如果不是,则执行循环体部分。在循环体内,我们找到 `temp` 的最低位作为 `digit`,然后用 `pow` 函数计算出 `digit` 的三次方,将其加入 `sum` 中。最后,我们将 `temp` 除以 $10$,将 `temp` 的最低位去除掉,开始下一轮循环。

当 `while` 循环结束时,我们需要进行水仙花数的检查。如果 `sum` 等于 `num`,则说明 `num` 是水仙花数,程序输出 `"num是水仙花数"`;否则,`num` 不是水仙花数,程序输出 `"num不是水仙花数"`。

最后,程序返回 `0`,运行结束。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复