c语言编程问题这个题我哪里错了输出结果总是0
答案:2 信息版本:手机版
解决时间 2020-05-03 18:57
已解决
2020-05-03 06:15
编写程序,输入两个正整数m和n(100≤m,n<1000),统计并输出m和n之间的水仙花数。要求,定义并调用函数int flower(int num)判断其是否为水仙花数。输出格式要求:当m和n之间无水仙花数,则输出为“No”;否则依次输出各水仙花数。
输入样例:100 200
输出样例:153
输入样例:300 400
输出样例:370 371
输入样例:100 150
输出样例:No
#include
#include
int flower (int num);
int main()
{
int i,flag,k,m,n,z=0;
scanf("%d%d",&m,&n);
if(m>1000||m<100||n>1000||n<100)
flag=0;
else
{
if(m<=n)
{
k=n;
n=m;
m=k;
}
else
for(i=n;i<=m;i++)
flag=flower (i);
if (flag==1)
{
printf("%d",i);
z++;
}
}
if(z==0)
printf("no\n");
return 0;
}
int flower (int i)
{
int a,b,c;
a=i/100;
b=i/10%10;
c=i%10;
if(i==pow(a,3)+pow(b,3)+pow(c,3))
return 1;
else
return 0;
}
能不能简化一下我的程序
全部回答
1楼
2020-05-03 08:12
#include
double f(int n)
{
int i;
double s;
s=1.0;
for (i=1;i<=n;i++)
s+=1.0/i;
return s;
}
void main()
{
int i,m=3;
double a=0.0;
for(i=0; i
a+=f(i);
printf("%f\n",a);
}
运行结果:
2楼
2020-05-03 06:54
#include
#include
int flower (int num);
int main()
{
int i,flag,k,m,n,z=0;
scanf("%d%d",&m,&n);
if(m>1000||m<100||n>1000||n<100)
flag=0;
else
{
for(i=m;i<=n;i++)
{
flag=flower(i);
if (flag==1)
{
printf("%d ",i);
z++;
}
}
printf("\n");
}
if(z==0)
printf("no\n");
return 0;
}
int flower (int i)
{
int a,b,c;
a=i/100;
b=i/10%10;
c=i%10;
if(i==pow(a,3)+pow(b,3)+pow(c,3))
return 1;
else
return 0;
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