当前位置: 首页 > article >正文

[连载] C++ 零基础入门-4.C++ 键盘输入 cin 一步一步学

作者咏方舟-长江支流 日期2026-03-15免费《C 零基础到底层实战-全套31篇 · 体系化教程》从环境安装→基础语法 → 面向对象 → 多线程 → 智能指针 → 鸿蒙原生开发一套打通桌面开发 / 嵌入式 / 鸿蒙 / 高薪底层开发。这是主线篇带你先跑通、先学会、先建立信心。如果您喜欢请收藏同时针对每一篇免费推出【C 刨根问底】因为很多教程要么太表面只教怎么写不讲为什么广度优先而一上来就猛讲底层原理又太深、太抽象越听越懵深度优先。刨根问底篇等你有基础了再带你挖透本质、真正精通。如果你觉得好请点赞刨根问底才能真正懂得本质知其然不知其所以然从来不是我们程序员该有的态度。 C零基础入门 · 第 4 篇C 键盘输入 cin 一步一步学✅ 标准C ️ Windows VS2022 鸿蒙 DevEco Linux GCC macOS Clang 标准C跨平台说明本系列所有代码均采用标准C不依赖任何平台特有API。今天学习的HelloWorld今后可以直接运行在鸿蒙Native C工程、Linux、macOS等任何支持标准C的环境。VS2022/2026是我们高效的开发工具但你的代码属于全平台。【C 零基础入门】第 4 篇C 键盘输入 cin 一步一步学本节目标熟练掌握从键盘输入数据的方法运用cin实现基本数据类型的输入操作。能够利用cin完成简单加法计算器的编程实现深入理解输入与计算逻辑的结合运用。一、引言在 C 编程中与用户进行交互获取数据是一项基础且重要的技能。cin作为 C 标准库提供的输入流对象承担着从键盘读取数据的关键任务。通过本篇内容我们将深入了解cin的使用方式并通过简单加法计算器示例切实掌握如何将用户输入与程序逻辑相结合。二、从键盘输入数据一cin的基本使用cin用于从标准输入通常即键盘读取数据并借助提取运算符将数据存储到指定变量中。在使用前需先声明与输入数据类型匹配的变量。例如在前面的章节[连载] C 零基础入门-3.C变量与数据类型 一步一步实战中我们在屏幕上打印学生信息直接申明了变量age并赋值初始这里我们以申明整型变量age为例由键盘输入并将输入的整数赋值给age变量然后打印到屏幕代码如下#include iostream using namespace std; int main() { // 定义变量 int age ; cout 请输入年龄 endl; cin age; cout 年龄 age endl; return 0; }此例中程序提示输入年龄等待用户在键盘输入一个整数输入完成后回车该整数将被存储到 age 变量中然后在屏幕上显示年龄及输入的数字。二连续读取多个数据cin支持连续读取多个数据只需依次在后列出接收数据的变量即可。比如int num1, num2; cin num1 num2;此时用户可在一行内输入两个整数以空格、制表符或换行符分隔建议用回车程序会将其分别存储到num1和num2中。三输入类型匹配问题确保输入数据类型与变量类型匹配至关重要。若输入类型不匹配如尝试将字符串输入到int类型变量会导致输入失败cin会设置错误标志影响后续输入操作。如下例int num; cin num; // 若输入 abc输入失败为应对这种情况可在输入后检查cin状态并进行相应处理例如为前面输入年龄代码加上检查当输入不是整数时提示输入错误并清空错误标志#include iostream using namespace std; int main() { // 定义变量 int age 0; cout 请输入年龄 endl; cin age; if (cin.fail()) { cout 输入错误请输入一个有效的整数。 endl; cin.clear(); // 清除错误标志 cin.ignore(numeric_limitsint::max(), \n); //忽略输入缓冲区中的错误数据 } cout 年龄 age endl; return 0; }三、完成简单加法计算器下面以输入两个整数计算它们的和为例 演示cin功能读者可以应用上面的cin.fail()知识点完善程序。完整代码#include iostream using namespace std; int main() { int a, b; // 输入 cout 请输入第一个整数; cin a; cout 请输入第二个整数; cin b; // 计算 int sum a b; cout 两数之和 sum endl; return 0; }一代码逐行解析1.包含头文件#include iostream#include指令用于将iostream头文件包含进程序该头文件包含了输入输出流相关的定义是使用cin和cout的必要前提。2.使用命名空间using namespace std;通过这行代码我们告知编译器在当前作用域内直接使用std命名空间中的标识符这样就可以直接写cin和cout而无需写成std::cin和std::cout。不过在大型项目中为避免潜在的命名冲突可能更倾向于显式使用std::前缀。3.变量声明int a, b;声明两个int类型变量a和b用于存储用户输入的两个整数为后续加法运算做准备。4.输入环节cout 请输入第一个整数; cin a; cout 请输入第二个整数; cin b;先使用cout输出提示信息引导用户输入第一个整数随后cin将用户输入的值读取并存储到a中。接着再次通过cout提示输入第二个整数cin读取并存储到b。5.计算过程int sum a b;将变量a和b相加并把结果存储在新变量sum中完成加法计算。其中 为赋值符。6.输出结果cout 两数之和 sum endl;利用cout将计算得到的两数之和输出。endl不仅起到换行作用还会刷新输出缓冲区确保数据及时显示。7.返回值return 0;main函数返回0按照惯例表示程序正常结束。四、总结通过本节学习我们达成了从键盘输入数据以及完成简单加法计算器的目标深入掌握了cin的使用方法及其在实际编程中的应用。在后续学习中我们将进一步探索 C 输入输出流库的更多功能提升编程能力。若在学习过程中有任何疑问欢迎随时交流。同时请思考输入类型匹配问题中应用cin.fail()检测了输入错误如何让程序不仅提示让用户输入正确的值而且直到输入正确为止请在评论区说出你的答案...感谢您读到这里如果这篇文章或连载博文对您有所启发欢迎点赞收藏、分享↗️ 给更多需要的朋友。您的每一次互动爱心❤️ 都是我持续深耕技术、分享干货的最大动力。关注我学习实用技术分享快乐声明本文作者咏方舟-长江支流相应内容版权归原作者所有如需转载请保留完整的内容及出处。

