如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
#include
#include
#include
#include
int main()
{
int m,n,i,c=0;
while(scanf("%d %d",&m,&n)!=EOF){
int *a=(int *)malloc(sizeof(int)*(n-m+1));
memset(a,0,sizeof(int)*(n-m+1));
a[0]=m;
for(i=1;i1;i++){
a[i]=a[i-1]+1;
if(a[i]==pow(a[i]%100,3)+pow(a[i]/10,3)+pow(a[i]%10/10,3)){
printf("%d ",a[i]);
c++;
}
}
if(c=0)printf("no");
else printf("\n");
}
return 0;
}
供参考:
#include<stdio.h>
int main()
{
int m,n,i,c=0,t,s;
while(scanf("%d %d",&m,&n) == 2 && m >= 100 && n <= 999 && m <= n){
//int *a=(int *)malloc(sizeof(int)*(n-m+1));
//memset(a,0,sizeof(int)*(n-m+1));
//a[0]=m;
for(i = m, c = 0;i <= n;i++){
//a[i]=a[i-1]+1;
//if(a[i]==pow(a[i]%100,3)+pow(a[i]/10,3)+pow(a[i]%10/10,3)){
t = i; s = 0;
while(t){
s += (t%10)*(t%10)*(t%10);
t /= 10;
}
if(s == i){
printf(c++ == 0 ? "%d" : " %d",i);
//c++;
}
}
if(c==0) printf("no"); //if(c=0)
printf("\n");
}
return 0;
}
应该是判断是否为水仙花数那里错了,即取每个数的各位数位上的数那里要稍微修改一下,修改如下:
参考链接:
什么是水仙花数?_百度知道
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
int m,n,i,c=0;
while(scanf("%d %d",&m,&n)!=EOF){
int *a=(int *)malloc(sizeof(int)*(n-m+1));
memset(a,0,sizeof(int)*(n-m+1));
a[0]=m;
for(i=1;i<n-m+1;i++){
a[i]=a[i-1]+1;
//https://zhidao.baidu.com/question/42360988.html
//取百位 即a[i]/100 ,用这个数除以100即得到百位上的数,a[i]/10%10, 用这个除以10然后对其求余,即得到十位上的数,a[i]%10,用这个数对10求余,即得到各位上的数
if(a[i]==pow(a[i]/100,3)+pow(a[i]/10%10,3)+pow(a[i]%10,3)){
printf("%d ",a[i]);
c++;
}
}
if(c=0)printf("no");
else printf("\n");
}
return 0;
}