输入两个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙花数。
输入两个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。例如,153的各位数字...
输入两个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。例如,153的各位数字的立方和是13+53+33 =153。
#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
sum=0;
for(i=m;i<=n;i++){
a=i;
do{
sum=sum+pow(a-10*(a/10),3);
a=a/10;
}while(a!=0);
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
我不知道错哪了,虽然我后来换了一种方法对了,可是还是奇怪这一种为什么没有输出……求解 展开
#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
sum=0;
for(i=m;i<=n;i++){
a=i;
do{
sum=sum+pow(a-10*(a/10),3);
a=a/10;
}while(a!=0);
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
我不知道错哪了,虽然我后来换了一种方法对了,可是还是奇怪这一种为什么没有输出……求解 展开
4个回答
展开全部
#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
//int sum ;
for(i=m;i<=n;i++){
a=i;
sum=0;//下一个数,sum要重新回零咯 ,找的我晕啊~
/*假设是153-153(没错)
do{
sum=sum+pow(a-10*(a/10),3);//获取个位上的数字
a=a/10;
}while(a!=0);
第一次:sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 153-10*15 sum = 0+pow(3,3)
第二次:a = 15 sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 15-10*1 sum = 9+pow(5,3)
第三次:a = 1 sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 1-10*0 sum = 9+125+pow(1,1)
*/
do{
sum=sum+pow(a-10*(a/10),3);//获取个位上的数字
a=a/10;
}while(a!=0);
//printf("sum = %d\n",sum);//加个输出语句监听 发现 了错误!!
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
//同学,求采纳 ,呵呵 我可是认真 分析了很久
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
//int sum ;
for(i=m;i<=n;i++){
a=i;
sum=0;//下一个数,sum要重新回零咯 ,找的我晕啊~
/*假设是153-153(没错)
do{
sum=sum+pow(a-10*(a/10),3);//获取个位上的数字
a=a/10;
}while(a!=0);
第一次:sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 153-10*15 sum = 0+pow(3,3)
第二次:a = 15 sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 15-10*1 sum = 9+pow(5,3)
第三次:a = 1 sum=sum+pow(a-10*(a/10),3);//获取个位上的数字 1-10*0 sum = 9+125+pow(1,1)
*/
do{
sum=sum+pow(a-10*(a/10),3);//获取个位上的数字
a=a/10;
}while(a!=0);
//printf("sum = %d\n",sum);//加个输出语句监听 发现 了错误!!
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
//同学,求采纳 ,呵呵 我可是认真 分析了很久
展开全部
#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
for(i=m;i<=n;i++){
sum=0;
a=i;
do{
sum=sum+pow(a-10*(a/10),3);
a=a/10;
}while(a!=0);
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
#include<math.h>
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
for(i=m;i<=n;i++){
sum=0;
a=i;
do{
sum=sum+pow(a-10*(a/10),3);
a=a/10;
}while(a!=0);
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入自己写。
for(int i=m; i<=n; i++){
int a,b,c;
a=i/100;
b=i/10%10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i){
//一个结果
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sum在循环中没有确保每次的循环时初值都为0,当m和n都是153是可以的,有个范围就会有影响了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询