请问怎么用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语言的加减乘除算是写好了,运行看看。