您的位置首页百科问答

C语言编写简单计算器

C语言编写简单计算器

的有关信息介绍如下:

C语言编写简单计算器

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

首先打开VC++

文件》》新建

新建一个C++文档

先声明主函数还有变量

#include

char token;

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

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

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

{

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

else

{

printf("cannot match\n");

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

}

}

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

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

{

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

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

if ( token == '+')

{

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

result += mid();

break;

}

else if ( token == '-')

{

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

result -= mid();

break;

}

return result;

}

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

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

{

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

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

if ( token == '+')

{

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

result += mid();

break;

}

else if ( token == '-')

{

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

result -= mid();

break;

}

return result;

}

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

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\n"); /*不是括号也不是数字*/

exit(1);

}

return result;

}

主函数

main()

{

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

printf("*****************************************\n");

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

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

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

printf("*****************************************\n");

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

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

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

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

else

{

printf( "Unexpected char!");

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

}

scanf("%d",result);

return 0;

}

程序结果