news 2026/4/15 22:13:22

C语言实现 简易计算器教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言实现 简易计算器教程

制作简易的算术计算器

编写程序实现一个简单的计算器(可实现加减乘除即可)。

要求从键盘输入2个数和一个运算符,输出对应的计算结果。

#include <stdio.h>

int main()
{
double num1, num2, result;
char symbol;

printf("简易计算器\n");
printf("请输入算式(格式:数字 运算符 数字):\n");

if (scanf("%lf %c %lf", &num1,&symbol,&num2) != 3)
{
printf("输入格式错误!\n");
return 1;
}
switch (symbol)
{
case '+':
result = num1 + num2;
printf("%.2lf + %.2lf = %.2lf\n", num1, num2, result);
break;

case '-':
result = num1 - num2;
printf("%.2lf - %.2lf = %.2lf\n", num1, num2, result);
break;

case '*':
case 'x':
case 'X':
result = num1 * num2;
printf("%.2lf * %.2lf = %.2lf\n", num1, num2, result);
break;

case '/':
if (num2 == 0)
{
printf("错误:除数不能为零!\n");
return 1;
}
result = num1 / num2;
printf("%.2lf / %.2lf = %.2lf\n", num1, num2, result);
break;

default:
printf("错误:不支持的运算符 '%c'\n", symbol);
printf("支持的运算符:+ - * / x X\n");
return 1;
}

return 0;
}

📜 代码整体结构

  1. 变量声明:使用double保证计算精度。
  2. 输入与验证:利用scanf的返回值进行一次性格式检查。
  3. 核心逻辑:使用switch语句分发不同的运算任务。
  4. 安全机制:专门处理除数为零的情况。
  5. 输出格式化输出结果,保留两位小数。

🧐 逐行详细解析

1. 变量定义与提示

  • double:这里没有使用floatint,而是选择了double(双精度浮点型)。这是科学计算和工程应用中的标准选择,因为它能提供更高的精度,减少计算误差。
  • 提示语:清晰地告诉用户预期的输入格式(例如10 + 20),这是良好用户交互的第一步。

2. 高级输入验证(亮点)

  • scanf的返回值:这是一个非常专业的用法。scanf函数会返回成功读取并赋值的变量个数
    • 如果用户输入10 + 5scanf成功读取了三个数据,返回3,程序继续。
    • 如果用户输入abc + 5(第一个不是数字),或者只输入了10 +(缺少数据)scanf返回的值就会小于 3。
  • 作用:这一行代码就防止了因为用户乱输入导致程序后续逻辑崩溃的情况,体现了代码的健壮性

3. Switch 分支与多重 Case

  • Case 穿透(Fall-through):注意看乘法部分,连续写了三个case却没有加break
    • 这意味着,如果用户输入*xX,程序都会执行同一块代码(乘法运算)。
    • 用户体验:这非常贴心,因为普通键盘上打不出数学乘号×,用户习惯用字母xX代替,代码完美兼容了这种习惯。

4. 除零保护

  • 逻辑:在执行除法前,必须检查分母(num2是否为 0。
  • 后果:在数学中除以零无意义;在计算机中,浮点数除以零可能得到无穷大(inf),而整数除以零会导致程序直接崩溃。这里通过if判断优雅地拦截了这种错误,并返回错误码1

5. 默认错误处理

  • 如果用户输入了%&等不支持的符号,程序会进入default分支
  • 提示:它不仅报错,还告诉用户“支持哪些运算符”,这是一种非常友好的错误提示设计。

6. 格式化输出

  • %.2lf:这是一个格式控制符。
    • l代表long(对应 double)
    • .2代表保留两位小数。例如输入10 / 3,结果显示为3.33,使界面整洁美观。

📊 功能特性总结

特性代码实现细节优点
精度使用double%lf计算结果准确,支持小数运算
安全性scanf(...) != 3检查防止非法输入导致程序异常
兼容性case 'x': case 'X':符合用户直觉,不仅限于标准符号
防御性if (num2 == 0)避免运行时崩溃(除零错误)
可读性%.2lf输出结果整齐划一,易于阅读
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 22:12:49

Xournal++手写笔记软件:免费开源的多平台数字笔记终极指南

Xournal手写笔记软件&#xff1a;免费开源的多平台数字笔记终极指南 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Window…

作者头像 李华
网站建设 2026/4/15 22:10:31

InstructNav:动态链式导航与多源价值图驱动的零样本通用导航系统

1. InstructNav系统&#xff1a;零样本导航的突破性创新 想象一下&#xff0c;你第一次走进一个完全陌生的商场&#xff0c;手机没电无法使用导航&#xff0c;但身边有位向导能准确理解"先去三楼找奶茶店&#xff0c;然后到五楼电影院"这样的复杂指令——这正是Instr…

作者头像 李华
网站建设 2026/4/15 22:10:29

QT+VTK六自由度机械臂三维仿真:从模型装配到实时运动控制(实践篇)

1. 六自由度机械臂仿真系统概述 六自由度机械臂是工业机器人中最常见的结构之一&#xff0c;它能够实现空间内任意位置和姿态的灵活运动。在机器人研发过程中&#xff0c;三维仿真系统可以帮助工程师在物理样机制作前验证运动算法、测试控制逻辑。QTVTK的组合为我们提供了一个…

作者头像 李华
网站建设 2026/4/15 22:10:28

GOCI遥感数据下载全攻略:从NASA官网、韩国KIOST到迅雷/IDM加速技巧

GOCI遥感数据高效获取指南&#xff1a;多源平台与智能下载方案解析 清晨五点&#xff0c;当大多数城市还在沉睡时&#xff0c;遥感工程师小李已经坐在电脑前&#xff0c;试图从韩国KIOST官网下载最新的GOCI海洋水色数据。屏幕上的下载进度条以KB/s的速度缓慢爬行&#xff0c;而…

作者头像 李华
网站建设 2026/4/15 22:03:27

多模态大模型能效比(Tokens/Watt)提升2.8倍的工业级实践(覆盖ViT+LLM联合剪枝、模态门控蒸馏、内存带宽自适应预取)

第一章&#xff1a;多模态大模型能耗优化策略的工业级演进脉络 2026奇点智能技术大会(https://ml-summit.org) 工业界对多模态大模型&#xff08;如Flamingo、Kosmos、Qwen-VL&#xff09;的部署已从实验室验证全面迈入高吞吐、低延迟、可持续运行的生产阶段&#xff0c;而能耗…

作者头像 李华
网站建设 2026/4/15 21:57:08

【2026交互设计分水岭】:SITS官方未发布但已被3家FAANG紧急采用的多模态一致性评估矩阵(含可运行Python验证工具)

第一章&#xff1a;SITS2026演讲&#xff1a;多模态交互设计 2026奇点智能技术大会(https://ml-summit.org) 核心设计理念 多模态交互设计强调语音、视觉、触觉与上下文感知的协同融合&#xff0c;而非单一通道的叠加。在SITS2026主题演讲中&#xff0c;设计团队提出“意图锚…

作者头像 李华