计算机三级数据库简单数据运算问题9g.docx

上传人:b****5 文档编号:5047091 上传时间:2022-12-12 格式:DOCX 页数:15 大小:18.64KB
下载 相关 举报
计算机三级数据库简单数据运算问题9g.docx_第1页
第1页 / 共15页
计算机三级数据库简单数据运算问题9g.docx_第2页
第2页 / 共15页
计算机三级数据库简单数据运算问题9g.docx_第3页
第3页 / 共15页
计算机三级数据库简单数据运算问题9g.docx_第4页
第4页 / 共15页
计算机三级数据库简单数据运算问题9g.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机三级数据库简单数据运算问题9g.docx

《计算机三级数据库简单数据运算问题9g.docx》由会员分享,可在线阅读,更多相关《计算机三级数据库简单数据运算问题9g.docx(15页珍藏版)》请在冰豆网上搜索。

计算机三级数据库简单数据运算问题9g.docx

计算机三级数据库简单数据运算问题9g

1.编写函数jsValue,它的功能是:

求Fibonacci数列中大于t的最小的一个数,结果由函数返回。

其中Fibonacci数列F(n)的定义为:

F(0)=0,F

(1)=1

F(n)=F(n-1)+F(n-2)

最后调用函数writeDat()读取50个数据t,分别得出结果且把结果输出到文件out.dat中。

例如:

当t=1000时,函数值为:

1597。

部分源程序存在文件prog1.c中。

请勿改动主函数main()和写函数writeDat()的内容。

#include

intjsValue(intt)

{intf0=0,f1=1,fn;

fn=f0+f1;

while(fn<=t)

{f0=f1;

f1=fn;

fn=f0+f1;

}

returnfn;

}

main()

{

intn;

n=1000;

printf("n=%d,f=%d\n",n,jsValue(n));

writeDat();

}

writeDat()

{

FILE*in,*out;

inti,n,s;

in=fopen("in.dat","r");

out=fopen("out.dat","w");

for(i=0;i<50;i++){

fscanf(in,"%d",&n);

s=jsValue(n);

printf("%d\n",s);

fprintf(out,"%d\n",s);

}

fclose(in);

fclose(out);

}

*****************************************************************************************

2.下列程序prog1.c的功能是:

利用以下所示的简单迭代方法求方程:

cos(x)-x=0的一个实根。

Xn+1=cos(Xn)

迭代步骤如下:

(1)取X1初值为0.0;

(2)X0=X1,把X1的值赋给X0;

(3)X1=cos(X0),求出一个新的X1;

(4)若X0-X1的绝对值小于0.000001,执行步骤(5),否则执行步骤

(2);

