1 #include<stdio.h> 2 #include<math.h> 3 typedef struct{ 4 float A,p,e; 5 }item; 6 typedef struct{ 7 item element[50]; 8 int top; 9 }Stack; 10 void Init(Stack*S) 11 { 12 S->top=-1; 13 } 14 void Push(Stack*S,item x) 15 { 16 S->element[++S->top]=x; 17 } 18 item Pop(Stack*S) 19 { 20 item x; 21 x=S->element[S->top--]; 22 return x; 23 } 24 float Sqrt(item x) 25 { 26 Stack T; 27 Init(&T); 28 Push(&T,x); 29 while(T.top!=-1) 30 { 31 if(abs(x.p*x.p-x.A)<x.e)return x.p; 32 else { 33 x.p=(x.p+x.A/x.p)/2; 34 Pop(&T); 35 Push(&T,x); 36 } 37 } 38 } 39 int main() 40 { 41 item x; 42 x.e=2.3; 43 scanf("%f %f",&x.A,&x.p); 44 printf("%f",Sqrt(x)); 45 return 0; 46 }