用VC++编写一个简单的计算器 50

编写一个计算器程序,该计算器使用编辑框直接输入数据,使用命令按钮表示“+”、“-”、“*”、“/”、“%”、“=”和“C”等运算符。最好写的具体点,我是菜鸟。。。谢谢大家... 编写一个计算器程序,该计算器使用编辑框直接输入数据,使用命令按钮表示“+”、“-”、“*”、“/”、“%”、“=”和“C”等运算符。

最好写的具体点,我是菜鸟。。。
谢谢大家了!
展开
 我来答
用心明十天
2012-01-29 · TA获得超过1298个赞
知道小有建树答主
回答量:258
采纳率:100%
帮助的人:189万
展开全部
#include
#include
#include
#include
#define N 26 /*根据自己的需要,可以定义要进行运算的数字的最大个数*/
int main(void)
{
int i,j,k;
double num[N];
char sym[N],str[12];
loop1:
printf("Input a calculation method like 1+2^3-4*5/10=↙\nPlease:"); /*可以进行加、减、乘、除、乘方的运算*/
for(i=0;i<N;i++)
{
scanf("%lf%c",&num[i],&sym[i]); /*num[N]用来存储运算数字,sym[N]用来存储运算符号*/
if(sym[i]=='=') break; /*当出现等号时,表示计算式结束*/
}
for(j=0;j<=i;j++)
if(sym[j]=='^') /*判断优先级中的乘方,它是首先要处理的*/
{
if(num[j]==0&&num[j+1]==0) {printf("Input error!\n");goto loop2;} /*指数为零时,底数不为零。否则,进入标记位置*/
else num[j]=pow(num[j],num[j+1]); /*将本次出现的乘方运算结果,放在前一项中*/
for(k=j;k<i;k++)
{
sym[k]=sym[k+1]; /*依次将后面的符号替换到前面,因为符号中有"=",所以要多替换1次*/
if(k!=i-1) num[k+1]=num[k+2]; /*依次将后面的数字替换到前面*/
}
j--,i--; /*"j--"表示下一次从本次的位置开始继续判断是否为优先级中的乘方,因为本次位置替换后的符号仍然可能是"^",
"i--"表示下次处理的数字将减少1个*/
}
for(j=0;j<=i;j++)
{
if(sym[j]=='*') /*当计算式中没有"^"时,将开始判断优先级中的"*",它是其次要处理的*/
{
num[j]=num[j]*num[j+1]; /*将本次出现的乘法运算结果,放在前一项中*/
for(k=j;k<i;k++)
{
sym[k]=sym[k+1]; /*依次将后面的符号替换到前面,因为符号中有"=",所以要多替换1次*/
if(k!=i-1) num[k+1]=num[k+2]; /*依次将后面的数字替换到前面*/
}
j--,i--; /*"j--"表示下一次从本次的位置开始继续判断是否为优先级中的乘法,因为本次位置替换后的符号仍然可能是"*",
"i--"表示下次处理的数字将减少1个*/
}
if(sym[j]=='/') /*当计算式中没有"^"时,将开始判断优先级中的"/",它也是其次要处理的*/
{
if(num[j+1]==0) {printf("Input error!\n");goto loop2;} /*分母不为零。否则,进入标记位置*/
else num[j]=num[j]/num[j+1]; /*将本次出现的除法运算结果,放在前一项中*/
for(k=j;k<i;k++)
{
sym[k]=sym[k+1]; /*依次将后面的符号替换到前面,因为符号中有"=",所以要多替换1次*/
if(k!=i-1) num[k+1]=num[k+2]; /*依次将后面的数字替换到前面*/
}
j--,i--; /*"j--"表示下一次从本次的位置开始继续判断是否为优先级中的除法,因为本次位置替换后的符号仍然可能是"/",
"i--"表示下次处理的数字将减少1个*/
}
}
for(j=0;j<=i;j++)
switch(sym[j]) /*最后只剩"+"和"-"了,将每次运算的结果放在后一项中*/
{
case '+':num[j+1]=num[j]+num[j+1];break;
case '-':num[j+1]=num[j]-num[j+1];break;
case '=':break;
}
gcvt(num[i],12,str); /*将浮点数转换成字符串*/
for(j=0;j<12;j++)
if(str[j]=='.'&&!str[j+1]) str[j]=str[j+1]; /*当小数点后紧接字符串结束标志时,原本应该输出如"5.",处理后为"5"*/
printf("Result=%s\n",str); /*计算式的结果,最终存放在最后一项的字符串中*/
loop2:
printf("Continue(y/n)?"); /*是否继续,y表示继续,n表示退出*/
switch(getch())
{
case 'y':{system("cls");goto loop1;} /*点击y,清空屏幕,返回标记位置*/
case 'n':exit(0); /*点击n,退出程序*/
default :exit(0); /*点击其它键,也退出程序*/
}
getch();
return 0;
}

说明:必须将扩展名设置为c,若是cpp,将无法通过系统的编译。
huanlewuxian
2012-01-31
知道答主
回答量:20
采纳率:0%
帮助的人:16.2万
展开全部
内容很多哟。先建立一个对话框的MFC程序。再在窗体上建立输入框。(要编写代码:定义2个变量获取输入数据),再分别建立+,-等按钮,用向导添加函数。在函数体响应。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-02-11
展开全部
iceCalc 传说中的计算器

http://114.246.75.82/src/iceCalc.src.rar

可参考
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Alexgaoyh
2012-01-31 · 超过22用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:62.2万
展开全部
几乎每一本书上面都有计算器的编程~~百度上搜索也能搜索到~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ac1ff0c
2012-01-28 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:73.4万
展开全部
百度 VC 计算器, 有很多资源可以下,这个其实不算很难,但是说起来就麻烦了,百度文库上也有步骤和源代码,可以效仿。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式