"简易计算器源码" 该简易计算器的源码主要涉及以下几个关键知识点: 1. **C语言基础**:源码是用C语言编写的,涉及到基本的语法结构,如函数定义、变量声明、控制流(if-else,循环等)。 2. **标准库引用**: - `<dos.h>`:提供与DOS系统交互的函数,如`getch()`,`clearscreen()`等。 - `<math.h>`:包含数学函数,如平方根`sqrt()`,幂`pow()`等。 - `<conio.h>`:用于控制台输入输出,如`kbhit()`,`getch()`。 - `<stdio.h>`:标准输入输出库,包含`printf()`,`scanf()`等。 - `<stdlib.h>`:标准库,提供内存管理`malloc()`,`free()`等。 - `<stdarg.h>`:用于可变参数列表的函数,如`printf()`。 - `<graphics.h>`:图形库,用于在图形模式下绘制图形。 - `<string.h>`:字符串处理函数,如`strcpy()`,`strlen()`等。 - `<ctype.h>`:字符分类函数,如`isdigit()`检查是否为数字。 - `<bios.h>`:BIOS接口,可能用于低级硬件操作。 3. **图形界面设计**: - `graph()`和`windows()`函数用于初始化图形窗口和设置窗口样式。 - `button()`函数用于创建按钮图形,可能是通过指定位置、颜色和文本来实现。 - `drawmouse()`和`getmouse()`用于鼠标操作,显示和获取鼠标位置,实现用户交互。 4. **屏幕和错误处理**: - `scr()`函数用于更新屏幕内容,可能包括显示计算结果或错误信息。 - `mouse_message()`处理鼠标消息,响应用户的点击事件。 5. **数学运算**: - `qiu_zhi()`函数可能用于求解平方根或其他数学运算。 - `jie_cheng()`函数执行乘法运算,可能是对两个数相乘。 6. **计算器逻辑**: - `calculator(int fun_code)`函数是计算器的核心,根据`fun_code`执行相应的计算操作。 - `clrnum()`可能用于清除输入框的数值。 - `adv()`函数可能提供高级功能,如三角函数、对数等。 7. **自定义常量和宏**: - 定义了一些常量,如按钮的宽度`BWIDTH`,高度`BHEIGHT`,最大屏幕大小`MAX_SCR`,圆周率`PI`等。 - 使用`#define`预处理器指令创建宏,方便代码中的计算和替换。 这个简易计算器程序可能包含一个图形界面,用户可以通过鼠标点击按钮进行加减乘除等基本运算,并且可能还支持更复杂的数学运算。它利用C语言的标准库和图形库来实现用户交互和计算功能。通过阅读和理解这段代码,开发者可以学习到如何在C语言中构建简单的GUI应用以及如何处理用户输入和输出。
/** **** **** *** **** *文件包含****** *** *** ** *****/
#include <dos.h> /*DOS接口函数*/
#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> /*字符操作函数*/
#include <bios.h>
/** **** ***** ******宏代换定义****** ****** *** *****/
#define BWIDTH 50 /*按键条的宽度*/
#define BHEIGHT 30 /*按键条的高度*/
#define MAX_SCR 15
#define PI 3.141592654
/** **** ********** ***声明函数** ****** ** **** *****/
void graph(void); /*画图形函数声明*/
void windows(void); /*绘制窗口界面函数声明*/
void button(int x,int y,int c1,int c2,int c3,char *bt); /*按键函数声明*/
void scr(char scr_main[MAX_SCR],int error); /*屏显函数声明*/
int mouse_message(void); /*鼠标信息函数声明*/
void visbilemouse(void); /*鼠标可视化函数声明*/
void getmouse(int *x,int *y,int *key); /*获得鼠标信息函数声明*/
void drawmouse(int *x,int *y,int *z); /*画鼠标函数声明*/
void jd(int x,int y); /*按钮焦点函数声明*/
void calculator(int fun_code); /*实现计算器功能函数声明*/
void clrnum(int n0,int n1); /*清空Num数组函数声明*/
void adv(void); /*高级函数功能声明*/
long jie_cheng(long n); /*阶乘函数声明*/
/** **** ***** **** ****定义全局变量* ****** **** ****/
int Maxcolor,Maxx,Maxy; /*定义最大颜色数,边界*/
char Num[2][MAX_SCR]={{0},{0}}; /*定义存储数据的二维数组,分别对应双目运算的数据*/
double Memory=0; /*定义内存存储数据*/
int Flag=0,Num_flag=0; /*二维数组的第几维数和第几个数*/
char fun=0; /*功能变量,对应双目运算*/
int Mx,My,Mkey,Mk0=-1; /*定义鼠标的位置和按键状态,初始键值为-1*/
int jd0=-1,jd1=-1; /*定义按键焦点,按鼠标键后返回0~29或-1*/
char function[30]={'Q','M','R','S','P','B','7','4','1','0','C','8','5','2','F','A','9','6','3','.','%','/','*','-','+','e','^','K','D','='}; /*定义按键对应的function[fun_code]*/
char Adv_ch[100]={0}; /*定义表达式数组变量*/
/** **** ***** ** ****** ***主函数** *** *** **** *****/
void main()
{
int message; /*定义通信变量*/
graph(); /*进入图形模式*/
windows(); /*绘制窗口界面*/
visbilemouse(); /*显示鼠标*/
for (;message=mouse_message();)
if (message!=-1) calculator(message); /*用鼠标输入数据mouse-message返回jd1到message*/
closegraph(); /*关闭图形模式*/
} /*message,fun-code,jd1是相互联系的通信变量*/
/** **** **** *** ***进入图形模式** *** *** ** ***** *****/
void graph(void)
{
int GraphDriver=DETECT,GraphMode,ErrorCode;
initgraph( &GraphDriver, &GraphMode, "" ); /*初始化图形系统*/
ErrorCode = graphresult(); /*读初始化结果*/
if( ErrorCode != grOk ) /*如果初始化时出现错误*/
剩余12页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Flex垃圾回收与内存管理:防止内存泄露
- Python编程规范与最佳实践
- EJB3入门:实战教程与核心概念详解
- Python指南v2.6简体中文版——入门教程
- ANSYS单元类型详解:从Link1到Link11
- 深度解析C语言特性与实践应用
- Gentoo Linux安装与使用全面指南
- 牛津词典txt版:信息技术领域的便捷电子书
- VC++基础教程:从入门到精通
- CTO与程序员职业规划:能力提升与路径指南
- Google开放手机联盟与Android开发教程
- 探索Android触屏界面开发:从入门到设计原则
- Ajax实战:从理论到实践
- 探索Android应用开发:从入门到精通
- LM317T稳压管详解:1.5A可调输出,过载保护
- C语言实现SOCKET文件传输简单教程