水仙花数
问题描述
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)。
定义一个函数int function(int a, int b),计算区间[a,b]或区间[b,a]上水仙花数的个数。
输入说明
输入由两个整数a和b构成,a和b之间用空格分隔。0<a,b<10000
输出说明
输出区间[a,b]或区间[b,a]上水仙花数的个数。
输入样例
3 1000
输出样例
4
#include<stdio.h>
int function(int a,int b)
{
int i,j,k,t,sum,c;
int d[5]={0};
if(a>b)
{
c=a;
a=b;
b=c;
}
c=0;
for(;a<=b;a++)
{
t=a;
sum=0;
for(j=0;t/10!=0;j++)
{
d[j]=t%10;
t=t/10;
}
while(t>0)
{
d[j]=t%10;
t/=10;
}
for(k=0;k<=j;k++)
{
if(j==1){sum+=d[k]*d[k];}
if(j==2){sum+=d[k]*d[k]*d[k];}
if(j==3){sum+=d[k]*d[k]*d[k]*d[k];}
}
if(sum==a){c++;}
}
return c;
}
int main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c=function(a,b);
printf("%d",c);
return 0;
}
输入3 1000
输出 2
请问问题出在哪里?
代码没什么问题,第44行,输入语句 scanf("%d,%d",&a,&b); ,这里的输入格式是:3 ,1000 ,两数之间有一个英文半角逗号间隔。
建议修改为:scanf("%d%d",&a,&b); ,改为空格间隔,与题目的输入相符:3 1000 。