ITPub博客

首页 > 数据库 > Oracle > C语言编写简单计算器

C语言编写简单计算器

Oracle 作者:voidxp 时间:2012-11-22 13:29:00 0 删除 编辑

这个计算器比较简单,只能计算加减乘除,用到了递归思想

方法/步骤

  1. 1

    首先打开VC++

  2. 2

    文件》》新建

  3. 3

    新建一个C++文档

  4. 4

    先声明主函数还有变量

    #include

    char token;


  5. 5

    程序用到几个函数,下面我来介绍下

    这个函数是运算符匹配程序

    void match( char expectedToken ) /*对当前的标志进行匹配*/

    {

    if( token == expectedToken ) token = getchar(); /*匹配成功,获取下一个标志*/

    else

    {      

    printf("cannot match ");

    exit(1); /*匹配不成功,退出程序*/

    }

    }


  6. 6

    这个函数是计算低优先级的运算,比如,加减

    int low( void )/*用于计算表达式中级别最低的运算*/

    {

    int result = mid(); /*计算比加减运算优先级别高的部分*/

    while(( token == '+' ) || ( token == '-' ))

    if ( token == '+')

    {

    match('+');     /*进行加法运算*/

    result += mid();

    break;

    }

    else if ( token == '-')

    {

    match('-');    /*进行减法运算*/

    result -= mid();

    break;

    }

    return result;

    }


  7. 7

    这个函数是计算高优先级运算,乘除

    int low( void )/*用于计算表达式中级别最低的运算*/

    {

    int result = mid(); /*计算比加减运算优先级别高的部分*/

    while(( token == '+' ) || ( token == '-' ))

    if ( token == '+')

    {

    match('+');     /*进行加法运算*/

    result += mid();

    break;

    }

    else if ( token == '-')

    {

    match('-');    /*进行减法运算*/

    result -= mid();

    break;

    }

    return result;

    }


  8. 8

    这个函数是计算,乘除和带括号的运算

    int high( void )/*用于计算表达式中级别最高的运算,即带()的运算*/

    {

    int result;

    if( token == '(' ) /*带有括号的运算*/

    {

    match( '(' );

    result = low();/*递归计算表达式*/

    match(')');

    }

    else if ( token>= '0'&&token<='9' ) /*实际的数字*/

    {

    ungetc( token, stdin ); /*将读入的字符退还给输入流,为读取整个数*/

    scanf( "%d", &result ); /*读出数字*/

    token = getchar();  /*读出当前的标志*/

    }

    else

    {

    printf("The input has unexpected char "); /*不是括号也不是数字*/

    exit(1);

    }

    return result;

    }


  9. 9

    主函数

    main()

    {  

    int result;  /*运算的结果*/                  

    printf("***************************************** ");

    printf("**Welcome to use this simple calculator** ");

    printf("**Please input a multinomial like      ** ");

    printf("**                    6-3*(5-1)/2+14/7 ** ");

    printf("***************************************** ");

    token = getchar(); /*载入第一个符号*/


    result = low(); /*进行计算*/

    if( token == ' ' ) /* 是否一行结束 */

    printf( "The answer is : %d ", result );

    else

    {

    printf( "Unexpected char!");

    exit(1); /* 出现了例外的字符 */

    }

    scanf("%d",result);

    return 0;

    }


  10. 10

    程序结果

    END

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/41809/viewspace-1109525/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论