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

admin2021-09-09  52

问题     请编写函数findValue(int*result。int*amount),其功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组result中,并通过aaount返回这些数的个数。
  注意:部分源程序已给出。
  请勿改动主函数main()和写函数writeData()的内容。
  试题程序:
  #include
  #include
  void writeData();
  void findValue(int*result,int*amount)
  {
  }
  void main()
  {
    int resuh[1000],amount,k;   
    system(“CLS”);
    findValue(result,&amount);
    printf(“amount=%d”,amount);
    for(k=0;k    if((k+1)%10 ==0)
    {
    printf(“%5d”,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<=l000;i++)//在1~1000中循环 if((i%7==0&&i&11 !=0)||(iX 11== 0&&i%7 !=0)) //如果满足条件 { result[*amount]=i; //将数据放人数组result中的第*amount位 (*amount)++;//计数器加1 } }

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

最新回复(0)