问题 问答题

编程题(24分)【程序功能】 寻找所有水仙花数(水仙花数是指一个三位数中各位数字的立方之和等于该三位数自身。例如,153=1 +5 +3 ,因此153是水仙花数),并生成每个水仙花数的反序数 【编程要求】 1.编写函数int sxh(int a[ ],int b[ ]),函数的功能是:将所有水仙花数保存到a指向的数组,将所有水仙花数的反序数保存到b指向的数组,函数返回水仙花数的个数 2.编写main函数,函数的功能:声明数组a和b,用a、b作实参调用sxh函数,将a、b数组中全部数据输出到屏幕myf2.out中,最后将考生本人的准考证号字符串输出到文件myf2.out中 【测试数据与运行结果】 屏幕输出: Three daffodil number: 153 370 371 407 Three inverse number:351 73 173 704【要求】1.源程序文件名为myf2.c,输出结果文件名为myf2.out。2.数据文件的打开、使用、关闭均用C语言标准库中的文件操作函数实现。3.源程序文件和运行结果文件均需保存在T盘中供阅卷使用。4.不要复制扩展名为obj和exe的文件到T盘中。

答案

参考答案:

#include #include int sxh(int a[],int b[]){ int nA,nB,nC,count=0,i;  for(i=A00;i<=III;i++)  {       nA=i/A00;    nB=i/A0%A0;       nC=i%A0;       if((nA*nA*nA+nB*nB*nB+nC*nC*nC)==i)       {     a[count]=i;           b[count++]=nC*A00+nB*A0+nA;       }  }       return count;} int main(){  int a[A00],b[A00],i,count=0;   FILE *fp;   fp=fopen("myfB.out","w");   count=sxh(a,b);   printf("Three daffodil number:");   fprintf(fp,"Three daffodil number:");   for(i=0;i