请编写函数findValue(int*result,int*amount),其功能是;求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组result中,并通过amount返回这些数的个数。 注意;部分源程序已给出。 请勿改动

admin2011-06-14  36

问题 请编写函数findValue(int*result,int*amount),其功能是;求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组result中,并通过amount返回这些数的个数。
注意;部分源程序已给出。
请勿改动主函数main()和写函数writeData()的内容。
试题程序;
#include
#include
void writeData();
void findValue(int*result,int*amount)
{
}
void main()
{
  int result[1000],amount,k;
  system("CLS");
  findValue(result,&amount);
  printf("amount=% d",amount);
  for(k=0;k  if((k+1)% 10=0)
  {
    printf("%5 d",result[k]);
    printf("\n");
    }
    else printf("%5d",result[k]);
    writeData();
}
void writeData()
{
  int result[1000],amount,k;
  FILE*fp;
  fp=fopen("OUT.DAT","w");
  findValue(result,&amount);
  for(k=0;k  if((k+1)%10==0)
  {
    fprintf(fp,"%5d",result[k]);
    fprintf(fp,"\n");
    }
    else fprintf(fp,"%5d",result[k]);
    fclose(fp);
  }

选项

答案   void findValue(int*result。int*amount) { int i; *amount=0;//将计数器清零 for(i=1;i<=1000;i++) //在1~1000中循环 if((i%7==0&&i%11!=0)||(i%11==0&&i%7!=0)) //如果满足条件 { result[*amount]=i;//将数据放人数组result中的第*amount位 (*amount)++; //计数器加1 } }

解析 若一个数m能被n整除,则有m%n==0。另外本题也考查了通过指针传递数据的方法。主函数将所要求子函数返回的变量的指针*result,*amount传给子函数,子函数通过对指针的操作直接将数据传到变量当中,这也为子函数返回多值提供了一种方法。
转载请注明原文地址:https://jikaoti.com/ti/ZVU7FFFM
0

最新回复(0)