用c语言编写计算器

必须具有加、减、乘、除、乘方、求绝对值、求阶乘的基本运算功能
每个功能都分别用不同的函数实现,数据的输入输出在主函数中实现

#include <stdio.h>
struct s_node
{
int data;
struct s_node *next;
};
typedef struct s_node s_list;
typedef s_list *link;
link operator=NULL;
link operand=NULL;

link push(link stack,int value)
{
link newnode;

newnode=(link) malloc(sizeof(s_list));
if(!newnode)
{
printf("\nMemory allocation failure!!!");
return NULL;
}
newnode->data=value;
newnode->next=stack;
stack=newnode;
return stack;
}

link pop(link stack,int *value)
{
link top;
if(stack !=NULL)
{
top=stack;
stack=stack->next;
*value=top->data;
free(top);
return stack;
}
else
*value=-1;
}

int empty(link stack)
{
if(stack==NULL)
return 1;
else
return 0;

}

int is_operator(char operator)
{
switch (operator)
{
case '+': case '-': case '*': case '/': return 1;
default:return 0;
}
}

int priority(char operator)
{
switch(operator)
{
case '+': case '-' : return 1;
case '*': case '/' : return 2;
default: return 0;
}
}

int two_result(int operator,int operand1,int operand2)
{
switch(operator)
{
case '+':return(operand2+operand1);
case '-':return(operand2-operand1);
case '*':return(operand2*operand1);
case '/':return(operand2/operand1);
}
}

