请用C语言帮我写求水仙花数的程序
时间: 2023-08-31 07:28:15 浏览: 102
求水仙花数的c语言程序
### 回答1:
当然可以,以下是用C语言写的求水仙花数的程序:
```c
#include <stdio.h>
int main() {
int num, originalNum, remainder, result = 0;
printf("请输入一个三位数: ");
scanf("%d", &num);
originalNum = num;
while (originalNum != 0) {
remainder = originalNum % 10;
result += remainder * remainder * remainder;
originalNum /= 10;
}
if (result == num) {
printf("%d是水仙花数。\n", num);
}
else {
printf("%d不是水仙花数。\n", num);
}
return 0;
}
```
这个程序可以让用户输入一个三位数,然后判断这个数是否为水仙花数。水仙花数是指一个三位数,它的每个位上的数字的立方和等于它本身。例如,153是一个水仙花数,因为1³ + 5³ + 3³ = 153。
### 回答2:
求水仙花数指的是找出一个三位数中的所有水仙花数,水仙花数是指一个三位数各个位上的数字的立方和等于该数字本身。具体的C语言代码如下:
```c
#include <stdio.h>
int main() {
int num, digit, sum, temp;
printf("三位数中的水仙花数有:\n");
for(num = 100; num <= 999; num++) {
temp = num;
sum = 0;
while(temp != 0) {
digit = temp % 10; // 求取个位数
sum += digit * digit * digit; // 将每个位上数字的立方累加
temp /= 10; // 去掉已经计算过的个位数
}
if(sum == num) {
printf("%d ", num);
}
}
return 0;
}
```
上述代码使用了for循环遍历所有三位数,然后通过while循环和取模运算,将该数的每个位上的数字进行立方求和。最后,判断立方和是否等于该三位数本身,如果相等,则打印该数,符合水仙花数的条件。
### 回答3:
水仙花数,也被称为自恋数或阿姆斯特朗数,指的是一个n位数,其各位数字的n次方相加等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
下面是用C语言编写求水仙花数的程序:
```c
#include <stdio.h>
#include <math.h>
int main() {
int i, n, num, digit, sum;
// 输入一个正整数n,表示需要找出n位数的水仙花数
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("%d位数的水仙花数有:", n);
// 寻找n位数的水仙花数
for (i = pow(10, n-1); i < pow(10, n); i++) {
num = i;
sum = 0;
// 计算num的每一位数的n次方并累加
while (num > 0) {
digit = num % 10;
sum += pow(digit, n);
num /= 10;
}
// 如果相加等于原数,则打印该水仙花数
if (i == sum) {
printf("%d ", i);
}
}
return 0;
}
```
在程序中,首先要求用户输入一个正整数n,表示需要找出n位数的水仙花数。然后,使用一个for循环遍历从10^(n-1)到10^n范围内的所有数。在每次循环中,将当前数赋给变量num,并将sum设为0。然后使用一个while循环,通过取num的个位数并计算其n次方,并将结果累加到sum中,同时将num除以10使其右移一位,继续计算下一位数的n次方。最后,判断sum是否等于原来的数i,如果是,则说明i是水仙花数,将其打印出来。
以上就是使用C语言编写求水仙花数的程序。程序可以根据用户输入的n,找出对应位数的水仙花数,并将其打印出来。
阅读全文