(5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。

请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果输出到文件OUT17.DAT中。

部分源程序已给出。

请勿改动主函数main()和输出数据函数writeDat()的内容。

#include

#include

#include

floatcountValue()

{doublex0,x1;

x1=0.0;

do{x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>=0.000001);

returnx1;

}/*fabs是针对符点数进行取绝对值的,ABS是针对整数进行取绝对值的

main()

{

clrscr();

printf("实根=%f\n",countValue());

printf("%f\n",cos(countValue())-countValue());

writeDat();

}

writeDat()

{

FILE*wf;

wf=fopen("OUT17.DAT","w");

fprintf(wf,"%f\n",countValue());

fclose(wf);

}

 

*****************************************************************************************

3.请编写函数countValue(),它的功能是:

求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。

例如若n为1000时,函数值应为:

s=153.909064。

部分源程序存在文件prog1.c中。

请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。

#include

#include

#include

doublecountValue(intn)

{inti;

doubles=0.0;

for(i=1;i

if(i%21==0)s+=i;

returnsqrt(s);

}

main()

{

clrscr();

printf("自然数之和的平方根=%f\n",countValue(1000));

progReadWrite();

}

progReadWrite()

{

FILE*fp,*wf;

inti,n;

floats;

fp=fopen("in.dat","r");

if(fp==NULL){

printf("数据文件in.dat不存在!

");

return;

}

wf=fopen("out.dat","w");

for(i=0;i<10;i++){

fscanf(fp,"%d\n",&n);

s=countValue(n);

fprintf(wf,"%f\n",s);

}

fclose(fp);

fclose(wf);

}

*****************************************************************************************

4.已知在文件in.dat中存有N个(个数<200)实数,函数readdat()读取这N个实数并存入数组xx中。

请编制函数calvalue(),其功能要求:

1、求出这N个实数的平均值aver;

2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。

注意:

部分源程序已给出。

请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。

#include

#include

#defineMAXNUM200

floatxx[MAXNUM];

intN=0;/*文件IN.DAT中共有多少个实数*/

doubleaver=0.0;/*平均值*/

doublesumint=0.0;/*整数部分之和*/

doublesumdec=0.0;/*小数部分之和*/

intReadDat(void);

voidWriteDat(void);

voidCalValue(void)

{inti;

for(i=0;i

{sumint+=(long)xx[i];/*以强制类型转换来获得xx[i]的整数部分

sumdec+=xx[i]-(long)xx[i];

aver+=xx[i];

}

aver/=N;

}

voidmain()

{inti;

clrscr();

for(i=0;i

if(ReadDat()){

printf("数据文件IN.DAT不能打开!

\007\n");

return;

}

Calvalue();

printf("文件IN.DAT中共有实数=%d个\n",N);

printf("平均值=%.2lf\n",aver);

printf("整数部分之和=%.2lf\n",sumint);

printf("小数部分之和=%.2lf\n",sumdec);

WriteDat();

system("pause");

}

intReadDat(void)

{

FILE*fp;

inti=0;

if((fp=fopen("in.dat","r"))==NULL)return1;

while(!

feof(fp)){

fscanf(fp,"%d,",&xx[i++]);

}

fclose(fp);

return0;

}

voidWriteDat(void)

{

FILE*fp;

fp=fopen("OUT.DAT","w");

fprintf(fp,"%.2lf\n%.2lf\n%.2lf\n",aver,sumint,sumdec);

fclose(fp);

}

*****************************************************************************************

5.下列程序prog1.c的功能是:

在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。

请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。

最后调用函数writeDat()把结果输出到文件out.dat中。

请勿改动主函数main()和写函数writeDat()的内容。

#include

intjsValue(intbb[])

{inti,j,cnt=0,bw,sw,gw;

for(i=100;i<=999;i++)

{bw=i/100;sw=i%100/10;gw=i%10;

for(j=10;j*j<=i;j++)

if(i==j*j&&(bw==sw||sw==gw||gw==bw))bb[cnt++]=i;

}

returncnt;

}

 

main()

{

intb[20],num;

num=jsValue(b);

writeDat(num,b);

}

writeDat(intnum,intb[])

{

FILE*out;

inti;

out=fopen("out.dat","w");

printf("%d\n",num);

fprintf(out,"%d\n",num);

for(i=0;i

fclose(out);

}

*******************************************************************************6.请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。

计算方差的公式如下:

N2

totfc=1/N∑(xx[i]-ave2)

i=1

设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。

原始数据文件存放的格式是:

每行存放10个数,并用逗号隔开。

(每个数均大于0且小于等于2000)

部分源程序存在文件prog1.c中。

请勿改动主函数main()和输出数据函数writeDat()的内容。

#include

#include

#include

#defineMAX1000

intxx[MAX],odd=0,even=0;

doubleave1=0.0,ave2=0.0,totfc=0.0;

voidWriteDat(void);

intReadDat(void)

{inti;

FILE*fp;

if((fp=fopen("IN.DAT","r"))==NULL)return1;

/*********编制函数ReadDat()的部分************/

for(i=0;i

{fscanf(fp,"%d,",&xx[i]);

if((i+1)%10=________________________________________________________fscanf(fp,"\n");}

/*******************************************/

fclose(fp);

return0;

}

voidCompute(void)

{inti,yy[MAX];

for(i=0;i

yy[i]=0;

for(i=0;i

if(xx[i]%2==0){yy[even++]=xx[i];ave2+=xx[i];}

else{odd++;ave1+=xx[i];}

if(odd==0)ave1=0;

elseave1/=odd;

if(even==0)ave2=0;

elseave2/=even;

for(i=0;i

totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;

}

voidmain()

{

inti;

for(i=0;i

if(ReadDat()){

printf("数据文件IN.DAT不能打开!

\007\n");

return;

}

Compute();

printf("OVEN=%d\nAVE1=%f\nAVER2=%f\nTOTFC=%f\n",even,ave1,ave2,totfc);

WriteDat();

}

voidWriteDat(void)

{

FILE*fp;

inti;

fp=fopen("OUT.DAT","w");

fprintf(fp,"%d\n%f\n%f\n%f\n",even,ave1,ave2,totfc);

fclose(fp);

}

*****************************************************************************************

7.下列程序prog1.c的功能是:

计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和SUM。

请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT15.DAT中。

其中的S,I,X,N,E各代表一个十进制数字。

部分源程序存在文件prog1.c中。

请勿改动主函数main()和输出数据函数writeDat()的内容。

#include

intcnt,sum;

voidcountValue()

{ints,i,x,n,e,six,nine;

for(s=1;s<10;s++)

for(i=0;i<10;i++)

for(x=0;x<10;x++)

for(n=1;n<10;n++)

for(e=0;e<10;e++)

{six=s*100+i*10+x;

nine=n*1000+i*100+n*10+e;

if(3*six==2*nine)

{cnt++;sum+=six+nine;}

}

}

voidmain()

{

cnt=sum=0;

countValue();

printf("满足条件的个数=%d\n",cnt);

printf("满足条件所有的SIX与NINE的和=%d\n",sum);

writeDat();

}

writeDat()

{

FILE*fp;

fp=fopen("OUT15.DAT","w");

fprintf(fp,"%d\n%d\n",cnt,sum);

fclose(fp);

}

另一种经典解法:

voidcountValue()

{inti_;

for(i=666;i<=999;i=i+2)

if((i/10%10==(3*i/2)/100%10)&&((3*i/2)/1000==(3*i/2)%100/10))

{cnt++;sum+=i+3*i/2;}

}

运算结果为:

满足条件的个数=4

满足条件所有的SIX与NINE的和=9430

********************************************************************************************

8.请编写函数voidcountValue(int*a,int*n),它的功能是:

求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。

部分源程序存在文件prog1.c中。

请勿改动主函数main()和输出数据函数writeDAT()的内容。

#include

#include

voidcountValue(int*a,int*n)

{inti;

*n=0;

for(i=1;i<=1000;i++)

if(i%7==0&&i%11||i%7&&i%11==0)/*或者可以作为可以被7,11整除但是不可被77整除

a[(*n)++]=i;

}

main()

{

intaa[1000],n,k;

clrscr();

countValue(aa,&n);

for(k=0;k

if((k+1)%10==0)printf("\n");

elseprintf("%5d",aa[k]);

writeDAT();

}

writeDAT()

{

intaa[1000],n,k;

FILE*fp;

fp=fopen("out19.dat","w");

countValue(aa,&n);

for(k=0;k

if((k+1)%10==0)fprintf(fp,"\n");

elsefprintf(fp,"%5d",aa[k]);

fprintf(fp,"\n");

fclose(fp);

}

*****************************************************************************************

9.请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。

计算方差的公式如下:

N2

totfc=1/N∑(xx[i]-ave1)

i=1

设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。

原始数据文件存放的格式是:

每行存放10个数,并用逗号隔开。

(每个数均大于0且小于等于2000)

部分源程序存在文件prog1.c中。

请勿改动主函数main()和输出数据函数writeDat()的内容。

#include

#include

#include

#defineMAX1000

intxx[MAX],odd=0,even=0;

doubleave1=0.0,ave2=0.0,totfc=0.0;

voidWriteDat(void);

intReadDat(void)

{

inti;

FILE*fp;

if((fp=fopen("IN.DAT","r"))==NULL)return1;

/*********编制函数ReadDat()的部分************/

for(i=0;i

{fscanf(fp,"%d,",&xx[i]);

if((i+1)%10==0)

fscanf(fp,"\n");

}

/*******************************************/

fclose(fp);

return0;

}

voidCompute(void)

{inti,yy[MAX];

for(i=0;i

yy[i]=0;

for(i=0;i

if(xx[i]%2){yy[odd++]=xx[i];ave1+=xx[i];}

else{even++;ave2+=xx[i];}

if(odd==0)ave1=0;

elseave1/=odd;

if(even==0)ave2=0;

elseave2/=even;

for(i=0;i

totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;

}

voidmain()

{

inti;

for(i=0;i

if(ReadDat()){

printf("数据文件IN.DAT不能打开!

\007\n");

return;

}

Compute();

printf("ODD=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",odd,ave1,ave2,totfc);

WriteDat();

}

voidWriteDat(void)

{

FILE*fp;

inti;

fp=fopen("OUT.DAT","w");

fprintf(fp,"%d\n%f\n%f\n%f\n",odd,ave1,ave2,totfc);

fclose(fp);

}

*****************************************************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1