☆題目81
已知數(shù)據(jù)文件in.dat中存有300個四位數(shù),并已調用讀函數(shù)ReadDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)jsvalue(),其功能是:求出千位數(shù)上的數(shù)加百位數(shù)等于十位數(shù)上的數(shù)加個位數(shù)上的數(shù)的個數(shù)cnt,再求出所有滿足此條件的四位數(shù)平均值pjz1,以及不滿足此條件的四位數(shù)平均值pjz2,最后調用寫函數(shù)writeDat()把結果輸出到out.dat文件。
例如:7153,7+1=5+3,則該數(shù)滿足條件計算平均值pjz1,且個數(shù)cnt=cnt+1。8129,8+1<>2+9,則該數(shù)不滿足條件計算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定義數(shù)組:a[300],已定義變量:cnt,pjz1,pjz2。
請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)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
已知數(shù)據(jù)文件in.dat中存有300個四位數(shù),并已調用讀函數(shù)ReadDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)jsvalue(),其功能是:求出所有這些四位數(shù)是素數(shù)的個數(shù)cnt,再求出所有滿足此條件的四位數(shù)平均值pjz1,以及不滿足此條件的四位數(shù)平均值pjz2,最后調用寫函數(shù)writeDat()把結果cnt,pjz1,pjz2輸
出到out.dat文件。
例如:5591是素數(shù),則該數(shù)滿足條件計算平均值pjz1,且個數(shù)cnt=cnt+1。
9812是非素數(shù),則該數(shù)不滿足條件計算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定義數(shù)組:a[300],已定義變量:cnt,pjz1,pjz2
請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)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
請編制函數(shù)ReadDat()實現(xiàn)從文件IN.DAT中讀取1000個十進制整數(shù)到數(shù)組xx中;請編制函數(shù)Compute()分別計算出xx中奇數(shù)的個數(shù)odd,奇數(shù)的平均值ave1,偶數(shù)的平均值ave2以及所有奇數(shù)的方差totfc的值,最后調用函數(shù)WriteDat()把結果輸出到OUT.DAT文件中。
計算方差的公式如下:
N 2
totfc=1/N ∑ (xx-ave1)
i=1
設N為奇數(shù)的個數(shù),xx為奇數(shù),ave1為奇數(shù)的平均值。
原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù),并用逗號隔開。(每個數(shù)均大于0且小于等于2000)
部分源程序存在文件prog1.c中。
請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)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;
/*********編制函數(shù)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("數(shù)據(jù)文件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);
}
*************************************************************************
已知數(shù)據(jù)文件in.dat中存有300個四位數(shù),并已調用讀函數(shù)ReadDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)jsvalue(),其功能是:求出千位數(shù)上的數(shù)加百位數(shù)等于十位數(shù)上的數(shù)加個位數(shù)上的數(shù)的個數(shù)cnt,再求出所有滿足此條件的四位數(shù)平均值pjz1,以及不滿足此條件的四位數(shù)平均值pjz2,最后調用寫函數(shù)writeDat()把結果輸出到out.dat文件。
例如:7153,7+1=5+3,則該數(shù)滿足條件計算平均值pjz1,且個數(shù)cnt=cnt+1。8129,8+1<>2+9,則該數(shù)不滿足條件計算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定義數(shù)組:a[300],已定義變量:cnt,pjz1,pjz2。
請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)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
已知數(shù)據(jù)文件in.dat中存有300個四位數(shù),并已調用讀函數(shù)ReadDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)jsvalue(),其功能是:求出所有這些四位數(shù)是素數(shù)的個數(shù)cnt,再求出所有滿足此條件的四位數(shù)平均值pjz1,以及不滿足此條件的四位數(shù)平均值pjz2,最后調用寫函數(shù)writeDat()把結果cnt,pjz1,pjz2輸
出到out.dat文件。
例如:5591是素數(shù),則該數(shù)滿足條件計算平均值pjz1,且個數(shù)cnt=cnt+1。
9812是非素數(shù),則該數(shù)不滿足條件計算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定義數(shù)組:a[300],已定義變量:cnt,pjz1,pjz2
請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)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
請編制函數(shù)ReadDat()實現(xiàn)從文件IN.DAT中讀取1000個十進制整數(shù)到數(shù)組xx中;請編制函數(shù)Compute()分別計算出xx中奇數(shù)的個數(shù)odd,奇數(shù)的平均值ave1,偶數(shù)的平均值ave2以及所有奇數(shù)的方差totfc的值,最后調用函數(shù)WriteDat()把結果輸出到OUT.DAT文件中。
計算方差的公式如下:
N 2
totfc=1/N ∑ (xx-ave1)
i=1
設N為奇數(shù)的個數(shù),xx為奇數(shù),ave1為奇數(shù)的平均值。
原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù),并用逗號隔開。(每個數(shù)均大于0且小于等于2000)
部分源程序存在文件prog1.c中。
請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)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;
/*********編制函數(shù)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("數(shù)據(jù)文件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);
}
*************************************************************************

