C语言程序设计(第三版)何钦铭著 习题4-6
题目
输出水仙花数。
输入一个正整数n(3≤n≤7),输出所有的n位水仙花数。
水仙花数是指一个n位正整数,它的各位数字的n次幂之和等于它本身。
例如153 的各位数字的立方和是
试编写相应程序。
分析过程
输入
条件:输入一个正整数n(3≤n≤7)
输出
条件:输出所有的n位水仙花数
代码
#include <stdio.h>
#include <math.h>
int main () {
/*定义变量*/
int n; /*定义变量,存储输入的正整数n*/
int min, max; /*定义变量,存储判断范围*/
/*赋值*/
printf("请输入正整数n:\n"); /*输入提示*/
scanf("%d \n", &n); /*输入并赋给变量*/
min = pow(10, n-1); /*开始校验的数字*/
max = pow(10, n)-1; /*终止校验的数字*/
/*计算*/
for(int i=min ; i<=max ; i++){ /*假设5分有一个,开始循环*/
int number = i; /*循环中计算的数字,需单独存储一份,用于计算*/
int num = 0; /*存储第i个数的各位数字的n次方之和*/
for(int j=0; j<n; j++){
num+=pow(number % 10, n); /*计算个位数字的n次方加到num上*/
number = number / 10; /*去掉个位数字*/
}
if(num == i) printf("%d \n", i); /*判断是否为水仙数*/
}
return 0;
}