请编制程序,要求:将文件IN92.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max,cnt,pj输出到out92.dar中。部分程序、读函数read_dat(int xx[200])及输出格式已给出。试题程序:include<conio.h>include<stdio.h>define N 200void read_dat(int xx[N]){int i,j;FILE *fp;fp=f

题目

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

部分程序、读函数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 ikcntxx[N]max; float pj; FILE *fw; long j=0; clrscr(); fw=fopen("out92.dar""w"); read_dar(xx); max=xx[0]; for(i=1k=0;iN;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=0cnt=0;iN;i++) if(xx[i]==max) cnt++; /*求出数组xx中最大数max的个数*/ pj=(float)(j*100/k)/100; /*求出数组xx中值能被3整除或被7整除的数的平均值*/ printf("\n\nmax=%dcnt=%dpj=%6.2f\n"maxcntpj); fprintf(fw"%d\n%d\n%6.2f\n"maxcntpj); fclose(fw); }
void main ( ) { int i,k,cnt,xx[N],max; float pj; FILE *fw; long j=0; clrscr(); fw=fopen("out92.dar","w"); read_dar(xx); max=xx[0]; for(i=1,k=0;iN;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;iN;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的结果转换为浮点类型,这样就可以实现保留两位小数。
更多“请编制程序,要求:将文件IN92.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个 ”相关问题
  • 第1题:

    请编制函数ReadDat实现从文件in.dat中读取1 000个十进制整数到数组XX中,请编制函数Compute分别计算出XX中数值为奇数的个数odd,XX中所有奇数的平均值ave1,并求出xx中数值为偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat把结果输出到0ut.dat文件中。 注意:方差变量必须采用双精度类型。计算方差的公式如下:设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。 原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2 000)注意:部分源程序存放在test.C文件中。 请勿改动主函数main和输出数据函数writeDAT的内容。


    正确答案:
    【审题关键句】读取1000个数,奇数个数、平均值及方差,偶数个数及平均值。
    【解题思路】
    本题类似第48套试题,通过审题可以发现本题仅一个不同点,即本题中要求计算的是奇数的方差,参考答案的第15~20条语句。另外,本题给出的原程序中已经定义了odd,因此在答案程序中不需要再次定义该变量。
    【参考答案】


  • 第2题:

    已知在文件in.dat中存有N个实数(N<200),函数ReadDat是读取这N个实数并存入数组xx中。请编制函数CalValue,其功能要求:1.求出这N个实数的平均值aver;2.分别求出这N个实数的整数部分值之和sumint以及小数部分值之和sumdec,最后调用函数WriteDat把所求的结果输出到文件out.dat中。 注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。


    正确答案:
    【审题关键句】求实数的平均值aver;求实数的整数部分之和及小数部分之和。
    【解题思路】
    ①定义整型循环变量i和长整型变量num。
    ②在for循环语句中,循环变量i从0开始,依次递增直到其值等于或大于N时,结束循环。在循环体中,把数组元素 xx[i]的数据类型通过强制数据类型转换成长整型数据所得的整数赋给变量mum,再把mum的值累加到变量sumint,用数组元素xx[i]的值减去num的值就得到xx[i]的小数部分,把这个值累加到变量sumdec。把数组元素xx[i]累加到变量aver。 ⑨退出循环后,用变量aver的值除N就得到了这N个实数的平均值,赋给变量aver。
    【参考答案】

  • 第3题:

    下列给定程序中,函数fun()的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。

    请修改程序中的错误,得出正确的结果。

    注意:不要改动main()函数,不能增行或删行,也不能更改程序的结构。

    试题程序:


    正确答案:

    (1)错误:m=j;
    正确:voidfun(int*b,intn)
    (2)错误:voidfun()
    正确:m=i;
    【解析】本题中函数的功能是求出数组中最大数和次最大数。解题思路是首先求出数组中最大数和次最大数,然后将最大数和次最大数分别放到数组的第一位和第二位。
    第一个错误标识下“voidfun(int*b,intn);”函数的定义语法有误,根据C语言语法函数定义后面不应该加“;”,所以“voidfun(int*b,intn);”应该改为“voidfun(int*b,intn)”。
    第二个标识符下for循环逐个对m个数据进行选择判断,原题中“m=0;”语句将m值设置为0,在循环中m的值始终是0,不会改变,根据“for(i=0;i<2;i++)”语句中的循环条件,“m=0;”改为“m=i;”。

  • 第4题:

    将文件in.dat中的200个整数读至数组XX中。请编制jsValue函数,要求:求出数组XX中的最大数max及最大数的个数cnt和数组XX中的元素值能被3整除或能被7整除的所有数的算术平均值pj。 结果max,cnt,pj输出到out.dat中。 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main、读函数read dat和输出函数writeDat的内容。第4类数位分解后按数筛选统计并排序


    正确答案:
    【审题关键句】最大数及其个数,同时被3或7整除的整数的算术平均值。
    【解题思路】
    ①定义循环整型变量i和用于保存数组)xx中的能被3整除或能被7整除的元素的个数变量cnt1,并把其值设置为0。把全局变量max、cnt的初值设置为0;把变量pj的初值设置为0.0。
    ②采用for循环语句,循环变量i从0开始,依次递增到N-1,对数组xx中的每一个数组元素xx[i]用if条件语句判断其值是否能被3整除或能被7整除,如果xx[i]满足上述条件,则把其值累加到变量pj,同时变量cnt1的值加1。再判断数组元素xx[i]与max的大小,如果xx[i]大于max,则xx[i]的值赋给max,同时把变量cnt的值赋为1,如果xx[i]等于max,则变量cnt的值加1。
    ③退出循环后,用变量pj的值除以cnt1的值就得到满足条件的数的算术平均值。
    在for循环语句对200个整数逐个进行扫描,判断其能被3整除或能被7整除的数,并把这些数累加到变量pj,并统计这些数的个数,用这些数的和除以它们的个数,就得到这些数的平均值。对于求出数组XX中的最大数max及最大数的个数 cnt的问题,把数组xx中的第一个数赋给变量max,对于能被3整除或能被7整除的数与max的值比较大小,如果此数比 max的值大,则把这个数赋值给max,如果此数等于max的值,则最大数的个数cnt加1。
    【参考答案】

    第4类数位分解后按数筛选统计并排序

  • 第5题:

    将文件in.dat中的200个整数读至数组XX中。请编制js Vralue函数,要求:求出数组XX中的数值为奇数的个数cnt1和数值为偶数的个数cnt2以及数组xx下标为偶数(包括下标为0的元素)的元素值的算术平均值pj。 结果cnt1,cnt2,pJ输出到out.dat中。注意:部分源程序存在test.c文件中。请勿改动数据文件in.dat中的任何数据、主函数main、读函数readdat和输出函数writeDatj的内容。


    正确答案:
    【审题关键句】读入数值,奇数个数,偶数个数,数组下标为偶数的平均值。
    【解题思路】
    ①首先定义循环变量i,并对全局变量cnt1、cnt2和pj赋初值0。
    ②在for循环语句中,将数组xx中的每个数组元素xx[i]对2求余数,如果余数非零,则说明xx[i]是奇数,奇数的个数变量cntl加1,否则,偶数的计数变量cnt2加1;接着将数组XX下标i对2求余,如果余数等于0,则把xx[i]的值累加到变量pj。
    ③退出循环时,变量pJ的值除以100.0就得到数组xx下标i为偶数的元素值的算术平均值pj(因为数组中共有200令数组,下标为奇偶数的元素各占一半,因此直接将累加变量pJ的值直接除100即可得到这些数的平均值)。
    【参考答案】