☆题目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,执行步骤(5),否则执行步骤(2); (5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。 请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果输出到文件OUT17.DAT中。 部分源程序已给出。 请勿改动主函数main()和输出数据函数writeDat()的内容。 #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 请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。 例如若n为1000时,函数值应为:s=153.909064。 部分源程序存在文件prog1.c中。 请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。 #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("自然数之和的平方根=%f\n",countValue(1000)); progReadWrite(); } progReadWrite() { FILE *fp,*wf; int i,n; float s; 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); } 题目23 已知在文件in.dat中存有N个(个数<200)实数,函数readdat()读取这N个实数并存入数组xx中。请编制函数calvalue(),其功能要求: 1、求出这N个实数的平均值aver; 2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。 注意:部分源程序已给出。 请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。 #include #include #define MAXNUM 200 float xx[MAXNUM] ; int N= 0 ; /* 文件IN.DAT中共有多少个实数 */ double aver=0.0;/*平均值*/ double sumint=0.0;/*整数部分之和*/ double sumdec=0.0;/*小数部分之和*/ int ReadDat(void) ; void WriteDat(void) ; void CalValue(void) {int i; for (i=0;i {sumint+=(long)xx[i]; sumdec+=xx[i]-(long)xx[i]; aver+=xx[i]; } aver/=N; } void main() { int i ; clrscr() ; for(i = 0 ; i < MAXNUM ; i++) xx[i] = 0 ; 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"); } int ReadDat(void) { FILE *fp ; int i = 0 ; if((fp = fopen("in.dat", "r")) == NULL) return 1 ; while(!feof(fp)) { fscanf(fp, "%d,", &xx[i++]) ; } fclose(fp) ; return 0 ; } void WriteDat(void) { FILE *fp ;
[1] [2] [3] [4] 下一页
|