关闭

【win32程序控制台】练习题:简易计算器(液晶显示屏显示)

882人阅读 评论(3) 收藏 举报
/ * 程序的版权和版本声明部分 
  * 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型满足用户计算的需要,可以自主选择继续运算或退出运算。

还没学异常处理,所以有一些异常输入暂且得不到解决,接下来的一段时间会先自学一下这方面的内容,再做出改进~

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25504次
    • 积分:438
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:3篇
    • 译文:2篇
    • 评论:7条
    文章分类
    设计作品