请问怎么用c语言写一个可以实现加减乘除四则运算的计算器!

供稿:hz-xin.com     日期:2025-01-14
如何用c语言编写可以实现四则运算的计算器

#include #include #include void resolve(char *p);void del(int n);void find(char *p);int last();char s[80];int num[80];char sign[80]; /*此程序所有数组为全局变量*/int main(){ int n=1; while(n==1) { printf("Enter:
"); scanf("%s",s); resolve(s); find(sign); /*寻找乘号和除号*/ printf("result= %d

",last()); printf("please Enter:
1:continue 2:exit

"); scanf("%d",&n); }
return 0;}
void resolve(char *p) /*数字放在NUM中,符号放在SIGN中*/{ int n=0,k=0; while(*p!='\0') { if(*p>='0'&&*p<='9') n=n*10+(*p-'0'); else {
num[k]=n; n=0; sign[k++]=*p; } p++; } num[k]=n;
}
void find(char *p) { int i,n; for(i=0;*p;i++) { if(*p=='*'||*p=='/') { n=(*p=='*' ? num[i]*num[i+1] : num[i]/num[i+1]); num[i]=n; del(i); /*删除其中的乘除号和已经运算过的数字*/ i--; } else p++;
} }

void del(int n){ int i; for(i=n;i<strlen(sign);i++) { sign[i]=sign[i+1]; num[i+1]=num[i+2]; }
}
int last(){ int i,sum; sum=(sign[0]=='+' ? num[0]+num[1] : num[0]-num[1]); for(i=1;sign[i];i++) sum=(sign[i]=='+' ? sum+num[i+1] : sum-num[i+1]); return sum;
}
刚出炉的 没有实现其中的括号功能 也只能处理整数

scanf("%c",&c[i]);
}
for(i=0;c[i]!='=';i++)
{
if(c[i]=='*'||c[i]=='/')
{
switch(c[i])
{
case '*': a[i]=a[i]*a[i+1];
a[i+1]=0;
t=i;
h=i;
break;
case '/': if(a[i+1]==0)
{
printf("error");
break;
}
else
{
a[i]=a[i]/a[i+1];
a[i+1]=0;
t=i;
h=i;
break;
}
}
}
break;
}
for(i=t+1;c[i]!='=';i++)
{
if(c[i]=='*'||c[i]=='/')
{
if(i==h+1)
{
switch(c[i])
{
case '*': a[t]=a[t]*a[i+1];
a[i+1]=0;
h++;
break;
case '/': if(a[i+1]==0)
{
printf("error");
break;
}
else
{
a[i]=a[i]/a[i+1];
a[i+1]=0;
t=i;
h=i;
break;
}
}
}
else
{
switch(c[i])
{
case '*': t=i;
h=i;
a[t]=a[t]*a[i+1];
a[i+1]=0;
break;
case '/': if(a[i]==0)
{
printf("error");
break;
}
else
{
t=i;
h=i;
a[t]=a[t]/a[i+1];
a[i+1]=0;
break;
}
}
}
}
}
for(i=0;c[i]!='=';i++)
{
switch(c[i])
{
case '+': a[i+1]=a[i]+a[i+1];break;
case '-': a[i+1]=a[i]-a[i+1];break;
default: a[i+1]=a[i]+a[i+1];break;
}
}
printf("%d",a[i]);
}

#include<stdio.h>

void
js(float *i,int j,char c)
{
    float m;
    scanf("%f",&m);
    if(c=='*')
    i[j]=i[j]*m;
    else
    i[j]=i[j]/m;
}

void js2(float *i, char *c, int j, int k)
{
    int l = 0;
    for (int o=0; o<=k; o++)
    {
        if (c[o] == '+')
            i[l+1] = i[l] + i[l+1];
        else
            i[l+1] = i[l] - i[l+1];
        l++;
    }
}

