计算机三级数据库简单数据运算问题9g文档格式.docx
- 文档编号:18002972
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:15
- 大小:18.64KB
计算机三级数据库简单数据运算问题9g文档格式.docx
《计算机三级数据库简单数据运算问题9g文档格式.docx》由会员分享,可在线阅读,更多相关《计算机三级数据库简单数据运算问题9g文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
in.dat"
"
r"
);
out=fopen("
out.dat"
w"
for(i=0;
i<
50;
i++){
fscanf(in,"
%d"
&
n);
s=jsValue(n);
%d\n"
s);
fprintf(out,"
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()的内容。
conio.h>
math.h>
floatcountValue()
{doublex0,x1;
x1=0.0;
do{x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>
=0.000001);
returnx1;
}/*fabs是针对符点数进行取绝对值的,ABS是针对整数进行取绝对值的
clrscr();
实根=%f\n"
countValue());
%f\n"
cos(countValue())-countValue());
FILE*wf;
wf=fopen("
OUT17.DAT"
fprintf(wf,"
fclose(wf);
}
3.请编写函数countValue(),它的功能是:
求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。
例如若n为1000时,函数值应为:
s=153.909064。
请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。
doublecountValue(intn)
{inti;
doubles=0.0;
for(i=1;
n;
i++)
if(i%21==0)s+=i;
returnsqrt(s);
自然数之和的平方根=%f\n"
countValue(1000));
progReadWrite();
progReadWrite()
FILE*fp,*wf;
inti,n;
floats;
fp=fopen("
if(fp==NULL){
数据文件in.dat不存在!
"
return;
10;
fscanf(fp,"
s=countValue(n);
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()的内容。
#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;
N;
{sumint+=(long)xx[i];
/*以强制类型转换来获得xx[i]的整数部分
sumdec+=xx[i]-(long)xx[i];
aver+=xx[i];
aver/=N;
voidmain()
{inti;
clrscr();
for(i=0;
i<
MAXNUM;
i++)xx[i]=0;
if(ReadDat()){
数据文件IN.DAT不能打开!
\007\n"
);
return;
Calvalue();
文件IN.DAT中共有实数=%d个\n"
N);
平均值=%.2lf\n"
aver);
整数部分之和=%.2lf\n"
sumint);
小数部分之和=%.2lf\n"
sumdec);
WriteDat();
system("
pause"
intReadDat(void)
FILE*fp;
inti=0;
if((fp=fopen("
"
))==NULL)return1;
while(!
feof(fp)){
fscanf(fp,"
%d,"
&
xx[i++]);
fclose(fp);
return0;
voidWriteDat(void)
fp=fopen("
OUT.DAT"
fprintf(fp,"
%.2lf\n%.2lf\n%.2lf\n"
aver,sumint,sumdec);
5.下列程序prog1.c的功能是:
在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;
它既是完全平方数,又是两位数字相同,例如144、676等。
请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。
最后调用函数writeDat()把结果输出到文件out.dat中。
intjsValue(intbb[])
{inti,j,cnt=0,bw,sw,gw;
for(i=100;
=999;
{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;
intb[20],num;
num=jsValue(b);
writeDat(num,b);
writeDat(intnum,intb[])
FILE*out;
inti;
num);
num;
i++){printf("
b[i]);
fprintf(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)
stdlib.h>
string.h>
#defineMAX1000
intxx[MAX],odd=0,even=0;
doubleave1=0.0,ave2=0.0,totfc=0.0;
voidWriteDat(void);
FILE*fp;
if((fp=fopen("
IN.DAT"
))==NULL)return1;
/*********编制函数ReadDat()的部分************/
for(i=0;
MAX;
{fscanf(fp,"
xx[i]);
if((i+1)%10=________________________________________________________fscanf(fp,"
\n"
/*******************************************/
fclose(fp);
return0;
voidCompute(void)
{inti,yy[MAX];
yy[i]=0;
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;
even;
totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;
i++)xx[i]=0;
if(ReadDat()){
Compute();
OVEN=%d\nAVE1=%f\nAVER2=%f\nTOTFC=%f\n"
even,ave1,ave2,totfc);
WriteDat();
fprintf(fp,"
%d\n%f\n%f\n%f\n"
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各代表一个十进制数字。
intcnt,sum;
voidcountValue()
{ints,i,x,n,e,six,nine;
for(s=1;
s<
s++)
for(x=0;
x<
x++)
for(n=1;
n<
n++)
for(e=0;
e<
e++)
{six=s*100+i*10+x;
nine=n*1000+i*100+n*10+e;
if(3*six==2*nine)
{cnt++;
sum+=six+nine;
cnt=sum=0;
countValue();
满足条件的个数=%d\n"
cnt);
满足条件所有的SIX与NINE的和=%d\n"
sum);
OUT15.DAT"
%d\n%d\n"
cnt,sum);
另一种经典解法:
{inti_;
for(i=666;
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返回这些数的个数。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
voidcountValue(int*a,int*n)
*n=0;
=1000;
if(i%7==0&
i%11||i%7&
i%11==0)/*或者可以作为可以被7,11整除但是不可被77整除
a[(*n)++]=i;
intaa[1000],n,k;
countValue(aa,&
for(k=0;
k<
k++)
if((k+1)%10==0)printf("
elseprintf("
%5d"
aa[k]);
writeDAT();
writeDAT()
out19.dat"
if((k+1)%10==0)fprintf(fp,"
elsefprintf(fp,"
fprintf(fp,"
9.请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;
请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
totfc=1/N∑(xx[i]-ave1)
设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。
{fscanf(fp,"
if((i+1)%10==0)
if(xx[i]%2){yy[odd++]=xx[i];
else{even++;
odd;
totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;
ODD=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n"
odd,ave1,ave2,totfc);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 三级 数据库 简单 数据 运算 问题