用C语言编写一个计算器程序

请各位大神帮忙编译一个简单计算器的程序,可以运行加减乘除,括号,正余弦从一个字符串中得到一个需要计算的算式(这个不用写)检查字符串中的算式是否输入正确(即括号、运算符是否... 请各位大神帮忙编译一个简单计算器的程序,可以运行加减乘除,括号,正余弦
从一个字符串中得到一个需要计算的算式(这个不用写)
检查字符串中的算式是否输入正确(即括号、运算符是否输入正确)
将该算式解析并计算,其中算式的未知数i可以自定义。即可以输入一个i,将该算式循环i次,所得结果放入数组中。
比如
字符串中的算式是: sin((π*10*i)/10)*cos(10*(π*10*i)+10) ,能得到i个运算结果的数组。

十分感谢啊!
能用堆栈写出来最好..
展开
 我来答
华龙君
2014-04-21 · TA获得超过309个赞
知道答主
回答量:28
采纳率:100%
帮助的人:11.1万
展开全部
#include<stdio.h>
#include<windows.h>
#include<math.h>
#define p 3.1415926
#define r p/180 //r=p/180,p=3.14....,p/180是求的1弧度,下面sin(里面要求的是弧度),sin(30弧度)=0.5。 void main()
{
float i,j,k;
int l,m,n,a[10];
char cmd;
LOOP:
system("cls");
printf("***********************\n");
printf("*******小寒计算器******\n");
printf("***********************\n");
printf("\n\n本计算器提供+、-、*、/四种运算。\n");
printf("p-代表圆周率pai。\n");
printf("a-代表十进制转换为二进制。\n");
printf("b-代表十进制转换为八进制。\n");
printf("c-代表十进制转换为十六进制。\n");
printf("d-代表该数值开方。\n");
printf("e-代表该数值开立方。\n");
printf("f-代表求几次方。\n");
printf("S-代表sin。\n");
printf("C-代表cos。\n");
printf("T-代表tan。\n");
printf("\n\n请输入要计算的数字和运算符号,输入“#”时,结束;输入“!”时复位。\n");

scanf("%f",&k);
while((cmd=getchar())!='#')
{
if(i!=0)
switch(cmd)
{
case '+': scanf("%f",&i);
k=k+i;
printf("=%5.2f",k);
break; case '-': scanf("%f",&i);
k=k-i;
printf("=%5.2f",k);
break; case '*': scanf("%f",&i);
k=k*i;
printf("=%5.2f",k);
break; case '/': scanf("%f",&i);
k=k/i;
printf("=%5.2f",k);
break;

case 'p': k=k*p;
printf("%6.4f",k);
break; case 'f': printf("请输入要求该数字的几次方:");
scanf("%d",&n);
i=k;
for(m=0;m<n-1;m++)
k=k*i;
printf("%5.2f",k);
break; case 'a': printf("转换成二进制\n");
m=0;

while((int)k>0)
{
l=k;
k=k/2;
l=l%2;
a[m]=l;
m++;
}
for(n=m-1;n>=0;n--)
printf("%d",a[n]);
break; case 'b': printf("转换成八进制\n");
m=0;
while((int)k>0)
{
l=k;
k=k/8;
l=l%8;
a[m]=l;
m++;
}
for(n=m-1;n>=0;n--)
printf("%d",a[n]);
break;

case 'c': printf("转换成十六进制\n");
m=0;
while((int)k>0)
{
l=k;
k=k/16;
l=l%16;
a[m]=l;
m++;
}
for(n=m-1;n>=0;n--)
{
if(a[n]==10)
{ printf("A");continue;}
else if(a[n]==11)
{ printf("B");continue;}
else if(a[n]==12)
{ printf("C");continue;}
else if(a[n]==13)
{ printf("D");continue;}
else if(a[n]==14)
{ printf("E");continue;}
else if(a[n]==15)
{ printf("F");continue;} printf("%d",a[n]);
}

break;
case 'e': printf("该数值开立方得\n");
i=pow(k,1.0/3);
printf("%5.2f",i );
break;

case 'd': printf("该数值开方得\n");
i=k/2;
j=sqrt(k);
printf("%5.2f",j);
break; case 'S': k=k*r;
i=sin(k);
printf("%5.2f",i);
break;

case 'C': k=k*r;
i=cos(k);
printf("%5.2f",i);
break; case 'T': k=k*r;
i=tan(k);
printf("%5.2f",i);
break; case '!': goto LOOP;

}

}
}
这样就可以了,希望采纳,谢谢。
追问
要带括号的..这个属于简易计算器.不能计算括号..
追答
最起码先采纳一下吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式