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

原创 2012年03月26日 15:58:01
/ * 程序的版权和版本声明部分 
  * 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型满足用户计算的需要,可以自主选择继续运算或退出运算。

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

 

如何在Win32窗口程序中发命令打开一个控制台,往里面打印(printf())输出一些数据

代码: AllocConsole(); HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE); unsigned long lgsize; WriteF...
  • ssmile
  • ssmile
  • 2012年08月08日 11:37
  • 4370

让Win32窗口程序拥有控制台窗口

让Win32窗口程序拥有控制台窗口     首先,为什么我们有了普通窗口后还要控制台窗口呢?因为我们可以用它方便的输出调试信息,而且普通玩家看到了也会觉得很高端。如果他会输几条命令,可能他会以为自己就...
  • u014629601
  • u014629601
  • 2017年07月31日 22:26
  • 188

Win32控制台应用程序隐藏弹出的那个DOS窗口

调用FreeConsole(); 需要头文件windows.h,在程序开始时调用就行了。但是VC开发环境的控制台还是会有的,因为那是VC调的,不过你的程序不会输出到那个控制台罢了 projec...
  • u011334621
  • u011334621
  • 2014年11月20日 14:48
  • 1634

Win32应用程序中创建控制台窗口

在Win32应用程序上默认是没有控制台窗口的,但经常需要用来调试。如何打开呢?1.设置两个全局的句柄,标准输入和输出。HANDLE hStdin;HANDLE hStdout; 2.建立控制台,并获得...
  • lzhlzz
  • lzhlzz
  • 2011年07月08日 19:32
  • 3417

如何隐藏win32 控制台程序的console窗口

如下设置 #pragma   comment(   linker,   "/subsystem:/ "windows/ "   /entry:/ "mainCRTStartup/ " "   )   ...
  • Amy_1007
  • Amy_1007
  • 2010年08月27日 18:10
  • 4968

win32项目与win32控制台应用程序的转换方法

在《精通Windows.API-函数、接口、编程实例》一书中讲Windows API的系统基本服务的内容中,有一个将系统目录信息写入 systemroot.txt的代码实例。由于刚刚接触Windows...
  • sheldonlcy
  • sheldonlcy
  • 2015年02月23日 14:07
  • 1207

在Win32控制台程序中添加Windows窗口

在Win32 控制台程序中添加对话框或窗口
  • lxfjsks
  • lxfjsks
  • 2010年11月13日 22:57
  • 3667

Win32控制台应用程序、Win32项目、MFC应用程序的区别与联系

1、  区别 (1)Win32控制台程序,没有界面,只有命令符。生成的“.exe”文件直接运行操作即可。 (2)Win32项目,有界面。但是界面里面的控件,基本上要自己去实现。 (3)MFC应用...
  • zhao1999qian
  • zhao1999qian
  • 2017年02月25日 16:41
  • 3819

win32程序中调用控制台程序

#include #include #define ErrorShow(Msg) MessageBox(NULL,Msg,L"ErrorShow",MB_OK) void OnKeyProc...
  • u014660247
  • u014660247
  • 2016年04月18日 03:16
  • 157

win32控制台应用程序不显示窗口启动

在声明前加入以下语句: #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )...
  • taotaox
  • taotaox
  • 2017年07月16日 00:06
  • 584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【win32程序控制台】练习题:简易计算器(液晶显示屏显示)
举报原因:
原因补充:

(最多只允许输入30个字)