Giúp debug biến global

#include<stdio.h>
#include<stdlib.h>

  struct sp {double thuc;
             double ao;  };
             
  struct sp a;
  double t1,t2;
  char dau; 
             
  int tinh(struct sp a, char dau);
  int toan(struct sp b, char dau2);
  
 
  
  main()                                  ///HAM TINHTOAN
  {
     printf("nhap so:\nthuc\tao\n");
     scanf("%lf", &a.thuc);
     scanf("%lf", &a.ao);
     printf("\t  phep tinh: \n\t      ");
     fflush(stdin);
     scanf("%c",&dau);
     tinh(a,dau);
  }
           ////HAM CON////////
           
    int tinh(struct sp a, char dau)         //HAM TINH
       {
        struct sp b;
        char dau1;
      
        switch(dau)
        {
            case '+':                  /// phep tinh cong
              printf("nhap so:\nthuc\tao\n");
             scanf("%lf", &b.thuc);
             scanf("%lf", &b.ao);
             printf("\t  phep tinh: \n\t      ");
             fflush(stdin);
             scanf("%c", &dau1);
              if(dau1=='+'||dau1=='-'||dau1=='=')
                {
                  a.thuc += b.thuc;
                  a.ao   += b.ao  ;
                  tinh(a,dau1);
                }
              else if(dau1=='*'||dau1=='/')
                {
                    struct sp c;
                    char dau2;
                    printf("nhap so:\nthuc\tao\n");
                   scanf("%lf", &c.thuc);
                   scanf("%lf", &c.ao);
                   printf("\t  phep tinh: \n\t      ");
                   fflush(stdin);
                   scanf("%c", &dau2);
                   if(dau1=='*')                         //Uu tien nhan
                      {          
                        t1=b.thuc;
                       t2=b.ao;
                       b.thuc = c.thuc*t1 - t2*c.ao;        
                       b.ao   = c.ao*t1   + t2*c.thuc;
                      }
                     else if(dau1=='/')                 //Uu tien chia
                       {
                         t1=b.thuc;
                         t2=b.ao;
                         b.thuc = (t1*c.thuc+t2*c.ao)/(c.thuc*c.thuc + c.ao*c.ao);
                         b.ao   = (t2*c.thuc-t1*c.ao)/(c.thuc*c.thuc + c.ao*c.ao);
                       }
                     toan(b,dau2);  
                
                   }
                   break;
                   
           case '-':                  /// phep tinh tru
              printf("nhap so:\nthuc\tao\n");
              scanf("%lf", &b.thuc);
              scanf("%lf", &b.ao);
              printf("\t  phep tinh: \n\t      ");
              fflush(stdin);
              scanf("%c", &dau1);
              if(dau1=='+'||dau1=='-'||dau1=='=')
                {
                  a.thuc -= b.thuc;
                  a.ao   -= b.ao  ;
                  tinh(a,dau1);
                }
              else if(dau1=='*'||dau1=='/')
                {
                    struct sp c;
                    char dau2;
                    printf("nhap so:\nthuc\tao\n");
                    scanf("%lf", &c.thuc);
                    scanf("%lf", &c.ao);
                    printf("\t  phep tinh: \n\t      ");
                    fflush(stdin);
                    scanf("%c", &dau2);
                    if(dau1=='*')                  //Uu tien nhan
                       {          
                        t1=b.thuc;
                        t2=b.ao;
                        b.thuc = c.thuc*t1 - t2*c.ao;        
                        b.ao   = c.ao*t1   + t2*c.thuc;
                       }
                     else if(dau1=='/')           //Uu tien chia
                       {
                         t1=b.thuc;
                         t2=b.ao;
                         b.thuc = (t1*c.thuc+t2*c.ao)/(c.thuc*c.thuc + c.ao*c.ao);
                         b.ao   = (t2*c.thuc-t1*c.ao)/(c.thuc*c.thuc + c.ao*c.ao);
                       }
                     toan(b,dau2);  
                
                   }
                   break;
           
           case '*':                            //ham nhan
              printf("nhap so:\nthuc\tao\n");
             scanf("%lf", &b.thuc);
             scanf("%lf", &b.ao);
             printf("\t  phep tinh: \n\t      ");
             fflush(stdin);
             scanf("%c", &dau1);
            t1=a.thuc;  
            t2=a.ao;
            a.thuc = b.thuc*t1 - t2*b.ao;        
            a.ao   = b.ao*t1   + t2*b.thuc;
             tinh(a,dau1);
             break;
           case '/':                            //ham chia
              printf("nhap so:\nthuc\tao\n");
              scanf("%lf", &b.thuc);
              scanf("%lf", &b.ao);
              printf("\t  phep tinh: \n\t      ");
              fflush(stdin);
              scanf("%c", &dau1);
             t1=a.thuc;
             t2=a.ao;
             a.thuc = (t1*b.thuc+t2*b.ao)/(b.thuc*b.thuc + b.ao*b.ao);
             a.ao   = (t2*b.thuc-t1*b.ao)/(b.thuc*b.thuc + b.ao*b.ao);
             tinh(a,dau1);
             break;
           case '=':                           //ham bang
            printf("______________________\n");
            printf("ket qua la:\n %lf + %lfi\n",a.thuc, a.ao);
            break;
           }
    }   
       
       
       int toan(struct sp b, char dau2)     //// HAM TOAN
       {  
       
        struct sp c;
        switch(dau2)
        { 
          case '*':                              ///vong lap nhan
               printf("nhap so:\nthuc\tao\n");
               scanf("%lf", &c.thuc);
               scanf("%lf", &c.ao);
               printf("\t  phep tinh: \n\t      ");
               fflush(stdin);
               scanf("%c", &dau2);
               t1=b.thuc;
               t2=b.ao;
               b.thuc = c.thuc*t1 - t2*c.ao;        
               b.ao   = c.ao*t1   + t2*c.thuc;
               toan(b,dau2);
               break;
               
           case '/':                        //vong lap chia
               printf("nhap so:\nthuc\tao\n");
               scanf("%lf", &c.thuc);
               scanf("%lf", &c.ao);
               printf("\t  phep tinh: \n\t      ");
               fflush(stdin);
               scanf("%c", &dau2);
               t1=b.thuc;
               t2=b.ao;
               b.thuc = (t1*c.thuc+t2*c.ao)/(c.thuc*c.thuc + c.ao*c.ao);
               b.ao   = (t2*c.thuc-t1*c.ao)/(c.thuc*c.thuc + c.ao*c.ao);
               toan(b,dau2);
               break;
               
            default:
             if(dau=='+')
               {
                a.thuc += b.thuc;
                a.ao   += b.ao;
                }
             else if(dau=='-')
               {
                a.thuc -= b.thuc;
                a.ao   -= b.ao  ;
               }
             dau=dau2;
             tinh(a,dau);
              break;  
}}

Em mới phát hiện là sau một hồi tính toán bằng biến toàn cục a, nó lại in ra giá trị đầu tiên mà mình nhập, thế là biến toàn cục mất giá trị à mọi người?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?