int
main(void)
{
    int ic=0,j=0,k=0;
    float i[100];
    char c[100];
    while(1)
    {
        if(ic==0)
        {
            scanf("%f",&i[j++]);
            ic=1;
        }
        if(ic=1)
        {
            c[k++]=getchar();
            if(c[k-1]=='*'||c[k-1]=='/')
            {
                js(i,j-1,c[k-1]);
                k--;
                continue ;
            }
            else if(c[k-1]=='
')
            break;
            ic=0;
        }
    }
    js2(i,c,j-1,k-2);
    printf("%f", i[j-1]);
    return 0;
}

算法流程:

1,如果读入数字就把它存入数组中,

2,如果读入加,减号就存如另一个数组用,如果读入乘 除号,就再读入一个数字,从存数字的数组拿出两个数字进行乘 除运算。把结果存入数组中,这么重复直到读入回车键的符号。

3,读到回车符号后,就从存符号的数组中拿出一个符号,再从存数字的数组中拿出两个数字进行相应计算,接着再拿出一个数字一个符号和之前计算结果进行相应计算,一直重复,直到所有符号都拿出来了。

4,剩下的最后一个数字就是计算结果。


注:这个是我是我很久之前回答别人的,地址是https://zhidao.baidu.com/question/454652508527253645



C语言编写加减计算程序
include <stdio.h> main (void){ int a,b,c;char op;scanf ("%d%c%d",&a,&op,&b);\/\/最好空格去掉,这样就可以直接写成a+b或者a-b。如果有空格的话要记得空格也要打a + b。要不会出现错误 ,而且输入的时候需要用地址符&···if(op=='+'){c=a+b;} if(op=='-'){c=a-...

如何用C语言设计可以练10以内的加减法程序
include "stdlib.h"include "time.h"void main(){ char again='y'; \/\/again表示是否终止 int count=0,option; \/\/count存储输入无效数字的次数,option存储输入的菜单项 int sum,cha,k,right=0,wrong=0,num1,num2;while(again=='y'){ printf("===欢迎你进行10以内加减法练习===\\n");...

c语言的加减乘除是怎么实现的
本质上都是位运算。 加法通过异或、且和左移递归实现。设a,b为两个二进制数,则a+b = a^b + (a&b)<<1;典型的实现代码:\/\/递归版本的加法int Add(int a, int b){ return b ? Add(a^b, (a&b)<<1) : a; }\/\/迭代版本int Add_iter(int a, int b){ int ans; ...

C语言如何进行加减乘除?
分析C语言中的加减乘除和数学中的加减乘除一样,不同在于符号的表示问题,乘号需要用“*”表示。除号需要用“\/”表示。新手学习C语言,很容易把除号和取余好混淆,强调一下,取余号是“%”,百分号就是取余的意思。因此在输入两个整数以后,按照数学方法就可以直接输出结果,整数的输入用scanf()函数。

C语言:编写一个程序,使其能读入并计算以个只包含加减运算的表达式
include <stdio.h> int main(){ double a;char fh='+';double sum=0.0;while(scanf("%lf",&a)!=EOF){ if(fh=='+')sum+=a;else sum-=a;scanf("%c",&fh);if(fh==';')break;} printf("value=%lf\\n",sum);return 0;} 我假设的是表达式最前面有个'+',这不影响表达式的...

用c语言编一个简单的加减乘除的计算器程序 不需要很复杂 只要能进行两...
int main(){ char exp[8];printf("enter exp:\\n");scanf("%s",exp); \/\/输入类似于1+1 2*5这样的式子,一次一个 switch(exp[1]){ case '+':printf("%d\\n",exp[0]-'0'+exp[2]-'0'); break;case '-':printf("%d\\n",exp[0]-exp[2]); break;case '*':printf("%d\\...

怎么写C语言简单的加减乘除
C语言可以帮助我们快速的进行加减乘除运算,那么如何操作呢?下面我给大家分享一下。工具\/材料 Code Blocks 01 首先打开Code Blocks软件,新建一个C语言文件,如下图所示 02

怎么用C语言编写一个随机两位数的加减法的程序
\/\/程序如下,加法 减法各25道 include<stdio.h> include include<stdlib.h> void main(){ int i,a,b,c,score=0;srand((unsigned)time(NULL));for(i=1;i<=50;i++){ a=rand()%89+10;b=rand()%89+10;c=rand()%198;if(i<=25){ printf("%d+%d=%d\\n",a,b,c);if(c==a+...

用C语言编写一个简易计算器可实现加减乘除,连加连减,连乖连除。_百度知...
include<stdio.h>#include"stdlib.h"#define N 10void fun(){ int a,b,t; char c; scanf("%d",&a); scanf(" %c",&c); scanf("%d",&b); if(c=='+'||c=='-'||c=='*'||c=='\/'||c=='%') { if(c=='+') t=a+b; if(c=='-')...

c语言实现简单的加减乘除
int a=10; float b=5,c,d,e,f; c=a-b; d=a+b; e=a*b; f=a\/b; printf("a-b=%f\\n",c); printf("a+b=%f\\n",d); printf("a*b=%f\\n",e); printf("a\/b=%f\\n",f);}。5、这样一个简单的C语言的加减乘除算是写好了,运行看看。