相关文章:

[连载] C++ 零基础入门-4.C++ 键盘输入 cin 一步一步学

作者:咏方舟-长江支流 日期:2026-03-15 免费《C 零基础到底层实战-全套31篇 体系化教程》,从环境安装→基础语法 → 面向对象 → 多线程 → 智能指针 → 鸿蒙原生开发,一套打通:桌面开发 / 嵌入式 / 鸿蒙 / 高薪底层…...

安装Android开发环境

1.下载&安装Android Studio a.打开浏览器,在地址栏输入网址“https://developer.android.google.cn/”,进入谷歌安卓开发者中文官网。 b.在主页面找到“下载Android Studio”按钮,点击进入下载页面,下载最新版AndroidStudio。…...

智能搜索新选择:通义千问3-VL-Reranker-8B部署与API调用教程

智能搜索新选择:通义千问3-VL-Reranker-8B部署与API调用教程 你是否曾为搜索结果不够精准而烦恼?比如在电商平台找“适合户外运动的红色背包”,结果搜出来的商品图片里背包却是蓝色的。或者想找一段“海边日落”的视频素材,系统却…...

基于GD32F303的便携式教学数字示波器设计

1. 项目概述基于GD32F303RCT6微控制器构建的便携式简易数字示波器,面向嵌入式系统学习、基础信号观测及教学实验场景设计。该系统在保持硬件精简与成本可控的前提下,实现了直流至200kHz带宽的实时波形采集、触发显示与人机交互功能。整机采用单板集成架构…...

Lingbot-Depth-Pretrain-ViTL-14 构建智能监控系统:人群密度估计与异常行为检测

Lingbot-Depth-Pretrain-ViTL-14 构建智能监控系统:人群密度估计与异常行为检测 你有没有想过,为什么传统的监控摄像头有时候会“数错人”?比如在一条长长的走廊里,远处的人看起来很小,近处的人看起来很大&#xff0c…...

【异常】解决Attu连接超时No connection established. Last error: connect ETIMEDOUT 10.x.x.x:19530

解决 connect ETIMEDOUT 连接超时问题 在日常开发和运维过程中,我们经常会遇到网络连接超时类错误,这类问题往往涉及网络、服务、配置等多个层面,本文将以 connect ETIMEDOUT 错误为例,详细解析报错原因及完整解决思路。 一、报错内容 No connection established. Last …...

重装系统后快速恢复CasRel模型开发环境:镜像与依赖一键还原

重装系统后快速恢复CasRel模型开发环境:镜像与依赖一键还原 重装系统,对开发者来说,简直是场噩梦。辛辛苦苦搭建好的Python环境、CUDA驱动、各种深度学习框架,还有那个调了无数参数才跑起来的CasRel模型项目,一夜之间…...

