糖大夫官网:求三位数的水仙花数,我编的程序,帮忙精简一下!

来源:百度文库 编辑:高校问答 时间:2024/05/04 23:44:10
#include <iostream>
using namespace std;

int main()
{
int print_message();
cout<<"三位数的水仙花数共有:\n";
cout<<print_message();
cout<<"\n个\n";
cout<<"它们是:\n";
int *sxhs=new int[print_message()];

int i,sum=0;
for(i=100;i<=999;i++)
{
int num1=(int)(i/100);
int num2=(int)((i-num1*100)/10);
int num3=i-num1*100-num2*10;
if((num1*num1*num1+num2*num2*num2+num3*num3*num3)==i)
{
sxhs[sum]=i;
sum++;
}
}

for(i=0;i<print_message();i++)
{
cout<<sxhs[i];
cout<<"\n";
}

return 0;
}

int print_message()
{
int i,sum=0;
for(i=100;i<=999;i++)
{
int num1=(int)(i/100);
int num2=(int)((i-num1*100)/10);
int num3=i-num1*100-num2*10;
if((num1*num1*num1+num2*num2*num2+num3*num3*num3)==i)
{
sum++;
}
}
return sum;
}
想到一点更简单的:
#include <iostream>
using namespace std;

int main()
{
cout<<"三位水仙花数为:\n";
int a,b,c;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)
{
cout<<a*100+b*10+c;
cout<<"\n";
}
}
}
}

return 0;
}

#include <iostream>
#include <vector>

using namespace std;

int main()
{
vector<int> vecnumber;
cout<<"三位数的水仙花数共有:\n";

int i,num1,num2,num3,sum=0;
for(i=100;i<=999;i++)
{
num1 = i / 100;
num2 = (i-num1*100)/10;
num3 = i-num1*100-num2*10;
if((num1*num1*num1+num2*num2*num2+num3*num3*num3)==i)
{
vecnumber.push_back(i);
}
}

cout<<vecnumber.size()<<"\n个\n它们是:\n";
vector<int>::iterator it = vecnumber.begin();
while (it != vecnumber.end())
{
cout<<*it<<" ";
it++;
}
return 0;
}

#include<stdio.h>
main()
{int a,b,c,sum=0;
for(a=1;a<=9;a++)
for(b=1;b<=9;b++)
for(c=1;c<=9;c++)
if((a*a*a+b*b*b+c*c*c)==(a*100+b*10+c))
{sum=sum+1;
printf("\n%d%d%d",a,b,c);
}
printf("\nsum=%d",sum);
}

#include <stdio.h>
void main()
{
int x,b,a,c;
for (x=100;x<=999;x++)
{a=x%100;
b=(x-100*a)%10;
c=(x-100*a-10*b);
if x=a*a*a+b*b*b+c*c*c;
printf("%d ",x);
}
}