c++使用函数输出水仙花
时间: 2024-05-16 20:16:43 浏览: 9
水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153 = 1^3 + 5^3 + 3^3。下面是一个使用函数输出水仙花数的 C++ 代码示例:
```c++
#include <iostream>
using namespace std;
// 判断一个数是否为水仙花数
bool isNarcissus(int n) {
int sum = 0, tmp = n;
while (tmp) {
int digit = tmp % 10;
sum += digit * digit * digit;
tmp /= 10;
}
return sum == n;
}
// 输出所有三位水仙花数
void printNarcissus() {
for (int i = 100; i <= 999; i++) {
if (isNarcissus(i)) {
cout << i << " ";
}
}
}
int main() {
cout << "所有三位水仙花数如下:" << endl;
printNarcissus();
return 0;
}
```
运行上述代码,输出结果如下:
```
所有三位水仙花数如下:
153 370 371 407
```
相关问题
使用pow函数判断水仙花数
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次方之和等于它本身。我们可以使用pow函数来计算每个位上的数字的n次方,然后将它们相加,最后判断和是否等于原数即可。
以下是使用pow函数判断水仙花数的示例代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n, num, sum = 0;
cin >> n;
num = pow(10, n - 1); // 计算n位数的最小值
while (num < pow(10, n)) {
int temp = num;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
if (sum == num) {
cout << num << "是水仙花数" << endl;
}
num++;
sum = 0;
}
return 0;
}
```
在该代码中,我们首先输入位数n,然后计算n位数的最小值num。接着,我们使用两个嵌套的while循环来遍历所有n位数,计算每个位上的数字的n次方之和,并判断是否等于原数。如果是水仙花数,则输出结果。最后,我们将num加1,重置sum为0,继续遍历下一个数。
用c++语言输出所有水仙花数,每行只输出四个结果
以下是使用C语言输出所有水仙花数的代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int i, j, k;
int cnt = 0; // 用于计数已经输出了多少个水仙花数
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
int num = i * 100 + j * 10 + k;
int sum = pow(i, 3) + pow(j, 3) + pow(k, 3);
if (num == sum) { // 判断是否为水仙花数
printf("%d ", num);
cnt++;
if (cnt % 4 == 0) { // 每行只输出四个结果
printf("\n");
}
}
}
}
}
return 0;
}
```
该程序首先使用三层嵌套循环枚举所有的三位数,然后计算每个三位数的各位数字的立方和,判断是否等于该三位数本身,如果等于就是一个水仙花数。代码中的 `pow` 函数用于计算一个数的指定次幂,也可用简单的乘法代替。每输出四个结果就换一行,实现了每行只输出四个结果的要求。