这个C语言程序怎么计算结果?有何作用?

来源:百度知道 编辑:UC知道 时间:2024/07/02 19:57:58
程序如下

#include<stdio.h>
#include<math.h>
float d,h,s,hmax,i,j;
main()
{
hmax=1/sqrt(3.14);i=0;s=0;
while(i<=hmax){
h=sqrt(hmax*hmax-i*i);
s=s+h*0.001;
i=i+0.001;
}
printf("%4.2f",s*4);
}
运行结果是1.00

但我不知道这个程序结果是怎么算出来的
还有不知道是干什么用的。
这是我们NOIP初赛复习题里面的一题,是试卷 手算 如果按一层层循环来做的话 不是要花费很多时间吗?而且是浮点数 计算很繁琐。有什么简便的计算答案方法?

我一部分一部分来给你分析吧。

#include<stdio.h> ----包含头文件
#include<math.h> ----包含数学文件,可以用相关数学运算
float d,h,s,hmax,i,j; ----定义变量
main() ----主函数开始
{
hmax=1/sqrt(3.14);i=0;s=0; ----初始化
while(i<=hmax){ ----while循环,当i<=hmax时候执行{ }内容
h=sqrt(hmax*hmax-i*i); ----计算中间变量h
s=s+h*0.001; ----这个就是累加计算,把每个h*0.001都加起来。 这部分是编程循环的一个基本技巧,所有的循环,每次都计算出一个h,这个s就是从0开始累加,每一步加上一个h*0.001,最终就得到了所有的h*0.001的和。s就是summary的简称。
i=i+0.001; ----将i增加0.001,跳至循环开始,与hmax比较,如果符合条件(i<=hmax),将继续执行循环。这个一般叫做步长,这里的就是0.001。
}
printf("%4.2f",s*4); ----输出,printf()函数打印出结果,4%表示保留4位小数。后面的s*4为输出的变量。
}

微积分。积分变量i从0---积到hmax=1/sqrt(3.14),积分sqrt(hmax*hmax-i*i)

变量替代会更为简单,用z=i*i代替变量i,从0积到1/3.14,3.14就是PI
积分sqrt(1/3.14-z),这个积分不难的。