其他数学计算Word格式.docx

上传人:b****3 文档编号:7440806 上传时间:2023-05-08 格式:DOCX 页数:23 大小:20.41KB
下载 相关 举报
其他数学计算Word格式.docx_第1页
第1页 / 共23页
其他数学计算Word格式.docx_第2页
第2页 / 共23页
其他数学计算Word格式.docx_第3页
第3页 / 共23页
其他数学计算Word格式.docx_第4页
第4页 / 共23页
其他数学计算Word格式.docx_第5页
第5页 / 共23页
其他数学计算Word格式.docx_第6页
第6页 / 共23页
其他数学计算Word格式.docx_第7页
第7页 / 共23页
其他数学计算Word格式.docx_第8页
第8页 / 共23页
其他数学计算Word格式.docx_第9页
第9页 / 共23页
其他数学计算Word格式.docx_第10页
第10页 / 共23页
其他数学计算Word格式.docx_第11页
第11页 / 共23页
其他数学计算Word格式.docx_第12页
第12页 / 共23页
其他数学计算Word格式.docx_第13页
第13页 / 共23页
其他数学计算Word格式.docx_第14页
第14页 / 共23页
其他数学计算Word格式.docx_第15页
第15页 / 共23页
其他数学计算Word格式.docx_第16页
第16页 / 共23页
其他数学计算Word格式.docx_第17页
第17页 / 共23页
其他数学计算Word格式.docx_第18页
第18页 / 共23页
其他数学计算Word格式.docx_第19页
第19页 / 共23页
其他数学计算Word格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

其他数学计算Word格式.docx

《其他数学计算Word格式.docx》由会员分享,可在线阅读,更多相关《其他数学计算Word格式.docx(23页珍藏版)》请在冰点文库上搜索。

其他数学计算Word格式.docx

voidCompute(void)

voidmain()

inti;

for(i=0;

i<

MAX;

i++)xx[i]=0;

if(ReadDat()){

printf("

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

\007\n"

);

return;

Compute()

ODD=%d\nOVEN=%d\nAVER=%1f\nTOTFC=%lf\n"

odd,ave1,ave2,totfc);

writeDat();

voidWriteDat(void)

fp=fopen("

OUT.DAT"

w"

fprintf(fp,"

%d\n%lf\n%lf\n%lf\n"

}

 

--------------------------------------------------------------------------------

/*注:

注意该题还要编制读函数readdat(),在读函数中格式输入符的一定要加逗号。

在compute()函数中算方差的方式也要注意哦!

*/

intReadDat(void)

FILE*fp;

in.dat"

"

r"

))==NULL)return1;

i++)

{fscanf(fp,"

%d,"

&

xx[i]);

if(feof(fp))break;

fclose(fp);

return0;

inti,yy[1000];

if(xx[i]%2)

{odd++;

ave1+=xx[i];

yy[odd-1]=xx[i];

else

{even++;

ave2+=xx[i];

ave1/=odd;

ave2/=even;

odd;

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

 

43、请编写函数countvalue(),它的功能是:

求n以内(不包括n)同时能被3和7整数的

所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。

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

s=153.909064。

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

#include<

conio.h>

math.h>

doublecountvalue(intn)

main()

clrscr();

s=%f\n"

countvalue(1000));

progreadwrite();

progreadwrite()

FILE*fp,*wf;

inti,n;

floats;

if(fp==NULL)

{printf("

Can'

topenthedatafilein.dat\007\n"

wf=fopen("

out.dat"

w"

10;

%d"

n);

s=countvalue(n);

fprintf(wf,"

%f\n"

s);

fclose(wf);

由于能同时被3和7整除的自然数最小的是21,而它们之间的间隔应是21(由最小

公倍数可得)。

因而在for()循环可定成如下形式。

floats=0.0;

for(i=21;

n;

i+=21)

s+=i;

s=sqrt(s);

returns;

55、下列程序的功能是:

计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NIN

E+NINE的个数cnt,以及满足此条件所有的SIX与NINE的和SUM。

请编写函数countvalue(

)实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out15.dat中

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

longcnt,sum;

voidcountValue()

{

cnt=sum=0;

countValue();

cnt=%d\n"

cnt);

sum=%ld\n"

sum);

writeDAT();

writeDAT()

OUT11.DAT"

fprintf(fp,"

%d\n%d\n"

cnt,sum);

由于有SIX+SIX+SIX=NINE+NINE可看出SIX的3倍必须大于等于2000(右边是一个

四位数字的数可知),因此从666开始循环,再由三个数的和是个偶数(右边为一个数的

2倍可知)可循环时步长为2。

再由SIX和NINE中有一个共同数字I所以得出第一个if()判

断,还有NINE中有一共同数字N所以得出第二个if()判断。

{inti;

\n"

for(i=666;

=999;

i=i+2)

if(i/10%10==(3*i/2)/100%10)/*以I为准*/

{cnt++;

sum+=i+3*i/2;

_________________________________

本人只是为了上机能通过,不追求什么算法速度,答案仅供大家参考,

cnt=0;

sum=0;

for(i=1000;

1500;

if(i/1000==i/10%10&

&

((2*i)/3)*3==(i+i))/*以N为准*/

{

cnt++;

sum+=i*5/3;

57、下列程序的功能是:

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

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()的内容。

floatcountValue()

A=%f\n"

countValue());

cos(countValue())-countValue());

FILE*wf;

out17.dat"

该迭代法的基本算法是:

反复赋值直到x0-x1的绝对值小于0.00001。

故而可用do-while循环。

这是一个典型的算法。

floatx0,x1=0.0;

do

{x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>

=0.000001);

returnx1;

59、请编写函数voidcountvalue(int*a,int*n),它的功能是:

求出1到1000之内能

被7或11整除但不能同时被7和11整除的所有整数放在数组a中,并通过n返回这些数的个

数。

voidcountValue(int*a,int*n)

intaa[1000],n,k;

countValue(aa,&

for(k=0;

k<

k++)

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

elseprintf("

%5d"

aa[k]);

out19.dat"

for(k=0;

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

elsefprintf(fp,"

由于7和11的最小公倍数为77故而可用i%77!

=0来表示不能同时被7和11整除。

a[(*n)++]=i,中必须有小括号,这是由于*与++的运算优先级别相同,而它们的结合方

向是自右向左,如不用括号则变成n所指的地址向前移一位,但本题要的是n所指的变量

的值增加1。

*n=0;

for(i=7;

1000;

if((i%7==0||i%11==0)&

i%77!

=0)

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

64、请编制函数READDAT()实现从文件IN.DAT中读取1000个十进制整数到数组XX中;

编制函数COMPUTE()分别计算出XX中奇数的个数ODD,偶数的个数EVEN,平均值`AVER以及方

差TOTFE的值,最后调用函数WRITEDAT()把结果输出到OUT.DAT文件中.

计算方差的公式如下:

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

每行存放10个数,并用逗号隔开(每个数均大于0且小于等于

2000).

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

doubleaver=0.0,totfc=0.0;

voidWriteDat(void);

inti;

xx[i]=0;

if(ReadDat())

topenthedatafilein.dat!

);

Compute();

ODD=%d\nEVEN=%d\nAVER=%lf\nTOTFC=%lf\n"

odd,even,aver,t

otfc);

WriteDat();

"

%d\n%d\n%lf\n%lf\n"

odd,even,aver,totfc);

{aver+=xx[i];

odd++;

even++;

aver/=(odd+even);

totfc+=(xx[i]-aver)*(xx[i]-aver)/(odd+even);

66、请编制函数READDAT()实现从文件IN.DAT中读取1000个十进制整数到数组XX中;

编制函数COMPUTE()分别计算出XX中偶数的个数EVEN,奇数的平均值`AVE1,偶数的平均值

AVE2以所有偶数的方差TOTFC的值,最后调用函数WRITEDAT()把结果输出到OUT.DAT文件中

.

设N为偶数的个数,XX[I]为偶数,AVE2为偶数的平均值.

EVEN=%d\nAVE1=%lf\nAVE2=%lf\nTOTFC=%lf\n"

even,ave1,ave

2,totfc);

%d\n%lf\n%lf\n%lf\n"

even,ave1,ave2,totfc);

yy[even-1]=xx[i];

even;

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

78、下列程序的功能是:

设A,B,C为三个不零的正整数,计算并输出下列不定方程组解

的个数CNT以及满足此条件的所有A,B,C之和SUM。

不定方程组为:

A+B+C=13

A-C=5

请编写函数COUNTVALUE()实现程序要求,最后调用函数WRITEDAT()把结果CNT和SUM

输出到文件OUT.DAT中.

intcnt,sum;

voidcountvalue()

countvalue();

sum=%d\n"

writedat();

writedat()

由A-C=5对A+B+C=13进行变换可得B=18-2*A,题中要求三个数都要大于0,所以A

必须从6开始(为了保证C不小于等于0),进而可得只要B大于0即可(即18-2*A>

0)。

inta;

for(a=6;

a<

13;

a++)

if(18-2*a>

0)

sum+=13;

086题下列程序的功能是:

寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。

所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。

满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。

请编制函数intjsValue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回0。

最后把结果输出到文件out.dat中。

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

intjsValue(longn)

longm;

FILE*out;

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

for(m=11;

m<

m++){

if(jsValue(m)&

jsValue(m*m)&

jsValue(m*m*m)){

printf(\m=%41d,m*m=%61d,m*m*m=%81d\\n\,m,m*m,m*m*m);

fclose(out);

intjsvalue(longn)

{inti,strl,half;

charxy[20];

itoa(n,xy,10);

strl=strlen(xy);

half=strl/2;

iif(xy[i]!

=xy[--strl])break;

if(i>

=half)return1;

elsereturn0;

本人只是为了上机能通过,不追求什么算法速度,答案仅供大家参考.

inti,aa[10],j=0,b=1;

/*n为“long”型,n的三次方最多达到10位,所以定义为aa[10]*/

while(n)

aa[j++]=n%10;

/*将数拆散后依次按最高位到最低位(万-》千-》百-》十-》个位)的次序放入数组aa中*/

n=n/10;

j/2;

if(aa[i]!

=aa[j-i-1])b=0;

returnb;

088题编写函数jsValue,它的功能是:

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

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

F(0)=0,F

(1)=1

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

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

例如:

当t=1000时,函数值为:

1597。

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

intjsValue(intt)

intn;

n=1000;

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

writeDat()

FILE*in,*out;

inti,n,s;

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

i++){

fscanf(in,\%d\

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

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2