C语言做的科学转换计算器

科学计算器

一个功能完整的C语言科学计算器,支持基础计算、单位转换和历史记录功能。

功能特性

1. 基础计算器

  • 支持基本运算:+-*/^(幂运算)
  • 支持科学计数法输入:如 1.5e3 表示 1500
  • 浮点数精度处理
  • 运算符优先级处理
  • 除零错误检查

2. 单位转换器

  • 长度转换:米、千米、厘米、毫米、英里、英尺、英寸
  • 重量转换:千克、克、毫克、磅、盎司
  • 温度转换:摄氏度、华氏度、开尔文

3. 历史记录

  • 自动记录所有计算和转换操作
  • 显示时间戳
  • 最多保存100条记录
  • 循环覆盖机制

编译和运行

使用Makefile(推荐)

bash 复制代码
# 编译程序
make

# 运行程序
make run

# 清理编译文件
make clean

# 编译调试版本
make debug

手动编译

bash 复制代码
gcc scientific_calculator.c -o scientific_calculator -lm

运行程序

bash 复制代码
./scientific_calculator

使用说明

主菜单

程序启动后会显示主菜单:

markdown 复制代码
=== 科学计算器 ===
1. 基础计算器
2. 单位转换器
3. 历史记录
4. 退出
================

基础计算器使用

  1. 选择菜单选项 1
  2. 输入表达式,用空格分隔数字和运算符
  3. 支持科学计数法,如:1.5e3 + 2.5e2
  4. 输入 q 返回主菜单

示例:

makefile 复制代码
请输入表达式 (用空格分隔): 2.5 * 3.14 + 1.5e2
结果: 157.85

单位转换器使用

  1. 选择菜单选项 2
  2. 选择转换类型(长度/重量/温度)
  3. 选择源单位和目标单位
  4. 输入数值

示例:

markdown 复制代码
=== 单位转换器 ===
1. 长度转换
2. 重量转换
3. 温度转换

选择长度转换后:
长度单位:
1. 米  2. 千米  3. 厘米  4. 毫米  5. 英里  6. 英尺  7. 英寸
请选择源单位 (1-7): 5
请选择目标单位 (1-7): 2
请输入数值: 1
1 英里 = 1.60934 千米

历史记录查看

  1. 选择菜单选项 3
  2. 查看所有计算和转换记录
  3. 显示格式:序号、表达式、结果、时间

技术特点

知识点实现

  • switch-case:在单位转换和菜单选择中大量使用
  • 浮点数精度处理 :使用 %.6g%.10g 格式化输出
  • 科学计数法 :自定义解析函数 parse_scientific_notation()
  • 数据结构:使用结构体管理历史记录和单位信息
  • 内存管理:动态内存分配和释放

代码结构

  • 模块化设计,功能分离
  • 错误处理和输入验证
  • 跨平台兼容(Windows/Linux)
  • 清晰的代码注释

文件结构

bash 复制代码
scientific_calculator/
├── scientific_calculator.c  # 主程序文件
├── Makefile                 # 编译配置文件
└── README.md               # 说明文档

系统要求

  • C编译器(GCC推荐)
  • 支持C99标准
  • 数学库(-lm)

注意事项

  • 输入表达式时请用空格分隔数字和运算符
  • 科学计数法支持 eE 两种格式
  • 历史记录在程序退出后会丢失
  • 温度转换使用标准转换公式
相关推荐
caimouse10 分钟前
reactos编码规范
c语言·开发语言
星辰徐哥4 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥4 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
明夜之约4 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee4 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐4 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs4 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
毕设源码_郑学姐4 小时前
计算机毕业设计springboot网络相册设计与实现 基于Spring Boot框架的在线相册管理系统开发与应用 Spring Boot驱动的网络影集设计与实践
spring boot·后端·课程设计
辣机小司5 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
码农阿豪5 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端