用C语言编写计算器程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编写计算器程序相关的知识,希望对你有一定的参考价值。

输入任意四则混合运算式,求结果
急用 !!!
谢谢了哈

参考技术A http://www.softhouse.com.cn/html/200509/2005091911241600011153.html这个页面可能对你有帮助。 参考技术B #include<stdlib.h>
#include<string.h>
//数据进位函数
void Taxis(int fn,char *c,int *i);
//数据抹杀!!!!
void DataObliterate(int gl,int el,char *c,int *i);
//括号运算函数
void Abruption(int place,char *c,int *i);
//乘除求余函数
void MulDiv_(char *c,int *i);
//加减运算函数
void AddSub(char *c,int *i);
//数据进位函数
void Taxis(int fn,char *c,int *i)

for(;c[fn]!='\n';fn++)

i[fn+1]=i[fn+3];
c[fn]=c[fn+2];


//数据抹杀函数!!!!
void DataObliterate(int gl,int el,char *c,int *i)

int locality=el-gl;
for(;c[gl]!='\n';gl++)

i[gl+1]=i[gl+locality+1];
c[gl]=c[gl+locality];


//括号运算函数
void Abruption(int place,char *c,int *i)

char cTemp[50]="\0";
int iTemp[50]=0;
int beginLocality=0;
int endLocality=0;
for(int fn=place;c[fn]!='\n';fn++)

if(i[fn-1]=='x'&&c[fn]=='(')

Abruption(fn+1,c,i);
////////////////////////////////////
bool trouble=0;
for(int fnTemp=0;fnTemp<100;fnTemp++)

if(c[fnTemp]!='('&&c[fnTemp]!=')')

trouble=1;

else

trouble=0;
break;


if(trouble)return;//递归留下的麻烦哪~~~~~~~~~~~
////////////////////////////////////
beginLocality=fn-1;
endLocality=0;
for(int fn2=0;i[fn+2]!='x'&&c[fn+1]!=')';fn++,fn2++)

iTemp[fn2]=i[fn+1];
if(i[fn+3]=='x'&&c[fn+2]==')')

endLocality=fn+3;
cTemp[fn2+1]='\n';
break;

cTemp[fn2+1]=c[fn+2];

MulDiv_(cTemp,iTemp);
AddSub(cTemp,iTemp);
i[beginLocality]=iTemp[0];
DataObliterate(beginLocality,endLocality,c,i);//让一切归为无吧!!哈哈!!
fn=0;



//乘除求余函数
void MulDiv_(char *c,int *i)

for(int forNum1=1;c[forNum1]!='\n';forNum1+=2)

if(c[forNum1]=='\n')

break;

switch(c[forNum1])

case '+':
break;
case '-':
break;
case '*':
i[forNum1-1]=i[forNum1-1]*i[forNum1+1];
Taxis(forNum1,c,i);
forNum1-=2;
break;
case '/':
i[forNum1-1]=i[forNum1-1]/i[forNum1+1];
Taxis(forNum1,c,i);
forNum1-=2;
break;
case '%':
i[forNum1-1]=i[forNum1-1]%i[forNum1+1];
Taxis(forNum1,c,i);
forNum1-=2;
break;
default:
printf("在乘除运算中有运算符错误!\n");
return;



//加减运算
void AddSub(char *c,int *i)
for(int forNum2=1;c[forNum2]!='\n';forNum2+=2)

if(c[forNum2]=='\n')

break;

switch(c[forNum2])

case '+':
i[forNum2-1]=i[forNum2-1]+i[forNum2+1];
Taxis(forNum2,c,i);
forNum2-=2;
break;
case '-':
i[forNum2-1]=i[forNum2-1]-i[forNum2+1];
Taxis(forNum2,c,i);
forNum2-=2;
break;
default:
printf("在加减运算中有运算符错误!\n");
return;


/*
计算器v1.1版1.0:
编写时间共用3个半小时以上4个小时以下->真是他丫的累啊......
从晚上11点多到3点,所有功能都已完成->目前为止没有发现错误....
没有使用浮点型,一律使用字符型与整型->因为我看见浮点型我就头晕.....1.1:
这次的升级版主要增加取余运算和支持嵌套括号与有空格的表达式.
说真的,我真正难弄的不是关于嵌套,而是那个该死的输入表达式!!!!编译环境:VC++
代码行数:212 (包括注释)
作者:XF.SkyL QQ:68094645 && 517013400
*/
#include<stdio.h>
#include"function.h"
void blankObliterate(char *c);
//括号运算函数
void Abruption(int place,char *c,int *i);
//乘除求余运算函数
void MulDiv_(char *c,int *i);
//加减运算函数
void AddSub(char *c,int *i);
//主函数
int main()

char cExpression[100]="\0";//符号测试数据
int iExpression[100]=0;//数值测试数据
int result=0;
while(true)

//对输入的表达式进行排序
printf("输入计算的表达式:");
for(int forNum=0;cExpression[forNum-1]!=0xa;)

result=scanf("%d",&iExpression[forNum]);
forNum++;
scanf("%c",&cExpression[forNum]);
for(;cExpression[forNum]==' ';)

scanf("%c",&cExpression[forNum]);

forNum++;
if(cExpression[forNum-1]=='(')

iExpression[forNum-2]='x';

for(;cExpression[forNum-1]==')';)

iExpression[forNum]='x';
forNum++;
result=scanf("%c",&cExpression[forNum]);
forNum++;


//括号运算
Abruption(0,cExpression,iExpression);
//乘除求余运算
MulDiv_(cExpression,iExpression);
//加减运算
AddSub(cExpression,iExpression);
//输出答案
printf("表达式的答案为:%d\n\n",iExpression[0]);

return 0;

用c语言编写程序计算时间差 比如说 输入725 1010就能计算出中间是几小时几分。

参考技术A #include<stdio.h>
main()

int s,t,m,j;
scanf("%d",&s);
t=s%60; t是秒
s=s/60;
m=s%60; m是分
j=s/60; j是小时
printf(“%d%d%d”,t,m,j);

本回答被提问者采纳
参考技术B 查C函数手册,学会查手册很重要。追问

哪里有卖啊?

追答

网上下

以上是关于用C语言编写计算器程序的主要内容,如果未能解决你的问题,请参考以下文章

怎样用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器?

用C语言编写一个计算器程序,实现加,减,乘,除,求平方根(正数),倒数等功能.

我用c语言写了一个小的计算器程序,但是我想给这个程序做一个windows界面,

用C语言编写一个计算两个向量叉积的程序

我要用C语言编写CRC16效验码。通过输入一个串然后计算出CRC16效验码。例如:输入010600001388计算得到849C

用c语言编写程序计算时间差 比如说 输入725 1010就能计算出中间是几小时几分。