![]() ![]() |
|
全国计算机等级考试三级C语言上机题21-30 | |
作者:佚名 文章来源:不详 点击数 更新时间:2007/12/21 18:14:10 文章录入:杜斌 责任编辑:杜斌 | |
|
|
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 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 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 ; |
|
![]() ![]() |