C++问题,请大鸟们快来指点!
打印出所有的"水仙花数".所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身,例如:153=1的立方+5的立方+3的立方.下面有两段代码代码I正确代码二错误麻烦帮我...
打印出所有的"水仙花数".所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身,例如:153=1的立方+5的立方+3的立方.
下面有两段代码 代码I正确 代码二错误 麻烦帮我看一下哪里错了 并帮我改正过来 且加以说明 另外代码I为什么不能用cout打印a。谢谢了!
//代码I:
#include <iostream>
#include<math.h>
int main()
{
int a=100,b,c,d;
printf("水仙花数有:");
while(a<=999)
{
b=a/100;
c=(a-100*b)/10;
d=a-100*b-10*c;
if(a==pow(b,3)+pow(c,3)+pow(d,3))
printf("%d ",a);
a++;
}
system("pause");
}
//代码II:
#include <iostream>
#include <math.h>
using namespace std;
bool shuixian(int n);
int main()
{
for(int i=100;i<1000;i++)
{
shuixian(i);
cout<<i<<"\t";
}
system("pause");
}
bool shuixian(int n=100)
{
int s1,s2,s3;
while(n<1000)
{
s1=(n%100)%10;
s2=(n%100)/10;
s3=n/100;
n++;
}
if(n==pow(s1,3.0)+pow(s2,3.0)+pow(s3,3.0))
{
return true;
}
}
第二段代码 就打印了 1000个数字 展开
下面有两段代码 代码I正确 代码二错误 麻烦帮我看一下哪里错了 并帮我改正过来 且加以说明 另外代码I为什么不能用cout打印a。谢谢了!
//代码I:
#include <iostream>
#include<math.h>
int main()
{
int a=100,b,c,d;
printf("水仙花数有:");
while(a<=999)
{
b=a/100;
c=(a-100*b)/10;
d=a-100*b-10*c;
if(a==pow(b,3)+pow(c,3)+pow(d,3))
printf("%d ",a);
a++;
}
system("pause");
}
//代码II:
#include <iostream>
#include <math.h>
using namespace std;
bool shuixian(int n);
int main()
{
for(int i=100;i<1000;i++)
{
shuixian(i);
cout<<i<<"\t";
}
system("pause");
}
bool shuixian(int n=100)
{
int s1,s2,s3;
while(n<1000)
{
s1=(n%100)%10;
s2=(n%100)/10;
s3=n/100;
n++;
}
if(n==pow(s1,3.0)+pow(s2,3.0)+pow(s3,3.0))
{
return true;
}
}
第二段代码 就打印了 1000个数字 展开
2个回答
展开全部
第一段代码,改为这样就行了:
头文件要.h 没的话。cout函数就编译出错
#include <iostream.h>
#include<math.h>
int main()
{
int a=100,b,c,d;
cout<<"水仙花数有:";
while(a<=999)
{
b=a/100;
c=(a-100*b)/10;
d=a-100*b-10*c;
if(a==pow(b,3)+pow(c,3)+pow(d,3))
cout<<a<<endl;
a++;
}
return 0;
}
第二段代码,改为:
#include <iostream>
#include <math.h>
using namespace std;
bool shuixian(int n);
int main()
{
for(int i=100;i<1000;i++)
{
if (shuixian(i))
{
cout<<i<<"\t";
}
}
return 0;
}
bool shuixian(int n)
{
int s1,s2,s3;
s1=(n%100)%10;
s2=(n%100)/10;
s3=n/100;
if(n==pow(s1,3.0)+pow(s2,3.0)+pow(s3,3.0))
return true;
else
return false;
}
这一段代码中,main函数已经在实现100到1000的循环了,shuixian这个函数就没不用再实现了。
既然你把shuixian定义为bool型,就是想返回为1时,打印,返回0,不打印。
那主函数,就得有一个if (shuixian(i); ),然后打不打印。你只有一个shuixian(i); 你想表示什么????
shuixian这函数里,必须不管什么值都得有返回值,只有符合时返回true没有不
符合时返回flase,编译时会有一个警告。
头文件要.h 没的话。cout函数就编译出错
#include <iostream.h>
#include<math.h>
int main()
{
int a=100,b,c,d;
cout<<"水仙花数有:";
while(a<=999)
{
b=a/100;
c=(a-100*b)/10;
d=a-100*b-10*c;
if(a==pow(b,3)+pow(c,3)+pow(d,3))
cout<<a<<endl;
a++;
}
return 0;
}
第二段代码,改为:
#include <iostream>
#include <math.h>
using namespace std;
bool shuixian(int n);
int main()
{
for(int i=100;i<1000;i++)
{
if (shuixian(i))
{
cout<<i<<"\t";
}
}
return 0;
}
bool shuixian(int n)
{
int s1,s2,s3;
s1=(n%100)%10;
s2=(n%100)/10;
s3=n/100;
if(n==pow(s1,3.0)+pow(s2,3.0)+pow(s3,3.0))
return true;
else
return false;
}
这一段代码中,main函数已经在实现100到1000的循环了,shuixian这个函数就没不用再实现了。
既然你把shuixian定义为bool型,就是想返回为1时,打印,返回0,不打印。
那主函数,就得有一个if (shuixian(i); ),然后打不打印。你只有一个shuixian(i); 你想表示什么????
shuixian这函数里,必须不管什么值都得有返回值,只有符合时返回true没有不
符合时返回flase,编译时会有一个警告。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询