第四次上机
目录
前言
自己写的上机作业,可以用于参考
目前处于初步学习中,写的不好见谅
一、题目
二、解题
1.思路
定义一个函数
对[a,b]上各个数都进行如下操作
首先确定数的位数
再将数各个位数分出
依水仙花数定义判断该数是否满足条件
若满足则使个数+1
返回区间上水仙花数个数的值
注意水仙花数至少为3位数,所以区间中不足三位数的数都不是水仙花数
2.代码
代码如下(示例):
#include<stdio.h>
#include<math.h>
int main()
{
int function(int a, int b);//函数声明
int a,b,result;
scanf("%d %d",&a,&b);
result=function(a,b);
printf("%d",result);
return 0;
}
int function(int a, int b)
{
int i,n=0;
double c,d,e,f;
a>0&&a<b&&b<10000;//题给限制,区间中的水仙花数都为3位数或4位数
if(b<=99)printf("0");//区间内没水仙花数
else
{
if(a<=99)a=100;
for(i=a;i<=b;i++)
{
if(i/1000==0)
{
c=i%10;d=(i/10)%10;e=(i/100)%10;
if(pow(c,3)+pow(d,3)+pow(e,3)==i)
n=n+1;
}//判断区间中三位数的水仙花数
else
{
c=i%10;d=(i/10)%10;e=(i/100)%10;f=(i/1000)%10;
if(pow(c,4)+pow(d,4)+pow(e,4)+pow(f,4)==i)
n=n+1;
}//判断区间中四位数的水仙花数
}
}
return n;//返回水仙花数个数
}