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

admin2010-01-11  57

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

选项

答案void countValue(int *a,int *n) { int i; *n=0; for[i=1;i<=1000;i++) if(i%7==0 && i%11) /*将能被7整除但不能被11整除的数存入数组a中*/ { *a=i; *n=*n+1; /*统计个数*/ a++; } else if(i%7 && i%11==0) /*将能被11整除但不能被7整除的数存入数组a中*/ { *a=i; *n=*n+1; /*统计个数*/ a++; } }

解析 本题考查的知识点如下:
   (1) 指针的使用。
   (2) “%”运算符。
   (3) 判断结构中多个条件的布尔运算。
   本题中,函数countValue()以指针为参数,这里就要涉及到指针的使用。a是指向数组的指针,初始时,指向数组的第一个元素.地址每加1时,依次指向后面的元素。一个数a若能枷整除,则a除以b取余得数为0.能被7或11整除,但不能被7和 11同时整除,则有两种情况,能被7整除但不能被11整除,能被11整除但不能被7整除。这里就要用到多个条件的布尔运算。
转载请注明原文地址:https://jikaoti.com/ti/2rc7FFFM
0

最新回复(0)