/ * 程序的版权和版本声明部分
* Copyright (c) 2012, 华南师范大学软件工程专业
* All rights reserved.
* 文件名称: 简易计算器(液晶显示屏显示)
* 作 者: Hookc
* 完成日期:2012 年3 月 25 日
* 版 本 号:1
* 对任务及求解方法的描述部分
* 输入描述:计算器原理输入
* 问题描述:
* 程序输出:利用液晶显示器的原理显示计算结果
* /
#include"StdAfx.h"
#include <iostream>
using namespace std;
int main()
{
int A,b,e,f,i,m,n,s;
int a[100];
char c,g;
while(bool d=true)
{
cout<<" 请输入表达式,操作数和操作符之间用空格分隔"<<endl;
cout<<"加减乘除的的运算符分别用“ +、-、*、/ ”表示:"<<endl;
cin>>A>>c>>b;
switch(c)
{
case '+':f=A+b;break;
case '-':f=A-b;break;
case '*':f=A*b;break;
case '/':f=A/b;break;
}
if(f<0)
e=-f;
else
e=f;
for(i=0;i<=100;i++)
{
if(e==0)
{
break;//假设e已经等于0了,就可以跳出了
}
s=e%10;
a[i]=s;
e=e/10;
}
n=i;
for(m=n;m>=0;m--)
{
switch(a[m])
{
case 0:
case 2:
case 3:
case 5:
case 6:
case 7:
case 8:
case 9:cout<<" --";break;
case 1:
case 4:cout<<" ";break;
}
}
cout<<endl;
cout<<" ";
for(m=n;m>=0;m--)
{
switch(a[m])
{
case 0:
case 4:
case 8:
case 9:cout<<"| |";break;
case 1:
case 2:
case 3:
case 7:cout<<" |";break;
case 5:
case 6:cout<<"| ";break;
}
}
cout<<endl;
cout<<" ";
for(m=n;m>=0;m--)
{
switch(a[m])
{
case 0:
case 4:
case 8:
case 9:cout<<"| |";break;
case 1:
case 2:
case 3:
case 7:cout<<" |";break;
case 5:
case 6:cout<<"| ";break;
}
}
cout<<endl;
if(f<0)
cout<<" -- ";
else
cout<<" ";
for(m=n;m>=0;m--)
{
switch(a[m])
{
case 0:
case 1:
case 7:cout<<" ";break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 8:
case 9:cout<<"-- ";break;
}
}
cout<<endl;
cout<<" ";
for(m=n;m>=0;m--)
{
switch(a[m])
{
case 0:
case 6:
case 8:cout<<"| |";break;
case 1:
case 3:
case 4:
case 5:
case 7:
case 9:cout<<" |";break;
case 2:cout<<"| ";break;
}
}
cout<<endl;
cout<<" ";
for(m=n;m>=0;m--)
{
switch(a[m])
{
case 0:
case 6:
case 8:cout<<"| |";break;
case 1:
case 3:
case 4:
case 5:
case 7:
case 9:cout<<" |";break;
case 2:cout<<"| ";break;
}
}
cout<<endl;
cout<<" ";
for(m=n;m>=0;m--)
{
switch(a[m])
{
case 0:
case 2:
case 3:
case 5:
case 6:
case 8:
case 9:cout<<" -- ";break;
case 1:
case 4:
case 7:cout<<" ";break;
}
}
cout<<endl;
cout<<"若您想继续计算请按“y”,退出请按“n”,并按下回车键执行命令 "<<endl;
cin>>g;
if(g=='n')
d=false;
else
d=true;
}
return 0;
}
在这个程序中领悟到的是在设置循环中没有注意当e==0的情况下要跳出循环,导致程序输出错误。具体代码如下:
for(i=0;i<=100;i++)
{
if(e==0)
{
break;//假设e已经等于0了,可以跳出
}
s=e%10;
a[i]=s;
e=e/10;
}
//wrong 当e等于0的时候,还不能跳出循环
for(i=0;i<=100;i++)
{
if(e!=0)
{
s=e%10;
a[i]=s;
}
e=e/10;
}
还有就是学习到了可以使用bool型满足用户计算的需要,可以自主选择继续运算或退出运算。
还没学异常处理,所以有一些异常输入暂且得不到解决,接下来的一段时间会先自学一下这方面的内容,再做出改进~