用C语言循环语句输出1000以内的所有的“水仙花数”,“水仙花数”是指一个3位数,其各位数字立方和等于改数本身。例如:153是水仙花数,因为153等于1的立方加上5的立方加上3的立方。
时间: 2024-10-08 18:05:07 浏览: 20
要使用C语言编写一个循环来找出1000以内的所有水仙花数,你可以创建一个for循环遍历从100到999的所有数字,然后检查它们各个位的立方和是否等于原数。下面是示例代码:
```c
#include <stdio.h>
#include <math.h>
// 函数定义来判断一个数是否是水仙花数
int is NarcissisticNumber(int num) {
int digits[3];
int sum = 0;
// 分离每一位数字
while(num > 0) {
digits[2] = num % 10;
sum += pow(digits[2], 3); // 计算立方和
num /= 10;
}
// 检查是否所有位的立方和等于原数
return sum == num;
}
int main() {
for(int i = 100; i < 1000; ++i) {
if(is NarcissisticNumber(i)) {
printf("%d 是一个水仙花数.\n", i);
}
}
return 0;
}
```
相关问题
“水仙花数”是指一个三位数字的整数,其个位、十位、百位上的数字的立方和等于该整数本身。例如,153是“水仙花数”,因为153=1³+33³+53³。 用c语言编写:采用循环编程输出所有的水仙花数,计算总共有多少个水仙花数。当数据不是水仙花数时使用continue语句跳过其后面的语句。将找到水仙花数输出到屏幕上,且要求每行输出3个数,数与数之间有空格间隔。水仙花数的总个数单独一行输出。(不是水仙花数的数不要输出。)
以下是C语言代码:
#include <stdio.h>
int main() {
int count = 0; // 计数器,记录水仙花数的个数
for (int i = 100; i <= 999; i++) {
int a = i / 100; // 百位数
int b = (i / 10) % 10; // 十位数
int c = i % 10; // 个位数
if (i == a*a*a + b*b*b + c*c*c) { // 判断是否为水仙花数
printf("%d ", i); // 输出水仙花数
count++; // 计数器加1
if (count % 3 == 0) { // 每行输出3个数
printf("\n"); // 换行
}
} else {
continue; // 不是水仙花数,跳过后面的语句
}
}
printf("\n水仙花数的总个数为:%d\n", count); // 输出水仙花数的总个数
return 0;
}
输出结果如下:
153 370 371
407
水仙花数的总个数为:4
水仙花数是各位数字立方之和等于数字本身的三位整数,如153是水仙花数,因为153=13+53+33,利用C语言中的while语句编写程序求出所有的水仙花数并输出。
很好,下面是使用while循环的C语言程序:
```c
#include <stdio.h>
int main() {
int num = 100;
int digit1, digit2, digit3, tmp;
while (num < 1000) {
digit1 = num / 100; // 获取百位数
digit2 = (num / 10) % 10; // 获取十位数
digit3 = num % 10; // 获取个位数
tmp = digit1*digit1*digit1 + digit2*digit2*digit2 + digit3*digit3*digit3; // 计算立方和
if (tmp == num) { // 判断是否为水仙花数
printf("%d\n", num); // 输出水仙花数
}
num++; // 继续下一个数的判断
}
return 0;
}
```
程序中使用了一个while循环,从100到999遍历了所有的三位数,然后依次计算每个数的百位数、十位数和个位数,计算立方和,判断是否等于该数本身。如果相等,则输出该数。
阅读全文