程序设计基础实验大作业一
- EasyX函数
- 核心函数
- 全局的核心函数(三个模块都涉及的)
- standard
- science
- bignumber
- 清空函数
void memsenumber()
- 小数部分相减函数
MyChar *numbersubx(MyChar *ss, MyChar *ss1)
- 整数部分相减函数
MyChar *numbersub(MyChar *ss, MyChar *ss1)
- 整数部分相加函数
MyChar *numberadd(MyChar *ss, MyChar *ss1)
- 小数部分相加函数
MyChar *numberaddx(MyChar *ss, MyChar *ss1)
- 高精度加法函数
void bignumberadd()
- 高精度减法函数
void bignumbersubtract()
- 高精度乘法函数
void bignumbermuit()
- 高精度除法函数
void bignumberdiv()
- 清空函数
- 存在的问题
EasyX函数
putimage
函数putimage()将一个先前保存在内存中的图像输出到屏幕上。
函数原型为void putimage(int left,int top,void *buf,int ops);
solidrectangle
这个函数用于画无边框的填充矩形。
函数原型为void solidrectangle(int left,int top,int right,int bottom);
,参数分别为左部,顶部,右部,底部的坐标
setfillcolor
这个函数用于设置当前设备填充颜色。
函数原型为void setfillcolor(COLORREF color);
line
此函数用于绘制直线。
函数原型为void line( int x1, int y1, int x2, int y2)
参数:x1,直线起始点的x坐标;y2,直线起始点的y坐标;x2,直线终点的x坐标;y2,直线终点的y坐标;
GetHWnd
这个函数用于获取绘图窗口句柄。
函数原型为HWND GetHWnd();
,没有参数,返回值为获取绘图窗口的句柄
DrawText
该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)。
函数原型为intDrawText(HDC hdc, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat);
参数:
hdc:设备环境句柄。
lpString:指向将被写入的字符串的指针,如果参数nCount是-1,则字符串必须是以\0结束的。如果uFormat包含DT_MODIFYSTRING,则函数可为此字符串增加4个字符,存放字符串的缓冲区必须足够大,能容纳附加的字符。
nCount:指向字符串中的字符数。如果nCount为-1,则lpString指向的字符串被认为是以\0结束的,DrawText会自动计算字符数。
lpRect:指向结构RECT的指针,其中包含正文将被置于其中的矩形的信息(按逻辑坐标)。
uFormat:指定格式化正文的方法。它可以下列值的任意组合,各值描述如下:
initgraph
initgraph函数是用来初始化绘图窗口的
定义声明如下
HWND initgraph(
int width,
int height,
int flag = NULL
);
参数的意义:
width
和height
分别表示绘图窗口的宽度和高度;flag
表示绘图窗口的样式,默认为NULL,也可以为以下值
该函数有返回值,返回新建窗口的句柄
SetWindowText
定义声明如下
BOOL SetWindowTextA(
[in] HWND hWnd,
[in, optional] LPCSTR lpString
);
第一个参数是获得句柄,第二个参数是文本字符串
比如代码中SetWindowText(GetHWnd(), _T("计算器"));
,GetHWnd()
就是获得窗口的句柄,_T("计算器")
就是文本字符串,其中_T
是用来进行unicode/ansi版本匹配的
GetTickCount
GetTickCount
函数返回从操作系统启动到现在所经过的毫秒数,它的返回值是DWORD
MouseHit与GetMouseMsg
首先需要定义一个MOUSEMSG
变量,然后可以使用MouseHit
函数判断是否有鼠标信息(一般使用嵌套while
循环多次判断),然后GetMouseMsg
,再根据鼠标信息执行相应操作
鼠标信息有:
WM_LBUTTONDOWN
:鼠标左键按下消息
WM_LBUTTONUP
:鼠标左键弹起消息参数和按下一样
当用户在窗口的客户区域中按住鼠标左键时,会发布WM_LBUTTONDOWN
消息。如果未捕获鼠标,则该消息会发布到光标下方的窗口中。否则,消息将发布到已捕获鼠标的窗口
BeginBatchDraw
这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上,直到执行FlushBatchDraw
或EndBatchDraw
才将之前的绘图输出
setbkmode
SetBkMode
是背景模式,参数为
对透明的理解:在窗体或控件输出的字符串或图形是有背景色的。而窗体或控件也是有背景色的。这两种背景色一般是不同的, 这样输出图形或字符串时,两种背景(窗体或控件的背景色、符串或图形的背景色)重叠在一起了,影响美观,为了不让这两种背景重叠,可以设置背景模式为TRANSPARENT(透明的),即让输出的字符串或图形的背景色不可见。可以这样理解:把输出的字符串或图形的背景色看成是一物体,窗体或控件看成另一物体,字符串或图形在窗体或控件前面挡住窗体或控件了(因为输出 的字符串或图形是画在窗体或控件上的,所以可以这么类比),但是透过字符串或图形能看到窗体或控件。即字符串或图形的背 景色所代表的物体是透明的。
BeginBatchDraw与EndBatchDraw
运行BeginBatchDraw
后,所有的绘图都不再显示在屏幕上,而是在内存中进行
直到碰到EndBatchDraw
,之前所有在内存中绘图的成品将一并展示在屏幕中
setfillstyle
函数setfillstyle()
为各种图形函数设置填充图样和颜色,调用方式为void setfillstyle(int pattern,int color);
settextstyle
设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小,此函数调用方式为void settextstyle(int font,int direction,int charsize);
。font
为文本字体参数,direction
为文本显示方向,charsize
为字符大小参数
outtextxy
该函数在屏幕上的指定点
函数原型为void outtextxy(int x,int y,const char *str)
,分别为坐标与要输出的字符串
settextcolor
这个函数用于设置当前文字颜色
setlinecolor
这个函数用于设置当前画线颜色
InputBox
显示一个输入框,并提示用户在文本框中输入文本、数字或选中某个单元格区域,当按下确定按钮后返回包含文本框内容的字符串。
InputBox(Prompt[,Title][,Default][,Xpos][,Ypos][,Helpfile,Context])
参数说明:
(1) Prompt,必需的参数,作为输入框中提示信息出现的字符串,其最大长度约为1024个字符,由所使用字符的宽度决定。如果Prompt包含多个行,则可在各行之间用回车符(Chr(13))、换行符(Chr(10))或回车换行符的组合(Chr(13)&Chr(10))来分隔。
(2) Title,可选的参数,作为输入框标题栏中的字符串。若省略该参数,则在标题栏中显示应用程序名称。
(3) Default,可选的参数,作为输入框中默认的字符串,在没有其它输入时作为缺省值。若省略该参数,则文本框为空。
(4) Xpos,可选的参数,为数值,成对出现,指定输入框的左边与屏幕左边的水平距离。若省略该参数,则输入框在水平方向居中。
(5) Ypos,可选的参数,为数值,成对出现,指定输入框的上边与屏幕上边的距离。若省略该参数,则输入框在屏幕垂直方向距下边约三分之一的位置。
(6) Helpfile,可选的参数,为字符串,表示帮助文件,用该文件为输入框提供上下文相关的帮助。若有Helpfile,则必须有Context。
(7) Context,可选的参数,为数值,帮助文件中某帮助主题的上下文编号。若有Context,则必须有Helpfile。
SetWorkingImage
这个函数用于设定当前的绘图设备。
void SetWorkingImage(IMAGE* pImg = NULL);
将要绘图的设备的句柄放入函数参数即可
核心函数
全局的核心函数(三个模块都涉及的)
执行计算器功能函数void updatewithinput_()
读取鼠标信息,修改变量的值并改变结果然后输出到计算器上
图形化界面函数void showscreen_()
构造计算器的图形化界面
standard
中缀表达式转后缀表达式函数void change()
通过栈这一数据结构将人类习惯的中缀表达式转化为计算机习惯的后缀表达式
计算后缀表达式函数void calculate()
通过栈这一数据结构计算后缀表达式的值
入栈函数void push(T c)
形参T c
是即将进入栈顶的元素
出栈函数void pop()
将栈顶元素弹出
判断栈空函数bool empty()
判断栈是否为空,返回值为
取出栈顶函数T top()
取出栈顶的元素,返回栈顶元素
清空栈函数void clearstack()
将栈清空
science
运算函数void judge(int &n, int &m, int k = 0)
n
表示上一次运算的方式,m
表示这一次运算的方式
bignumber
清空函数void memsenumber()
将数组全部清空以便进行运算
小数部分相减函数MyChar *numbersubx(MyChar *ss, MyChar *ss1)
这一个函数用来在小数部分将两个数相减,其中*ss
是被减数,*ss1
是减数;返回结果的指针
整数部分相减函数MyChar *numbersub(MyChar *ss, MyChar *ss1)
这一个函数用来在整数部分将两个数相减,其中*ss
是被减数,*ss1
是减数;返回结果的指针
整数部分相加函数MyChar *numberadd(MyChar *ss, MyChar *ss1)
这一个函数用来在整数部分将两个数相加,其中*ss
和*ss1
是两个加数;返回结果的指针
小数部分相加函数MyChar *numberaddx(MyChar *ss, MyChar *ss1)
这一个函数用来在小数部分将两个数相加,其中*ss
和*ss1
是两个加数;返回结果的指针
高精度加法函数void bignumberadd()
这一个函数用来进行高精度加法,其中的辅助函数是上述提到的四个函数。首先将整数部分和小数部分各自分开,然后进行加法(其中正数加负数可以等价于正数减去负数的绝对值,所以要用到MyChar *numbersubx
和MyChar *numbersub
两个函数)
高精度减法函数void bignumbersubtract()
这一个函数用来进行高精度减法
高精度乘法函数void bignumbermuit()
这一个函数用来进行高精度乘法
高精度除法函数void bignumberdiv()
这一个函数用来进行高精度除法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理