#include <stdio.h>
//定义一个结构体
struct NodeData
{
int nmb;
int bsxh; //是否是水仙花数
};
//判断是否是水仙花
int isShuixianhua(int n)
{
int d,nmb=n;
int sum = 0;
while(n)
{
d = n%10;
sum += (d*d*d);
n /= 10;
}
if(nmb == sum)
return 1;
else
return 0;
}
int main()
{
struct NodeData a[1000];
struct NodeData* p;
int i;
FILE* fp;
for (i=100;i<=1000;i++)
{
a[i-100].nmb = i;
a[i-100].bsxh = isShuixianhua(i);
}
p = a;
i = 100;
fp = fopen("out.txt","w");
while(i<=1000)
{
if(p->bsxh)
fprintf(fp,"%d\n",p->nmb);
p++;
i++;
}
fclose(fp);
return 0;
}
修改如下,供参考:
#include <stdio.h>
//定义一个结构体
struct NodeData
{
int nmb;
int bsxh; //是否是水仙花数
};
//判断是否是水仙花
int isShuixianhua(int n)
{
int d,nmb=n;
int sum = 0;
while(n)
{
d = n%10;
sum += (d*d*d);
n /= 10;
}
if(nmb == sum)
return 1;
else
return 0;
}
int main()
{
struct NodeData a[900];
struct NodeData* p;
int i,k;
FILE* fp;
for (i=100,k=0;i<1000;k++,i++)//for (i=100;i<=1000;i++)
{
a[k].nmb = i;
a[k].bsxh = isShuixianhua(i);
}
p = a;
i = 0;
fp = fopen("out.txt","w");
while(i < k)
{
if(p->bsxh)
fprintf(fp,"%d\n",p->nmb);//是水仙花数,就写入文件中。
p++;
i++;
}
fclose(fp);
return 0;
}