老k教练对科比的评价:c++初学者的问题~

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 02:09:16
编写一个求水仙花数的函数,求三位正整数的全部水仙花数中的次大值.所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身.例如153就是水仙花数:
153=1*1*1+5*5*5+3*3*3.

楼主要求做一个求水仙花数的函数,楼上的两个,我只看到你们有主函数啊.看一下我的:
#include<iostream.h>
int flower(int step=1,int toprint=0)
{
int num[1000];
for(int x=0;x<=999;x++)
{
num[x]=-1;
}
int j=0;
for(int i=0;i<=999;i++)
{
int a=(int)(i/100);
int b=(int)((i/10)-a*10);
int c=i%10;
if(((a*a*a)+(b*b*b)+(c*c*c))==i)
{
num[j]=i;
j++;
}
else continue;
}
if(toprint)
{
for(int k=0;k<=999;k++)
{
if(num[k]!=-1)
{
cout<<num[k]<<endl;
}
}
}
int n;
for(n=0;n<999;n++)
{

if(num[n]>num[n+1]) break;
}
return num[n-step+1];
}
void main()
{
cout<<"所有的水仙花数字:"<<endl;
flower(1,1);
cout<<"次大的水仙花数字是:"<<endl;
cout<<flower(2,0)<<endl;
}

#include <iostream.h>

//

void main(void)
{
int nBai = 0 , nShi = 0,nGe = 0;
#define MAX 100
int nArray[MAX];
int nCount = 0;
for(int i = 100;i<1000;i++)
{
nBai = (int)(i/100);
nShi = (int)(i - nBai * 100) /10;
nGe = (int)(i- nBai*100 - nShi*10);
if(nBai*nBai*nBai + nShi*nShi*nShi +nGe*nGe*nGe == i){
cout<<"One number : [ "<<i<<" ]\n";
nArray[nCount++] = i; // Save this number
}
}
cout<<"the second max number is : [ "<<nArray[nCount - 2]<<" ]\n";
}

#include<iostream>
using namespace std;
void main()
{
int a,b,c,d,i=0;
for(a=999;a>100;a--)
{
b=a/100;//取百位数
c=a%10;//取各位数
d=(a-b*100)/10;//取十位数
if(a==b*b*b+c*c*c+d*d*d)
{
i++;
if(i==2)
cout<<a<<endl;
}
}
}
不用数组储存水仙花数,简单吧!