打印本文    关闭窗口    | 
    |
| 全国计算机等级考试三级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 ;  | 
    |
  打印本文    关闭窗口    |