一个简易的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 );
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值