一個簡易的bc計算器



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

void help( void );

void chushi( void );

void test( void );

void bc( void );


void main()
{
 // printf( "%c\n", ch );
  chushi();
  //help( ch );
}


void help(void)
{
 printf( " list help:\n");
}


void chushi(  )
{
 char *input;
 while(1)
 {
   printf( "
terminal:" );
   input = (char*)malloc(sizeof(char));
   gets( input);
  // getchar();
   if( 0 ==(strcmp( "help", input )) )
    help();
   if( 0 ==(strcmp( "test", input )) )
    test();
   if( 0 ==(strcmp( "bc", input )) )
    bc();
 }
}

void test( void )
{
 char *m;
 while(1)
 {
   printf( "test:" );
   m = (char*)malloc(sizeof(char));
   gets( m);
  // getchar();

   if( 0 ==(strcmp( "help",m )) )
    help();
   if( 0 ==(strcmp( "q",m)) )
    break;
 }
}


void bc( void )
{
 while(1)
 {
  char*inputs;     
  char*str_left;     
  char*str_right;    

  int i;      
  int flag =0;     
  int leftend;     
  int rightend;     
  int leftn =0;     
  int rightn =0;     
  int leftint;     
  int rightint;     
  int length =1;     
  int symbol;      

 

  inputs = (char *)malloc( 100* sizeof( char) );
  if( inputs == NULL)  printf("init inputs error\n");
  str_left = ( char *)malloc( 10* sizeof( char) );
  if( inputs == NULL)  printf("init inputs error\n");
  str_right = ( char *)malloc( 10* sizeof( char ) );
  if( inputs == NULL)  printf("init inputs error\n");


  printf("bc:");   


  gets( inputs);   
  //puts( inputs );

 
  for( i = 0; inputs[i] != 0; i++)
  {
   if( inputs[i]== '+')
   {
    flag= i;
    symbol= 1;
   }

   if(inputs[i] == '-')
   {
    flag= i;
    symbol= 2;
   }

   if(inputs[i] == '*')
   {
    flag= i;
    symbol= 3;
   }

   if(inputs[i] == '/')
   {
    flag= i;
    symbol= 4;
   }

   if(inputs[i] == 'q')
   {
    //flag= i;
    symbol= 0;
   }

   if(inputs[i] == 'h')
   {
    //flag= i;
    symbol= 99;
   }
  
   if( i >100 )
    printf("inputerror!!!");

   length++;
   //printf("%d\n",flag);
  }


  if( symbol == 0 )break; 

  //inputs = (char *)malloc(length * sizeof( char) );

  for( i = 0; inputs[i] != 0;i++ )
  {
   if( i <flag && isdigit( inputs[i]) )
   {
     leftend= i;
     leftn++;
     //printf("%d%d\n",leftend, leftn);
     str_left[leftn- 1] = inputs[i];
    
   }

   if( i >flag && isdigit( inputs[i]) )
   {
     rightend= i;
     rightn++;
     //printf("%d%d\n",rightend, rightn);
     str_right[rightn- 1] = inputs[i];
    
   }
  }

  leftint =atoi(str_left);
  //printf("%d\n",leftint);
  rightint =atoi(str_right);
  //printf("%d\n",rightint);
  switch( symbol )
  {
   case 1:printf("bc:%d\n", ( leftint  + rightint ));break;
   case 2:printf("bc:%d\n", ( leftint  - rightint ));break;
   case 3:printf("bc:%d\n", ( leftint  * rightint ));break;
   case 4:printf("bc:%lf\n", (double)( (double)leftint  /(double)rightint )); break;
  }

 

  free( str_left );
  free( str_right );
  free( inputs );
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章