http错误码来自底层SDK的哪个头文件里面定义的

HTTP 错误码在你这套实现里,主要来自底层 QURL SDK。对应关系是:通用层 am_http_error_t.err_code 的值,是在 oshttp.c:192-196、oshttp.c:203-207、oshttp.c:344-349 这些地方,直接把底层 qurl_ecode_t ret 填进去的。 底层 API …...

SpatialGlue:双注意力机制驱动的空间多组学整合新范式

1. SpatialGlue:当空间多组学遇上双注意力机制 第一次听说SpatialGlue这个工具时,我正在处理一组小鼠大脑皮层的空间转录组数据。当时最头疼的问题就是——如何把不同组学数据里的空间信息"粘合"在一起?传统方法要么忽略空间位置&a…...

STM32F4 CAN通信库函数实战:从零构建车载数据收发节点

1. 为什么选择STM32F4的CAN通信 如果你正在开发车载电子系统,比如车身控制单元(BCU)或者仪表盘通信模块,CAN总线绝对是绕不开的技术。我在汽车电子行业摸爬滚打多年,见过太多工程师被CAN通信的底层协议搞得头大。其实STM32F4系列内置的CAN控制…...

Windows下Python进程监控与自动化管理实践

1. Windows下Python进程管理入门指南 在Windows系统上运行Python脚本时,经常会遇到需要监控脚本运行状态、自动重启崩溃进程或者更新代码后重新加载的场景。比如你开发了一个爬虫程序需要724小时运行,或者部署了一个Web服务需要保证高可用性。手动操作不…...

StructBERT零样本分类-中文-base降本增效:相比Fine-tuning节省87%标注与训练成本

StructBERT零样本分类-中文-base降本增效:相比Fine-tuning节省87%标注与训练成本 想象一下,你手头有10万条中文文本需要分类,传统方法需要标注数据、训练模型、调优参数,整个过程耗时耗力。现在告诉你:不用标注一条数据…...

CLIP ViT-H-14图像特征服务效果展示:食品菜品识别、包装盒文字无关匹配

CLIP ViT-H-14图像特征服务效果展示:食品菜品识别、包装盒文字无关匹配 1. 服务概述 CLIP ViT-H-14图像编码服务是基于laion2B-s32B-b79K预训练模型的图像特征提取解决方案。这项服务将先进的视觉-语言预训练模型封装为易用的API和Web界面,特别适合需要…...

Linux下VCS+Verdi联合仿真避坑指南:从编译选项到波形调试全流程

Linux环境下VCS与Verdi高效联调实战手册 引言 在数字芯片验证领域,仿真工具链的熟练使用直接决定验证效率。Synopsys VCS作为业界领先的编译型仿真器,配合Verdi强大的波形调试能力,已成为IC验证工程师的标配工具组合。但在实际项目中&#xf…...

L-BFGS优化算法避坑指南:路径平滑中梯度计算常见的5个错误与修正方法

L-BFGS优化算法避坑指南:路径平滑中梯度计算常见的5个错误与修正方法 在机器人路径规划、自动驾驶轨迹优化等场景中,L-BFGS算法因其内存效率和收敛速度成为路径平滑的首选工具。但许多开发者在实现过程中常因梯度计算的细节问题导致算法无法收敛或得到次…...

避开这3个坑!用GPT-SoVITS克隆自己声音时90%新手会犯的错误

避开这3个坑!用GPT-SoVITS克隆自己声音时90%新手会犯的错误 当你第一次听到AI用你的声音说出从未讲过的话时,那种震撼感无与伦比。但现实往往很骨感——多数人第一次尝试语音克隆得到的不是"数字分身",而是充满机械杂音的"电子…...

合泰HT32芯片开发避坑指南:从Pack下载到固件库移植的完整流程

合泰HT32芯片开发实战:从环境搭建到外设移植的深度解析 对于习惯了STM32生态的工程师来说,初次接触合泰HT32系列芯片可能会遇到不少困惑。以HT32F52342为代表的新一代合泰MCU,虽然在性能价格比上颇具优势,但开发环境的搭建、固件库…...

Outlook账户登录失败?5步彻底清理缓存和凭据(附注册表路径)

Outlook账户登录故障终极解决指南:从缓存清理到系统级修复 你是否经历过这样的场景:明明Microsoft账户密码正确,网页版和其他设备都能正常登录,偏偏在某台电脑的Outlook客户端反复提示输入密码,甚至出现"抱歉&…...

