C言語プログラミング(第3版)彼はQinmingの演習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;
}