C语言程序设计(第三版)何钦铭著 习题5-6
题目
使用函数输出水仙花数∶
输入两个正整数m 和n(1≤m,n≤1000),
输出 m~ n之间的所有满足各位数字的立方和等于它本身的数。
要求定义并调用函数is(number)判断 number 的各位数字之立方和是否等于它本身。试编写相应程序。
分析过程
输入
条件:输入两个正整数m 和n(1≤m,n≤1000)
输出
条件:输出 m~ n之间的所有满足各位数字的立方和等于它本身的数。要求定义并调用函数is(number)判断 number 的各位数字之立方和是否等于它本身
代码
#include <stdio.h>
#include <math.h>
int is(int number);/*函数声明*/
int main () {
/*定义变量*/
int m, n; /*定义变量,存储输入正整数m以及n*/
/*赋值*/
printf("请输入正整数m以及n:\n"); /*输入提示*/
scanf("%d %d", &m, &n); /*输入并赋给变量*/
for (int i = m; i < n; i++) {
if(is(i)==1) printf("%d为水仙数 \n",i);
}
return 0;
}
int is(int number){
int sum = 0;/*各个位数字之和*/
int temp = number;/*暂存number对10取余的数,即去掉个位数字的数*/
int weishu = 0;/*number是几位数*/
while(temp!=0){
/*判断number是几位数*/
temp = temp/10;
weishu++;
}
temp = number;
while(temp!=0){
int gewei = temp%10;/*获取number的个位数字*/
sum = sum + pow(gewei, weishu);
temp = temp/10;
}
if(number == sum) return 1;/*number为水仙数*/
else return 0;
}