从机械振动到电力系统:智能故障诊断领域的中文核心期刊全解析

从机械振动到电力系统:智能故障诊断领域的中文核心期刊全解析 在工业4.0和智能制造的大背景下,智能故障诊断技术正成为保障设备安全运行的关键支撑。无论是旋转机械的异常振动监测,还是电力变压器的绝缘劣化预警,精准的故障识别算…...

Android多屏异显开发避坑指南:Surface/BufferQueue API的正确打开方式

Android多屏异显开发实战:从SurfaceFlinger到BufferQueue的深度解析 在智能家居控制面板、车载双屏系统以及商业展示设备等场景中,Android多屏异显技术正成为开发者必须掌握的技能。不同于简单的屏幕镜像,真正的多屏异显需要精确控制每个显示…...

NI VeriStand实战:5分钟搞定LabVIEW模型导入与实时测试应用搭建

NI VeriStand实战:5分钟搞定LabVIEW模型导入与实时测试应用搭建 对于许多从事实时测试与硬件在环仿真的工程师来说,时间就是最宝贵的资源。项目周期不断压缩,测试需求日益复杂,如何在保证系统可靠性的前提下,快速构建一…...

Jmeter接口测试:使用教程(上)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter是一款小巧,轻便、开源的性能测试工具,它也可以很方便的进行接口测试。下面我就带大家学习下jmeter接口测试。一、Jmeter简介Jmeter是…...

图解关键路径算法:用乐高积木理解AOE网与工程进度控制

用乐高积木搭建关键路径算法:从玩具到项目管理实战 想象一下你正在用乐高积木搭建一座微型城市——需要先铺地基才能立起大楼,完成道路才能通车,而喷泉装饰可以最后添加。这个看似简单的建造过程,其实隐藏着工程项目管理的核心逻辑…...

从Hi-Fi到TWS耳机:现代音频功放技术演进全解析(2023版)

从Hi-Fi到TWS耳机:现代音频功放技术演进全解析(2023版) 十年前,发烧友们还在为甲类功放的"胆味"争论不休,如今工程师们讨论的焦点已变成如何将D类功放的THDN控制在0.001%以下。这场静悄悄的技术革命正在重塑…...

ComfyUI-Manager完全掌握指南:从环境配置到高级应用的实践路径

ComfyUI-Manager完全掌握指南:从环境配置到高级应用的实践路径 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager ComfyUI-Manager是ComfyUI生态中一款不可或缺的扩展管理工具,它通过直观的界面和…...

两地三中心避坑指南:为什么你的异地灾备中心不敢切换流量?

两地三中心灾备实战:如何让冷备中心真正"热"起来? 当机房A的告警短信在凌晨三点响起时,技术团队的第一反应往往是"先排查问题"而非"立即切换流量"。这种犹豫背后,是无数企业投入巨资建设的异地灾备…...

nlp_structbert_sentence-similarity_chinese-large领域自适应实践:向垂直行业语料微调

NLP StructBERT 领域自适应实践:向垂直行业语料微调 最近在做一个医疗问答项目时,遇到了一个挺典型的问题:我们用的通用语义相似度模型,在处理“心悸”和“心慌”这类专业术语时,总是判断它们不太相关。这显然不符合医…...

SecGPT-14B作品分享:自动生成OWASP ASVS 4.0合规检查清单与测试用例

SecGPT-14B作品分享:自动生成OWASP ASVS 4.0合规检查清单与测试用例 1. SecGPT-14B简介 SecGPT是由云起无垠推出的开源大语言模型,专门针对网络安全领域设计开发。该模型于2023年正式发布,旨在通过人工智能技术提升安全防护的效率和效果。 …...

机器人也能搞创作?具身智能如何引爆机器人的创造力革命

机器人也能搞创作?具身智能如何引爆机器人的创造力革命 当机器人能理解“温馨”并为你布置房间,甚至能捏陶艺、做实验时,一场由“具身智能”驱动的创造力革命,正悄然到来。 引言 长久以来,机器人的形象被固化在流水线…...

LightOnOCR-2-1B与LangChain框架结合:构建智能文档问答系统

LightOnOCR-2-1B与LangChain框架结合:构建智能文档问答系统 1. 引言 想象一下这样的场景:你手头有几百份PDF格式的技术文档、合同文件或研究报告,需要快速找到某个特定问题的答案。传统的方法是逐个文件翻阅,或者使用简单的关键…...