请编写函数fun,其功能是:统计出x所指数组中能被e整除的元素个数,通过函数值返回主函数;同时,计算不能被e整除的元素之和,放到形参sum所指的存储单元中。  例如,当数组x内容为1,7,8,6,10,15,11,13,29,3l,整数e内容为3时,输出结

admin2022-04-02  50

问题 请编写函数fun,其功能是:统计出x所指数组中能被e整除的元素个数,通过函数值返回主函数;同时,计算不能被e整除的元素之和,放到形参sum所指的存储单元中。
 例如,当数组x内容为1,7,8,6,10,15,11,13,29,3l,整数e内容为3时,输出结果应该是:n=2,sum=110
 注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
 #include<stdio.h>
 #pragma warning(disable:4996)
 #define N 10
 int fun(int x[],int e,int *sum)
 {
 }
 main()
 {
    void NONO();
    int x[N]={1,7,8,6,10,15,11,13,29,31},e=3,n,sum;
    n=fun(x,e,&sum);
    printf("n=%d,sum=%d\n",n,sum);
    NONO();
 }
 void NONO()
 {
 /*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
 int i,j,x[10],n,e,sum;
 FILE *rf,*wf;
 rf=fopen("in.dat","r");
 wf=fopen("out.dat","w");
 for(i=0;i<5;i++){
   for(j=0;j<10;j++)
 fscanf(rf,"%d",&x[j]);
 fscanf(rf,"%d",&e);
   n=fun(x,e,&sum);
   fprintf(wf,"%d,%d\n",n,sum);
 }
 fclose(rf);
 fclose(wf);
 }

选项

答案int fun(int x[],int e,int *sum)  {   int i,count=0;   *sum=0;   for(i=0;i<N;i++)   {   if(x[i]%e==0)   {   count++;   }   else   {   *sum+=x[i];   }   }   return count;  }

解析 程序首先定义循环变量i,整型变量count,count赋初值为0,count用来统计可以被e整除的元素个数;由于sum是main函数传入的指针变量,用来存放不能被e整除的元素之和,所以程序需要对sum所指变量赋初值为0;接着通过for循环变量数组x,将x对e求余,若余数为0,则当前x可以被e整除,将count自增1,若余数不为0,则x不能被e整除,将x累加到sum所指变量中,最后将count作为函数返回值返回。
转载请注明原文地址:https://jikaoti.com/ti/9Od0FFFM
0

最新回复(0)