|
发表于 2005-1-27 09:12:08
|
显示全部楼层
Post by mikkoyue
- #include <stdio.h>
- double sqrt(double x)
- {
- [color=DarkOrange]double[/color] smaller, greater, result;
- smaller = 1.0;
- [color=DarkOrange]if[/color] (x > smaller) {
- greater = x;
- } [color=DarkOrange]else[/color] {
- greater = smaller;
- smaller = x;
- }
- [color=Red] result = greater;
- if( result * result > x ) {
- result = smaller;
- }[/color]
- [color=DarkOrange]while[/color] (greater - smaller > .000000001) { // 此处可以设置为你的精度要求
- [color=DarkOrange] if[/color] ( result * result < x ) {
- smaller = result;
- } [color=DarkOrange]else[/color] {
- greater = result;
- }
- result = (smaller + greater)/2;
- }
- [color=DarkOrange]return[/color] result;
- }
- int main()
- {
- [color=DarkOrange]double[/color] a;
- printf("Please input a number to a:");
- scanf("%lf", &a);
- printf("sqrt(%g) = %g\n", a, sqrt(a));
- [color=DarkOrange]return[/color] 0;
- }
复制代码
红线的地方不就是 result = smaller; 吗? 还是我看错了?
另外,如果参数是负数,这个程序也能返回个实数值来。 |
|