超级计算器

· · 个人记录

谷民们,这是我的超级计算器1.0版本:

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#define cls system("cls")
using namespace std;
const int N=1e2+5;
char c,A[N];
string str;
long long a,b,l,len;
double f1,f2;
void shuchu()
{
    printf("C++计算器\n");
    printf("按对应数字键计算。\n\n");
    printf("1.基础运算\n");
    printf("2.平方运算\n"); 
    printf("3.cmath函数运算\n"); 
}
void jichujisuan()
{
    cls;
    printf("请输入算式(仅允许单一运算)。\n");
    scanf("%s",A);
    len=strlen(A);
    a=b=0;
    for(int i=0;i<len;i++)
        if(A[i]<='9'&&A[i]>='0')
            a=a*10+(A[i]-'0');
        else {l=i;break;}
    c=A[l];
    for(int i=l+1;i<len;i++)
        if(A[i]<='9'&&A[i]>='0')
            b=b*10+(A[i]-'0');
        else break;
    if(c=='+') printf("%lld\n",a+b);
    else if(c=='-') printf("%lld\n",a-b);
    else if(c=='*') printf("%lld\n",a*b);
    else if(c=='/'&&b!=0) printf("%lld\n",a/b);
    else if(c=='%') printf("%lld\n",a%b);
    else printf("错误\n");
}
void pingfangjisuan()
{
    cls;
    printf("请输入底数和幂。\n");
    scanf("%lf %lf",&f1,&f2);
    printf("%lf\n",pow(f1,f2));
}
void cmathhanshu()
{
    printf("请输入函数名称和数字(help打开帮助)。\n");
    st2:
    {
        cin>>str>>f1;
        if(str=="help")
        {
            printf("绝对值函数:abs fabs。\n");
            printf("正弦三角函数:sin。\n");
            printf("余弦三角函数:cos。\n");
            printf("正切三角函数:tan。\n");
            printf("反正弦三角函数:asin。\n");
            printf("反余弦三角函数:acos。\n");
            printf("反正切三角函数:atan。\n");
            printf("e的x次方:exp。\n");
            printf("以e为底的对数:log。\n");
            printf("以10为底的对数:log10。\n");
            printf("计算x的y次方:pow。\n");
            printf("计算x的平方根:sqrt。\n");
            printf("向上取整:ceil。\n");
            printf("向下取整:floor。\n");
            printf("向0取整:trunc。\n");
            printf("四舍五入:round。\n");
            printf("计算浮点数的余数:fmod remainder。\n");
            goto st2;
        }
        if(str=="abs") printf("%lf\n",abs(f1));
        else if(str=="fabs") printf("%lf\n",fabs(f1));
        else if(str=="sin") printf("%lf\n",sin(f1));
        else if(str=="cos") printf("%lf\n",cos(f1));
        else if(str=="tan") printf("%lf\n",tan(f1));
        else if(str=="asin") printf("%lf\n",asin(f1));
        else if(str=="acos") printf("%lf\n",acos(f1));
        else if(str=="atan") printf("%lf\n",atan(f1));
        else if(str=="exp") printf("%lf\n",exp(f1));
        else if(str=="log") printf("%lf\n",log(f1));
        else if(str=="log10") printf("%lf\n",log10(f1));
        else if(str=="pow") scanf("%lf",&f2),printf("%lf\n",pow(f1,f2));
        else if(str=="sqrt") printf("%lf\n",sqrt(f1));
        else if(str=="ceil") printf("%lf\n",ceil(f1));
        else if(str=="floor") printf("%lf\n",floor(f1));
        else if(str=="trunc") printf("%lf\n",trunc(f1));
        else if(str=="round") printf("%lf\n",round(f1));
        else if(str=="fmod") scanf("%lf",&f2),printf("%lf\n",fmod(f1,f2));
        else if(str=="remainder") scanf("%lf",&f2),printf("%lf\n",remainder(f1,f2));
        else if(str=="jieshu") return ;
        else printf("错误\n");
        goto st2;
    }
} 
int main()
{
    st1:
    {
        shuchu();
        c=getch();
        if(c=='1')
            jichujisuan();
        else if(c=='2')
            pingfangjisuan();
        else if(c=='3')
        {
            cls;
            cmathhanshu();
        }
        Sleep(1000);
        c=getch();
        cls;
        goto st1;
    }
    return 0;
}