c语言编写的程序:计算器、泊车管理
根据给定的信息,我们可以推断出这是一个用C语言编写的简单程序示例,涉及两个主要的应用场景:一个简易计算器和一个停车管理系统。然而,提供的代码片段仅展示了与计算器相关的部分,因此下面的知识点将集中于该计算器应用。 ### 1. C语言基础库 在程序的开头部分,可以看到包含了多个C语言的基础库头文件,如`<dos.h>`、`<math.h>`等。这些头文件提供了不同的功能: - `<dos.h>`:提供了对DOS操作系统的一些基本访问功能。 - `<math.h>`:提供数学函数支持,例如三角函数、指数函数等。 - `<conio.h>`:提供了一些控制台输入输出的功能,如读取键盘输入而不回显。 - `<stdio.h>`:标准输入输出库,用于处理文件和控制台的输入输出操作。 - `<stdlib.h>`:标准库,提供一些通用的函数,如内存分配、环境参数处理等。 - `<stdarg.h>`:可变参数列表的支持。 - `<graphics.h>`:图形库,用于图形界面的绘制。 - `<string.h>`:字符串处理函数,如字符串复制、连接等。 - `<ctype.h>`:字符类型判断函数,如判断字符是否为数字等。 ### 2. 图形库初始化 接下来的代码部分涉及到图形库的初始化。这部分代码主要通过调用`graphics.h`中的函数来设置图形模式,并检查初始化是否成功: - `GraphDriver` 和 `GraphMode` 变量定义了图形驱动和模式,其中 `GraphDriver` 设置为 `DETECT` 表示自动检测最佳驱动。 - `initgraph` 函数用于初始化图形环境,接受驱动、模式以及图形库路径作为参数。 - `graphresult` 函数用于获取初始化结果,如果返回值不是 `grOk`,则表示初始化失败,会输出错误信息并退出程序。 - 此外还获取了当前图形模式的最大颜色数、最大坐标等信息,这些信息对于后续绘制图形非常重要。 ### 3. 计算器实现 程序的主要逻辑在 `computer` 函数中,它实现了计算器的基本功能: - 定义了一个字符数组 `str1` 来存储数字和运算符,这个数组充当了虚拟键盘的角色。 - 使用 `getviewsettings` 获取当前视口的大小信息,以便计算按钮的位置和大小。 - 通过 `setfillstyle` 和 `bar` 绘制按钮背景色;通过 `setcolor` 和 `rectangle` 绘制按钮边框。 - 使用 `outtextxy` 函数输出文本,这里输出的是初始数值“0.”。 - 循环遍历字符数组 `str1` 中的每一个元素,根据位置信息绘制按钮。 ### 4. 控制器实现 虽然控制器部分没有在给定的代码片段中完全展示出来,但可以推测这部分是通过监听键盘输入(如通过`<conio.h>`中的函数)来模拟用户点击按钮的行为,并更新显示区域的数值。具体来说: - 通过 `specialkey` 和 `arrow` 函数可以获取用户的键盘输入,比如数字键或方向键。 - 根据输入的字符,更新 `num1` 和 `num2` 的值,并执行相应的数学运算。 - 最终的结果通过 `result` 变量保存,并通过图形界面显示出来。 此C语言程序通过一系列基础库的调用实现了图形界面下的简易计算器功能,不仅涵盖了C语言的基础语法和图形库的使用方法,也展示了如何通过简单的数学运算来实现计算器的核心功能。
#include <math.h> /*数学函数的定义*/
#include <conio.h> /*屏幕操作函数*/
#include <stdio.h> /*I/O函数*/
#include <stdlib.h> /*库函数*/
#include <stdarg.h> /*变量长度参数表*/
#include <graphics.h> /*图形函数*/
#include <string.h> /*字符串函数*/
#include <ctype.h> /*字符操作函数*/
#define UP 0x48 /*光标上移键*/
#define DOWN 0x50 /*光标下移键*/
#define LEFT 0x4b /*光标左移键*/
#define RIGHT 0x4d /*光标右移键*/
#define ENTER 0x0d /*回车键*/
void *rar; /*全局变量,保存光标图象*/
struct palettetype palette; /*使用调色板信息*/
int GraphDriver; /* 图形设备驱动*/
int GraphMode; /* 图形模式值*/
int ErrorCode; /* 错误代码*/
int MaxColors; /* 可用颜色的最大数值*/
int MaxX, MaxY; /* 屏幕的最大分辨率*/
double AspectRatio; /* 屏幕的像素比*/
void drawboder(void); /*画边框函数*/
void initialize(void); /*初始化函数*/
void computer(void); /*计算器计算函数*/
void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/
void mwindow(char *header); /*窗口函数*/
int specialkey(void) ; /*获取特殊键函数*/
int arrow(); /*设置箭头光标函数*/
/*主函数*/
{
initialize();/* 设置系统进入图形模式 */
computer(); /*运行计算器 */
closegraph();/*系统关闭图形模式返回文本模式*/
return(0); /*结束程序*/
}
/* 设置系统进入图形模式 */
void initialize(void)
{
int xasp, yasp; /* 用于读x和y方向纵横比*/
GraphDriver = DETECT; /* 自动检测显示器*/
initgraph( &GraphDriver, &GraphMode, "" );
/*初始化图形系统*/
ErrorCode = graphresult(); /*读初始化结果*/
if( ErrorCode != grOk ) /*如果初始化时出现错误*/
{
printf("Graphics System Error: %s\n",
grapherrormsg( ErrorCode ) ); /*显示错误代码*/
exit( 1 ); /*退出*/
}
getpalette( &palette ); /* 读面板信息*/
MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/
MaxX = getmaxx(); /* 读屏幕尺寸 */
MaxY = getmaxy(); /* 读屏幕尺寸 */
getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/
AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/
}
/*计算器函数*/
void computer(void)
剩余10页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- stable diffusion InstantID的antelopev2模型
- 四叶草全球服直装.apk
- java毕业设计-基于SSM的私人牙科诊所管理系统【代码+部署教程】
- 哈夫曼树,共20页,内容简洁有效,干货满满,一份材料搞定哈夫曼树
- 《TCPIP协议》PPT课件,共71页,内容丰富,适合自学或教学使用
- 基于Java语言的Spring4.x中文Spring框架设计源码参考文档
- C/C++编程技巧之前后置递增运算符解析与应用
- 计算机科学:C++中链表数据结构详解及其基本操作实现
- 基于PyTorch的Alpha Sigma围棋游戏模型:基于Alpha Zero算法的强化学习与蒙特卡洛树搜索设计源码
- IPv4子网划分详解与实践