当前所在位置:珠峰网资讯 >> 计算机 >> IT教育 >> 正文
全国计算机三级考试C语言上机题(
发布时间:2007/12/17 11:42:20 来源:xue.net 编辑:城市学习网
☆题目81
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsvalue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:7153,7+1=5+3,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+1<>2+9,则该数不满足条件计算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2。
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;

jsvalue()
{int i,thou,hun,ten,data,n=0;
for(i=0;i<300;i++)
{thou=a/1000; hun=a00/100;
ten=a0/10; data=a;
if(thou+hun==ten+data) {cnt++;pjz1+=a;}
else {n++;pjz2+=a;}
}
if(cnt==0) pjz1=0;
else pjz1/=cnt;
if(n==0) pjz2=0;
else pjz2/=n;
}

main()
{
int i;

readDat();
jsvalue();
writeDat();
printf("cnt=%d\n满足条件的平均值pzj1=%7.2f\n不满足条件的平均值pzj2=%7.2f\n",cnt,pjz1,pjz2);
}

readDat()
{
FILE *fp;
int i;
fp=fopen("in.dat","r");
for(i=0;i<300;i++)fscanf(fp,"%d,",&a);
fclose(fp);
}

writeDat()
{
FILE *fp;
int i;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n%7.2f\n%7.2f\n",cnt,pjz1,pjz2);
fclose(fp);
}

************************************************************************
★题目82
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsvalue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果cnt,pjz1,pjz2输
出到out.dat文件。
例如:5591是素数,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
9812是非素数,则该数不满足条件计算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;

int isP(int m)
{int i;

for(i=2;iif(m%i==0)return 0;
return 1;
}

jsvalue()
{int i;
for(i=0;i<300;i++)
if(isP(a)) {pjz1+=a;cnt++;}
else pjz2+=a;
if(cnt==0) pjz1=0;
else pjz1/=cnt;
if(300-cnt==0) pjz2=0;
else pjz2/=(300-cnt);
}

main()
{
int i;

readDat();
jsvalue();
writeDat();
printf("cnt=%d\n满足条件的平均值pzj1=%7.2f\n不满足条件的平均值pzj2=%7.2f\n",cnt,pjz1,pjz2);
}

readDat()
{
FILE *fp;
int i;
fp=fopen("in.dat","r");
for(i=0;i<300;i++)fscanf(fp,"%d",&a);
fclose(fp);
}

writeDat()
{
FILE *fp;
int i;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n%7.2f\n%7.2f\n",cnt,pjz1,pjz2);
fclose(fp);
}


***********************************************************************
☆题目83
请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
计算方差的公式如下:
N 2
totfc=1/N ∑ (xx-ave1)
i=1
设N为奇数的个数,xx为奇数,ave1为奇数的平均值。
原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include
#include
#include
#define MAX 1000

int xx[MAX],odd=0,even=0;
double ave1=0.0,ave2=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);
if((i+1)==0)
fscanf(fp,"\n");
}
/*******************************************/

fclose(fp);
return 0;
}

void Compute(void)
{ int i,yy[MAX];
for(i=0;iyy=0;
for(i=0;iif(xx%2) { yy[odd++]=xx; ave1+=xx;}
else { even++; ave2+=xx;}
if(odd==0) ave1=0;
else ave1/=odd;
if(even==0) ave2=0;
else ave2/=even;
for(i=0;itotfc+=(yy-ave1)*(yy-ave1)/odd;
}

void main()
{
int i;

for(i=0;iif(ReadDat()){
printf("数据文件IN.DAT不能打开!\007\n");
return;
}
Compute();
printf("ODD=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",odd,ave1,ave2,totfc);
WriteDat();
}

void WriteDat(void)
{
FILE *fp;
int i;

fp=fopen("OUT.DAT","w");
fprintf(fp,"%d\n%f\n%f\n%f\n",odd,ave1,ave2,totfc);
fclose(fp);
}
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved