☆題目21
下列程序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,執(zhí)行步驟(5),否則執(zhí)行步驟(2);
(5)所求X1就是方程cos(X)-X=0的一個實根,作為函數(shù)值返回。
請編寫函數(shù)countvalue()實現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat()把結(jié)果輸出到文件OUT17.DAT中。
部分源程序已給出。
請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。
#include
#include
#include
float countvalue()
{ float x0,x1;
x1=0.0;
do{ x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=0.000001);
return x1;
}
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);
}
★題目22
請編寫函數(shù)countvalue(),它的功能是:求n以內(nèi)(不包括n)同時能被3與7整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回,最后結(jié)果s輸出到文件out.dat中。
例如若n為1000時,函數(shù)值應(yīng)為:s=153.909064。
部分源程序存在文件prog1.c中。
請勿改動主函數(shù)main()和輸入輸出數(shù)據(jù)函數(shù)progReadWrite()的內(nèi)容。
#include
#include
#include
double countvalue(int n)
{ int i;
double s=0.0;
for(i=1;i if(i%21==0) s+=i;
return sqrt(s);
}
main()
{
clrscr();
printf("自然數(shù)之和的平方根=%f\n",countvalue(1000));
progReadWrite();
}
progReadWrite()
{
FILE *fp,*wf;
int i,n;
float s;
fp=fopen("in.dat","r");
if(fp==NULL){
printf("數(shù)據(jù)文件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);
}
下列程序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,執(zhí)行步驟(5),否則執(zhí)行步驟(2);
(5)所求X1就是方程cos(X)-X=0的一個實根,作為函數(shù)值返回。
請編寫函數(shù)countvalue()實現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat()把結(jié)果輸出到文件OUT17.DAT中。
部分源程序已給出。
請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。
#include
#include
#include
float countvalue()
{ float x0,x1;
x1=0.0;
do{ x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=0.000001);
return x1;
}
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);
}
★題目22
請編寫函數(shù)countvalue(),它的功能是:求n以內(nèi)(不包括n)同時能被3與7整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回,最后結(jié)果s輸出到文件out.dat中。
例如若n為1000時,函數(shù)值應(yīng)為:s=153.909064。
部分源程序存在文件prog1.c中。
請勿改動主函數(shù)main()和輸入輸出數(shù)據(jù)函數(shù)progReadWrite()的內(nèi)容。
#include
#include
#include
double countvalue(int n)
{ int i;
double s=0.0;
for(i=1;i
return sqrt(s);
}
main()
{
clrscr();
printf("自然數(shù)之和的平方根=%f\n",countvalue(1000));
progReadWrite();
}
progReadWrite()
{
FILE *fp,*wf;
int i,n;
float s;
fp=fopen("in.dat","r");
if(fp==NULL){
printf("數(shù)據(jù)文件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);
}

