C语言打印输出水仙花数
时间: 2023-11-23 09:58:25 浏览: 169
以下是C语言打印输出水仙花数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main(){
int a = 0; //百位
int b = 0; //十位
int c = 0; //个位
for(int i = 100; i < 1000; i++){
a = i / 100;
b = i / 10 % 10;
c = i % 10;
if(i == a*a*a + b*b*b + c*c*c){
printf("%d\n", i);
}
}
return 0;
}
```
该程序使用for循环遍历100到999之间的所有三位数,然后将其百位、十位和个位分别计算出来。接着,使用if语句判断该数是否为水仙花数,如果是,则输出该数。
相关问题
c语言、打印水仙花数。水仙花数是一个三位数,其各位数字的立方和与原数相等。 输出格式: 按递增顺序输出所有水仙花数,每个数输出占5列。 输出样例: 153 370 371 407
在C语言中,我们可以编写一个程序来查找并打印所有的水仙花数。水仙花数是指一个三位数,其每一位数字的三次幂之和等于该数本身。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <math.h>
// 函数来检查一个数是否是水仙花数
int is_narcissistic_number(int num) {
int digits[3], sum = 0;
if (num < 100 || num > 999) return 0; // 只考虑三位数
// 获取每位数字并计算它们的立方和
while (num != 0) {
digits[0] = num % 10;
digits[1] = (num / 10) % 10;
digits[2] = num / 100;
for (int i = 0; i < 3; i++) {
sum += pow(digits[i], 3);
}
num /= 100;
}
// 判断是否满足水仙花条件
return sum == num;
}
// 打印水仙花数
void print_narcissistic_numbers() {
int start = 100, end = 999; // 考虑的范围
printf("%-5d", start); // 打印第一个数占5列
for (int i = start + 1; i <= end; i++) {
if (is_narcissistic_number(i)) {
printf("%-5d", i);
if ((i+1) % 10 == 0) { // 每行10个数换行
printf("\n");
}
}
}
}
int main() {
print_narcissistic_numbers();
return 0;
}
```
当你运行这个程序,它会按照样例输出所有在100到999之间的水仙花数,每行显示5个,直到达到这一范围内的最后一个。
用C语言编程打印水仙花数。水仙花数是一个三位数,其各位数字的立方和与原数相等。 输出格式: 按递增顺序输出所有水仙花数,每个数输出占5列。 输出样例: 153 370 371 407
在C语言中,我们可以编写一个简单的程序来找出并打印所有的水仙花数。首先,我们需要定义一个函数`is_armstrong`用于检查一个数是否是水仙花数,然后在一个主循环中遍历3位数范围内的所有整数,对每个数调用这个函数。以下是实现这一功能的代码:
```c
#include <stdio.h>
#include <stdbool.h>
// 检查一个数是否是水仙花数
bool is_armstrong(int num) {
int original_num, sum = 0;
// 取出每一位数字
while (num != 0) {
original_num = num; // 备份原始数值防止溢出
sum += pow((original_num % 10), 3); // 立方和累加
num /= 10;
}
// 如果原数等于它的各个位立方之和,则返回true,否则返回false
return sum == original_num;
}
int main() {
for (int i = 100; i <= 999; i++) { // 遍历3位数
if (is_armstrong(i)) {
printf("%5d", i); // 输出宽度为5的数
// 打印结束后换行,除非是最后一个数
if (i % 100 != 99) {
printf("\n");
}
}
}
return 0;
}
```
在这个程序中,我们首先从100到999遍历每一个数,如果该数是水仙花数,就使用`printf`格式化输出,保留5列宽。当找到一个数后,会检查是否是每100个数结尾,如果不是,会在打印完当前数后换行,保持输出格式一致。
阅读全文