void main()
{
char expression[50];
int position=0;
int op=0;
int operand1=0;
int operand2=0;
int evaluate=0;

printf("\nPlease input the inorder expression:");
gets(expression);

while(expression[position]!='\0'&&expression[position]!='\n')
{
if(is_operator(expression[position]))
{
if(!empty(operator))
while(priority(expression[position])<= priority(operator->data)&&
!empty(operator))
{
operand=pop(operand,&operand1);
operand=pop(operand,&operand2);
operator=pop(operator,&op);
operand=push(operand,two_result(op,operand1,operand2));
}
operator=push(operator,expression[position]);
}
else
operand=push(operand,expression[position]-48);
position++;
}
while(!empty(operator))
{
operator=pop(operator,&op);
operand=pop(operand,&operand1);
operand=pop(operand,&operand2);

operand=push(operand,two_result(op,operand1,operand2));
}
operand=pop(operand,&evaluate);
printf("The expression [%s] result is '%d' ",expression,evaluate);
getch();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-27
#include"stdio.h"
/*预处理命令*/

void main()
/*主函数*/

{

double a,b;
/*双精度实型变量说明*/

char c,d;
/*变量说明*/

do
/*循环体*/

{

printf("input a (-*/)b\n");
/*输入提示*/

scanf("%lf%c%lf",&a,&c,&b);
/*输入算术表达式*/

if(c==' ')
/*判断 */

printf("=%0.2f",a b);
/*输出a b的值*/

else if(c=='-')
/*判断-*/

printf("=%0.2f",a-b);
/*输出a-b的值*/

else if(c=='*')
/*判断**/

printf("=%0.2f",a*b);
/*输出a*b的值*/

else if(c=='/')
/*判断/*/

printf("=%0.3f",a/b);
/*输出a/b*/

else
/*不满足以上条件*/

printf("error");
/*输出错误*/

printf("\n\ninput\n");
/*输入\n*/

scanf("%c",&d);
/*输入符号给d*/

}
/*循环体结束*/

while(d=='\n');
/*循环条件语句*/

}
第2个回答  2016-01-14
简单计算器实现:
#include<stdio.h>
int main() {
double num1 = 0; //输入1
double num2 = 0; //输入2
char ch; //操作
double ret = 0; //结果 printf( "输入第一个数:" );
scanf( "%lf", &num1 );
printf( "输入第二个数:" );
scanf( "%lf", &num2 );
printf( "操作[+ - * /]:" );
getchar();
scanf( "%c", &ch ); switch( ch ) {
case '+':
ret = num1 + num2;
break;
case '-':
ret = num1 - num2;
break;
case '*':
ret = num1 * num2;
break;
case '/':
ret = num1 / num2;
break;
default:
break;
}
printf( "结果:%.2lf\n", ret ); return 0;
}
第3个回答  2019-11-19
堆栈是数据结构的内容,对初学者来说是很难的。可以不用这个,我写一个吧
#include"stdio.h"
void
main(){
int
a,
b;
int
s;
printf("输入2个数");
scanf("%d",&a);
scanf("%d",&b);
char
c;
printf("输入计算符号");
scanf("%c",&c);
switch(c)
case
'+':s=a+b;
case
'-':s=a-b;
case
'*':s=a*b;
case
'/':s=a/b;
printf("计算结果是%d",s);}
//这个计算器比较简单。
第4个回答  2019-01-17
不知道是不是你喜欢的格式。建议自己修改成自己喜欢的格式。#include<stdio.h>
#include<math.h>
void
menu()
{
printf("
|============================|\n");
printf("
|
1.算术运算;
2.进制转换;
|\n");
printf("
|============================|\n\n");
}
void
fun1()//算术运算
{
int
a,b;
char
oper; printf("请输入算式:");
scanf("%d%c%d",&a,&oper,&b);
switch(oper)
{
case
'+':printf("结果为:%d\n",a+b);break;
case
'-':printf("结果为:%d\n",a-b);break;
case
'*':printf("结果为:%d\n",a*b);break;
case
'/':printf("结果为:%.2f\n",(float)a/b);break;
case
'%':printf("结果为:%d\n",a%b);break;
default:printf("输入有误!\n");break;
}
}
void
fun2()//进制转换
{
int
choice,value,i,j=0,k,t;
char
s[50];
int
a[4];
printf("
********************************************************\n");
printf("
1.十进制转换成二进制;
2.十进制转换成十六进制;\n");
printf("
3.二进制转换成十进制;
4.二进制转换成十六进制;\n");
printf("
5.十六进制转换成二进制;
6.十六进制转换成十进制;\n");
printf("
********************************************************\n");

printf("请选择:");
scanf("%d",&choice);
switch(choice)
{
case
1:printf("请输入十进制数值:");scanf("%d",&value);

while(value>=2)

{

if(value%2!=0)

s[j++]='1';

else

s[j++]='0';

value=value/2;

}

if(value==1)

s[j]='1';

printf("结果为:");

for(i=j;i>=0;i--)

printf("%c",s[i]);

break;

case
2:printf("请输入十进制数值:");scanf("%d",&value);

printf("结果为:%x",value);break;
case
3:printf("请输入二进制数:");scanf("%s",s);

for(i=0;s[i]!='\0';i++);

i--;value=0;

for(j=0;j<=i;j++)

{
t=1;

if(s[j]=='1')

{
for(k=i-j;k>0;k--)

t*=2;

value+=t;

}

}

printf("结果为:%d\n",value);break;
case
4:printf("请输入二进制数:");scanf("%s",s);

for(i=0;s[i]!='\0';i++);

i--;value=0;

for(j=0;j<=i;j++)

{
t=1;

if(s[j]=='1')

{
for(k=i-j;k>0;k--)

t*=2;

value+=t;

}

}

printf("结果为:%x\n",value);break;
case
5:printf("请输入十六进制数值:");scanf("%x",&value);

while(value>=2)

{

if(value%2!=0)

s[j++]='1';

else

s[j++]='0';

value=value/2;

}

if(value==1)

s[j]='1';

printf("结果为:");

for(i=j;i>=0;i--)

printf("%c",s[i]);

break;

case
6:printf("请输入十六进制数值:");scanf("%x",value);

printf("结果为:%d\n",value);break;

default:printf("选择有误!\n");

break;
}
}
void
main()
{
int
choice;
while(choice!=0)
{
menu();

printf("请选择(0退出):");

scanf("%d",&choice);

if(choice==1)

fun1();

else
if(choice==2)

fun2();

printf("\n");
}
}

用c语言设计一个简单的加减乘除计算器
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。2、输入预处理命令和主函数:#include \/*函数头:输入输出头文件*\/,void main()\/*空类型:主函数*\/。3、定义变量:int a,b,d; \/*定义变量的数据类型为整型*\/,char c;\/*定义变量的数据类型为字符型*\/。4、输入四则运算式:pri...

用C语言怎么写出一个计算器?
清楚算法就可以很快写出:(1)只需输入2个变量n和sum,且sum=n+sum.(2)确定n的范围为n<=100 (3)循环体为 for(n=1;n<=100;n++)sum+=n;(4)根据C语言编辑规则写出程序 用for循环求:include<stdio.h> int main(void){ int n,sum=0;for(n=1;n<=100;n++)sum+=n;printf("1...

用c语言 编写计算器程序
1、首先我们需要在Dev C++软件中创建一个C语言项目,项目类型选择控制台程序,如下图所示 2、接下来我们在项目下面新建C语言文件,如下图所示 3、然后我们在C文件中写入计算器逻辑代码,主要是让用户输入计算方式,然后程序自动计算,如下图所示 4、接下来我们点击运行菜单,选择下拉菜单中的运行选项,如...

用C语言实现一个简单的计算器,要求有面积和体积输出。
include<stdio.h>int main(){float a,b,c,d;scanf("%f %f",&a,&b);\/\/输入长和宽c=a*b;d=2*(a+b);printf("S=%.2f L=%.2f\\n",c,d);\/\/S是面积,L是周长return 0;}

如何用C语言编写一个简单的计算器?
1、首先在打开的C语言软件窗口中,在Main函数的上方,写上阶乘函数的框架,如下图所示。2、然后定义一个变量【result】,如下图所示。3、然后输入if判断语句,就可以写下程序的关键语句,如下图所示。4、接下来就可以调用输出,如下图所示。5、最后点击运行,如下图所示,就可以运行测试。

用C语言做一个计算器,能实现加减乘除混合运算?
是的,可以使用C语言编写一个计算器程序,能够实现加、减、乘、除等混合运算。下面是一个简单的示例程序:```c include <stdio.h> int main() { char operator;double num1, num2, result;printf("Enter an operator (+, -, *, \/): ");scanf("%c", &operator);printf("Enter two ...

用c语言编写一个计算器。
include<stdio.h> int main(){ int a,b,c,max;printf("请输入三个数:\\n");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;if(c>max)max = c;printf("三个数中最大的数为:%d",max);return 0;}

c语言如何实现一个简单的计算器?
1.C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。2.C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。3.不同的变量类型可以用结构体(struct)组合在一起。4.只有32个保留字(reserved keywords),使变量...

C语言编写计算器的步骤是怎样的?
将c定义为选择计算方式的变量。用switch语句,将c作为选择变量,填写计算方式的选项,最后在主函数中输入一个输出函数来输出计算式及结果即可完成程序的编写:3、运行编译查询,输入一个除法的计算验证一下,发现程序输出了小数,说明程序运行正常。以上就是用C语言编写计算器的流程:

怎么让C语言写的计算器计算完一组数以后不让程序结束,返回再重新计算别...
,a-b);printf("两数之积a*b为%f\\n",a*b);if(b==0){printf("Error.You can't keep the divisor is equal to zero.");}else{printf("两数之商a\/b为%f\\n",a\/b);}getchar(); \/\/ 后加的语句 printf("\\n y 继续计算,...

相似回答