C语言编写加减计算程序

C语言编写加减计算程序,第1张

#include <stdioh>

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-b;}

printf("%d%c%d=%d\n",a,op,b,c);//楼主这句应该放在数据处理完后。。要不你输出的a,op,b都是在没处理过的数,也就是原来的值,而且最好是把,去掉,这样更美观 ,而且printf后面不需要&。。。切记。而且没必要那样输出。请楼主看我的printf```

}

还不清楚 来hi我

#include <stdioh>

#include <stdlibh>

#include <stringh>

#define size 20

typedef float NUM;

typedef struct

{

NUM data[size];

int top;

}Space,Lnode;

void begin();

void initialize(Space x,Space y);

void input(Space x,Space y);

int is_operator(char a_operator);

int pushf(Space s,float x);

int pushc(Space s,char x);

int empty(Space s);

int priority(char o);

int popf(Space s,float x);

int popc(Space s,int x);

float result(int a_operator,float operand1,float operand2);

main()

{

begin();

system("pause");

}

void begin()

{

Lnode operand,a_operator;//定义两个指向结构体的指针

Space s_operand=&operand,s_operator=&a_operator;

initialize(s_operand,s_operator);//初始化

input(s_operand,s_operator);//开始

}

void initialize(Space s,Space t)//初始化数据栈、运算符

{

s->top=0;

t->top=0;

}

void input(Space x,Space y)

{

int i,j,position=0,op=0;

float operand1=0,operand2=0,evaluate=0;//用来储存两个计算数 和 一个结果

char string[50];//所输入的表达式

char temp[50];//用来临时存放小数

printf("请输入表达式: ");

gets(string);

while(string[position]!='\0'&&string[position]!='\n')

{

i=0;

strcpy(temp,"0");

if(is_operator(string[position]))//判断是否为运算符

{

if(!empty(y))

{

while(!empty(y)&&priority(string[position])<=priority(y->data[y->top-1]))//判断优先级

{

popf(x,&operand1);

popf(x,&operand2);

popc(y,&op);

pushf(x,result(op,operand1,operand2));//计算结果

}

}

pushc(y,string[position]);//运算符入栈

position++;

}

while((string[position]!='\0'&&string[position]!='\n')&&(!is_operator(string[position])))//数据存入temp数组

{

temp[i]=string[position];

i++;

position++;

}

pushf(x,atof(temp));//将数组强制转换为浮点型 然后进行入栈 *** 作 x为指向数据栈的指针 atof函数即使强制转换类型

}

while(!empty(y))

{

popc(y,&op);

popf(x,&operand1);

popf(x,&operand2);

pushf(x,result(op,operand1,operand2));

}

popf(x,&evaluate);

printf("结果是 : %f",evaluate);

}

int pushf(Space s,float x)//数据入栈

{

if(s->top==size)

return 0;

s->data[s->top]=x;

s->top++;

return 1;

}

int pushc(Space s,char x)//运算符入栈

{

if(s->top==size)

return 0;

s->data[s->top]=x;

s->top++;

return 1;

}

int popf(Space s,float x)//数据出栈

{

if(s->top==0)

return 0;

else

{

s->top--;

x=s->data[s->top];

return 1;

}

}

int popc(Space s,int x)//运算符出栈

{

if(s->top==0)

return 0;

else

{

s->top--;

x=s->data[s->top];

return 1;

}

}

int empty(Space s)//判断栈空

{

if(s->top==0)

return 1;

else

return 0;

}

int is_operator(char Operator) //判断是否为运算符

{

switch(Operator)

{

case '+':

case '-':

case '':

case '/':

return 1;

default:

return 0;

}

}

int priority(char o) //判断运算符的优先级别

{

switch(o)

{

case '+':

case '-':

return 1;

case '':

case '/':

return 2;

default:

return 0;

}

}

float result(int a_operator,float operand1,float operand2)//计算结果

{

switch(a_operator)

{

case '+':

return operand2+operand1;

case '-':

return operand2-operand1;

case '':

return operand2operand1;

case '/':

return operand2/operand1;

}

}

这是用栈写的 没有写输入错误的判断 你自己添加一下吧

我是因为刚好有一个现成的程序

先计算a-=++a;实际上等同于a++;a-=a; (不论a之前值是多少,a-=a执行后a的值都将是0)

再将该值赋给c(注意,逗号运算优先级比赋值运算还要低),因此c的值是0

再计算a+=b,b+=4; (由于b的值仍是0,a的值不变,后面b+=4之后b的值变为4)

所以最后输出将是:0,4,0

一般程序有3种结构,顺序、选择、循环。

顺序嘛就不用说了,选择用于有条件的情况,例如成绩<60,评级为'D',60<成绩<70评级为'C'

循环就是用于重复做某样计算,就如同你的问题,累加(譬如从1+2+100)实际上就是循环的典型也是最基本应用。

int

i,sum=0;

for(i=1;i<=100;i++)

sum

=

sum

+i;

以上就是关于C语言编写加减计算程序全部的内容,包括:C语言编写加减计算程序、请问怎么用C语言编写四则运算的程序呢、C语言程序运算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9803543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存