计算机二级真题(c语言编程题)001
题目解析:
本题用编程实现数学上近似求π的值,整体思路比较简单,用循环判断精度是否在输入范围,若在范围内则继续循环。
#include <stdio.h>
#include <math.h>//因为使用了数学计算包含数学头文件 double fun ( double eps)//定义实现此题目的函数,设置精度形参为eps { int n=0;//定义变量n double
down=1,up=1;//定义分子母down,分子up并赋初值 double one ,pi=0; one =
(double)up/(double)down;//分数值赋给one while(one>=eps) {
/*通过循环语句判断公式中某项是否在精度范围之内,当公式的某项不在此范围结束循环*/
pi+=one;
n++;
up=up*n;
down=down*(2*n+1);
one=(double)up/(double)down; } return pi*2; }
main( ) { double x;void NONO (); printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));
NONO(); getchar(); }
void NONO () {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ;
int i ; double x ;
fp = fopen("..\\..\\in.dat","r") ; wf =
fopen("..\\..\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%lf", &x) ;
fprintf(wf, "%lf\n", fun(x)) ; } fclose(fp) ; fclose(wf) ; }