资源简介

设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。 要求:要检查有关运算的条件,并对错误的条件产生报警。

资源截图

代码片段和文件信息

#include “stdio.h“
#include “stdlib.h“
#include “math.h“
#define Max 100
int check(char str[])
{
    int i=0j=1;
    char c;
    c=str[i];
    i++;
    while(c!=‘\0‘&&j==1)
    {
        switch(c)
        {
        case ‘+‘:
        case ‘-‘:
        case ‘*‘:
        case ‘/‘:
        case ‘(‘:
        case ‘)‘:
        case ‘0‘:
        case ‘1‘:
        case ‘2‘:
        case ‘3‘:
        case ‘4‘:
        case ‘5‘:
        case ‘6‘:
        case ‘7‘:
        case ‘8‘:
        case ‘9‘:
        case ‘a‘:
        case ‘s‘:
            j=1;
            break;
        default :
            j=0;
        }
        c=str[i];
        i++;
    }
    i--;
    if(str[i]==‘\0‘&&j==1)
        return 1;
    else
        return 0;
}
int PP_KH(char str[])
{
    struct
    {
        char data[Max];
        int top;
    }sta;
    int i=0;
    sta.top=-1;
    while(str[i]!=‘\0‘)
    {
        if(str[i]==‘(‘)
        {
            sta.top++;
            sta.data[sta.top]=str[i];
            i++;
        }
        else if(str[i]==‘)‘)
            {
                sta.top--;
                i++;
            }
        else
            i++;
    }
    return sta.top;
}
void menu()
{
    printf(“\t\t\t------------------------------------\n“);
    printf(“\t\t\t|------------欢迎使用!------------|\n“);
    printf(“\t\t\t|--说明:--------------------------|\n“);
    printf(“\t\t\t|------1.绝对值用a()表示;---------|\n“);
    printf(“\t\t\t-------2.平方根用s()表示;----------\n“);
}
int count(char exp[])
{
    struct
    {
        int data[Max];
        int top;
    }op;
    char c;
    int i=0;
    int k;
    op.top=-1;
    c=exp[i];
    i++;
    while(c!=‘\0‘)
    {
        switch(c)
        {
        case ‘+‘:
            op.data[op.top-1]=op.data[op.top]+op.data[op.top-1];
            op.top--;
            break;
        case ‘-‘:
            op.data[op.top-1]=op.data[op.top-1]-op.data[op.top];
            op.top--;
            break;
        case ‘*‘:
            op.data[op.top-1]=op.data[op.top-1]*op.data[op.top];
            op.top--;
            break;
        case ‘/‘:
            if(op.data[op.top]==0)
                {
                    printf(“\n“0”不能作除数!“);
                    exit(0);
                }
            else
            {
                op.data[op.top-1]=op.data[op.top-1]/op.data[op.top];
                op.top--;
            }
            break;
        case ‘a‘:
            op.data[op.top]=abs(op.data[op.top]);
            break;
        case ‘s‘:
            if(op.data[op.top]<=0)
            {
                printf(“根号下的数不能小于“0”;“);
                exit(0);
            }
            else
                op.data[op.top]=sqrt(op.data[op.top]);
            break;
        default:
            k=0;
            while(c>=‘0‘&&c<=‘9‘)
            {
                k=10*k+c-‘0‘;
                c=exp[i];
                i++;
   

评论

共有 条评论