c++编程及数据问题(面积问题)如上图,有一个半径为r的黑圆,里面有一个半径为r/2的白圆,此白圆又有一个半径为r/4的黑圆,此黑圆里又有一个半径为r/8的白圆,如此重复下去,问黑色部分的面积
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 21:05:05
c++编程及数据问题(面积问题)如上图,有一个半径为r的黑圆,里面有一个半径为r/2的白圆,此白圆又有一个半径为r/4的黑圆,此黑圆里又有一个半径为r/8的白圆,如此重复下去,问黑色部分的面积
c++编程及数据问题(面积问题)
如上图,有一个半径为r的黑圆,里面有一个半径为r/2的白圆,此白圆又有一个半径为r/4的黑圆,此黑圆里又有一个半径为r/8的白圆,如此重复下去,问黑色部分的面积为多少?
运行结果示例:
请输入最外层圆的半径r:2
黑色部分的面积为4pi
c++编程及数据问题(面积问题)如上图,有一个半径为r的黑圆,里面有一个半径为r/2的白圆,此白圆又有一个半径为r/4的黑圆,此黑圆里又有一个半径为r/8的白圆,如此重复下去,问黑色部分的面积
/*
一个黑圆时,面积是πr²;
增加一个白圆后的面积是:π[r² - (r/2)²];
再增加一个黑圆后的面积是:π[r² - (r/2)² + (r/4)²];
再增加一个白圆后的面积是:π[r² - (r/2)² + (r/4)² - (r/8)²];
.
S = πr²[1 - 1/4 + 1/16 - 1/64 + 1/256 - .]
请输入圆的半径 :2
圆的数量是 :16
黑色部分的面积是 :10.053097
Press any key to continue
*/
#include
#define PI 3.14159265358979
int main() {
\x05long counter = 1L;
\x05double r,d = 1.0,n = 1.0,m = 1.0,sign = 1.0;
\x05double result = 0.0,delta = 1.0E-8;
\x05printf("请输入圆的半径 :");
\x05scanf("%lf",&r);
\x05while(d > delta) {
\x05\x05n = m*m;
\x05\x05d = 1.0/n;
\x05\x05result += sign*d;
\x05\x05m *= 2;
\x05\x05sign = -sign;
\x05\x05++counter;
\x05}
\x05printf("圆的数量是 :%ld\n",counter);
\x05printf("黑色部分的面积是 :%lf\n",PI * r * r * result);
\x05return 0;
}