用C语言编写计算器程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编写计算器程序相关的知识,希望对你有一定的参考价值。
输入任意四则混合运算式,求结果
急用 !!!
谢谢了哈
#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语言编写CRC16效验码。通过输入一个串然后计算出CRC16效验码。例如:输入010600001388计算得到849C