打印本文 打印本文  关闭窗口 关闭窗口  
全国计算机等级考试三级C语言上机题91-100
作者:佚名  文章来源:不详  点击数  更新时间:2007/12/21 18:06:24  文章录入:杜斌  责任编辑:杜斌

 题目91
请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。
 结果cnt1,cnt2,pj输出到out.dat中。
 部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include
#include
#define n 200

void read_dat(int xx[n])
{
 int i,j;
 file *fp;

 fp=fopen('in.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,j,sum;
 int cnt1,cnt2,xx[n];
 float pj;
 file *fw;

 clrscr();
 fw=fopen('out.dat','w');
 read_dat(xx);
/**********************/
 sum=0; pj=0.0; cnt1=cnt2=0;
 for(i=0;i { if(xx[i]%2) cnt1++;
 else cnt2++;
 if(i%2==0) {pj+=xx[i];sum++;}
 }
 pj/=sum;

/***********************/

printf('/n/ncnt1=%d,cnt2=%d,pj=%6.2f/n',cnt1,cnt2,pj);
fprintf(fw,'%d/n%d/n%6.2f/n',cnt1,cnt2,pj);
fclose(fw);
}


*******************************************************************************
☆题目92
请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。
 结果max,cnt,pj输出到out.dat中。
 部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include
#include
#define n 200

void read_dat(int xx[n])
{
 int i,j;
 file *fp;

 fp=fopen('in.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 m,temp,n,sum;
 int cnt,xx[n],max ;
 float pj;
 file *fw;

 clrscr();
 fw=fopen('out.dat','w');
 read_dat(xx);
/*********************/
 cnt=0; max=xx[0]; pj=0.0; n=0;
 for(m=0;m if(max for(m=0;m {if(xx[m]==max) cnt++;
 if(xx[m]%3==0||xx[m]%7==0)
 { pj+=xx[m]; n++; }
 }
 pj/=n;

/*********************/

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);
}

*****************************************************************************
☆题目93
请编制函数readdat()实现从文件in.dat中读取1000个十进制整数到数组xx中;请编制函数compute(),分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数writedat()把结果输出到out.dat文件中。
 计算方差的公式如下:
 n 2
 totfc=1/n ∑ (xx[i]-aver)
 i=1
 原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()和输出数据函数writedat()的内容。
#include
#include
#include
#define max 1000

int xx[max],odd=0,even=0;
double aver=0.0,totfc=0.0;
void writedat(void);

int readdat(void)
{
 int i;
 file *fp;

 if((fp=fopen('in.dat','r'))==null) return 1;
/***************编制函数readdat()*****************/
 for(i=0;i { fscanf(fp,'%d,',&xx[i]);
 if((i+1)%10==0)
 fscanf(fp,'/n');
 }
/*********************************************/
 fclose(fp);
 return 0;
}

void compute(void)
{ int i;
 for(i=0;i { if(xx[i]%2) odd++;
 else even++;
 aver+=xx[i];
 }
 aver/=max;
 for(i=0;i totfc+=(xx[i]-aver)*(xx[i]-aver);
 totfc/=max;
}
打印本文 打印本文  关闭窗口 关闭窗口