请编制程序,要求:将文件IN92.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max,cnt,pj输出到out92.dat中。 部分

admin2010-01-09  39

问题 请编制程序,要求:将文件IN92.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max,cnt,pj输出到out92.dat中。
   部分程序、读函数read_dat(int xx[200])及输出格式已给出。
   试题程序:
   #include<conio.h>
   #include<stdio.h>
   #define N 200
   
   void read_dat(int xx[N])
   {
       int i,j;
       FILE *fp;
       fp=fopen("IN92.DAT","r");
       for(i=0;i<20;i++)
       {
           for(j=0;j<10;j++>
           {
               fscanf(fp,"%d,",&xx[i*10+j]);
                   printf ("%d", xx [i*10+j]);
           }
           printf ("\n");
       }
       fclose (fp);
  }
  void main()
  {
       int i, k, cnt, xx [N],max;
       float pj;
       FILE *fw;
       long j=0;
       clrscr ();
       fw=fopen ("out92.dat", "w");
       read_dat (xx);
     

       printf ("\n\nmax=%d, cnt=%d, pj=%6.2f\n", max, cnt,pj);
       fprintf(fw, "%d\n%d\n%6.2f\n",max, cnt,pj);
       fclose (fw);
  }

选项

答案void main() { int i,k,cnt,xx[N],max; float pj; FILE *fw; long j=0; clrscr(); fw=fopen("out92.dat","N"); read_dat(xx); max=xx[0]; for(i=1,k=0;i<N;i++) { if(xx[i]>max) max=xx[i]; /*求出数组xx中最大数max*/ if(xx[i]%3= =0 ||xx[i]%7= =0) { j+=xx[i]; /*求出数组xx中值能被3整除或能被7整除的数的总和*/ k++; } } for(i=0,cnt=0;i<N;i++) if(xx[i]= =max) cnt++; /*求出数组xx中最大数max的个数*/ Pj=(float)(j*100/k)/100;/*求出数组xx中值能被3整除或能被7整除的数的平均值*/ printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj); fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj); fclose(fw); } [解析] 本题考查的知识点如下: (1)运算符“%”的使用。 (2)判断结构中多个条件的布尔运算。 首先,要找出数组中最大的元素。先定义第1个元素为最大的元素,然后依次和后面的元素比较,若后面的数中有大于第1个元素的,则将这个数定义为最大的元素。再和后面的数进行比较。一个数a除以b取余所得的数为0,则a能被b整除。根据题意可知,被3整除和被7整除两个条件满足一个即可,所以两个条件之间用“或”运算。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以100除以个数强制类型转换后再除以100。为了保证和有效,我们定义了一个长整型变量来记录和。因为个数也为整型,运算符“/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以100的结果转换为浮点类型,这样就可以实现保留两位小数。

解析
转载请注明原文地址:https://jikaoti.com/ti/HMp7FFFM
0

相关试题推荐
最新回复(0)