news 2026/5/4 18:31:50

小学生学C++编程 (C++风格的输入与输出)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小学生学C++编程 (C++风格的输入与输出)

一、🧙‍♂️《C++ 王国的对话魔法》

—— 学会和电脑“说话”的第一课

在 C++ 王国里,电脑其实是个“小机器人🤖”,
不会主动说话,也不会自己知道答案
👉 你必须教会它两件事:

1️⃣怎么听你说话(输入)
2️⃣怎么把话说出来(输出)

今天我们就来学这两种“魔法”。


1、先认识两位魔法师 ✨

在 C++ 王国里,有两位非常重要的魔法师:

名字作用记忆方法
cin输入(听)c in→ 把东西“放进来”
cout输出(说)c out→ 把东西“送出去”

2、输出魔法 🗣️ —— cout(电脑说话)

🎯 (1)cout 是干什么的?

👉让电脑在屏幕上显示内容

就像你对电脑说:

“嘿!把这句话写在黑板上!”


🎩 (2)最简单的输出例子

📺 运行结果

Hello, C++!

🧠 (2) 一行一行解释

代码意思
#include <iostream>请来“输入输出魔法书”📖
using namespace std;不用每次都写std::
cout电脑开始说话
<<“送出去”的箭头
"Hello, C++!"要说的话
;这句话说完了

🎯 (4) 输出数字

cout << 10;

输出:

⚠️注意

  • 字符串要加" "

  • 数字不用加" "


🎯 (5) 连续输出(像接火车 🚂)

cout << "我今年" << 10 << "岁";

输出:

我今年10岁

👉<<就像一节一节车厢连起来!


🎯 (6) 换行输出(另起一行)

方法一:\n
cout << "第一行\n"; cout << "第二行\n";
方法二:endl(推荐给小学生)
cout << "第一行" << endl; cout << "第二行" << endl;

3、输入魔法 👂 —— cin(电脑听你说)

🎯 (1) cin 是干什么的?

👉让电脑“听”你在键盘上输入的内容

你对电脑说:

“我来告诉你一个数字,你记好哦!”


🎩 (2) 第一个输入例子

#include <iostream> using namespace std; int main() { int age; cin >> age; cout << age; return 0; }

🧠 (3) 发生了什么?(讲故事版)

1️⃣int age;
👉 准备一个“小盒子📦”,名字叫age

2️⃣cin >> age;
👉 电脑在等你输入
👉 你在键盘上输入一个数字,按回车
👉 数字被放进 age 盒子里

3️⃣cout << age;
👉 电脑把盒子里的东西拿出来说给你听


🎮 (4) 加点提示,更友好 (竞赛考试时,绝对不要加自己的任何注释和提示)

int age; cout << "请输入你的年龄:"; cin >> age; cout << "你的年龄是:" << age << endl;

🖥️ 运行时画面:

请输入你的年龄:10 你的年龄是:10

4、输入 + 输出组合魔法 ✨✨

🎯 例子:计算两数之和

#include <iostream> using namespace std; int main() { int a, b; cout << "请输入第一个数:"; cin >> a; cout << "请输入第二个数:"; cin >> b; cout << "它们的和是:" << a + b << endl; return 0; }

👦 学生输入:

3 5

📺 输出:

它们的和是:8

5、cin 和 cout 的“方向箭头”口诀 🧠

💡超级好记口诀(一定要教!)

👉cin 是右箭头 >>(往盒子里装)
👉cout 是左箭头 <<(往外说)

cin >> 变量 (装进去) cout << 内容 (说出来)

6、常见错误(小学生一定会犯 😄)

❌ 错误 1:忘记分号

cout << "Hello"

❌ 会报错
✅ 每句后面要加;


❌ 错误 2:字符串忘记加双引号

cout << Hello;

❌ 错
✅ 要写:

cout << "Hello";

❌ 错误 3:cin 写反方向

cin << age; // ❌

✅ 正确:

cin >> age;

二、🧙‍♂️《C++ 王国的超级输入输出控制室》

—— 不只是说话,而是“怎么说、说多准、排多齐”


第一幕:为什么 cin / cout 还不够?

🎯 问题抛给学生(非常重要)

老师问:

“如果电脑要读一整句话呢?
比如:Hello C++ World(中间有空格)
cin能不能读?”

👦 学生会说:能吧?

👉错!


第二幕:输入篇(完整版)👂


1、cin —— 一个“怕空格”的听话机器人 🤖

1️⃣ cin 的本质规则(必须讲清)

cin遇到空格 / 回车就停

string s; cin >> s;

输入:

Hello C++ World

结果:

s = "Hello"

📌原因
cin >>只读到第一个“空白字符”为止。


2️⃣ cin 能读什么?

类型是否可用
int / double
char
string(无空格)
一整行(有空格)

2、getline —— “整句话捕捉大师” 🎤

🎯 出场原因

“电脑需要把一句话原封不动地听完!”


1️⃣ 基本用法(必须会)

string s; getline(cin, s);

输入:

Hello C++ World

结果:

s = "Hello C++ World"

2️⃣ getline 的规则(非常重要)

📌getline 会一直读到回车键(Enter)


3、cin + getline 的“超级大坑” ⚠️(一定要重点讲)

❌ 错误示例

int age; string name; cin >> age; getline(cin, name);

输入:

10 Tom

结果:

name = "" (空的!)

😱 为什么?


🧠 真相(老师一定要讲清)

  • cin >> age只读了10

  • 回车符\n还留在输入缓冲区

  • getline一来,直接读到这个回车 → 结束


✅ 正确写法 (在竞赛中尽量避免cin与getline混用)

cin >> age; cin.ignore(); // 忽略一个回车 getline(cin, name);

第三幕:输出篇(真正的“控制输出”)🖨️

现在进入重点内容:
👉cout 不只是输出,而是“怎么输出”


1、控制精度(小数)🎯

1️⃣ 默认情况

double x = 3.1415926; cout << x << endl;

输出:

3.14159

2️⃣ 固定小数位数(必须会)

cout << fixed << setprecision(2) << x << endl;

输出:

3.14

📌记忆法

控制器作用
fixed固定小数
setprecision(n)保留 n 位

3️⃣ 不用 fixed 会怎样?

cout << setprecision(2) << x;

输出:

3.1

📌这是“有效数字”,不是小数位


2、控制宽度(对齐用)📏


1️⃣ setw —— 给输出一个“格子”

cout << setw(5) << 10 << endl;

输出:

10

📌 默认:右对齐


2️⃣ 左对齐 / 右对齐

cout << left << setw(5) << 10 << endl; cout << right << setw(5) << 10 << endl;

输出:

10 10

3️⃣ 表格实例(非常适合课堂)

cout << left; cout << setw(10) << "姓名" << setw(5) << "分数" << endl; cout << setw(10) << "Tom" << setw(5) << 95 << endl; cout << setw(10) << "Lucy" << setw(5) << 88 << endl;

输出:

姓名 分数 Tom 95 Lucy 88

3、填充字符(进阶但很酷 😎)

cout << setfill('*') << setw(6) << 42 << endl;

输出:

****42

4、常用输出控制器总表(一定要掌握)

控制器作用
fixed固定小数
setprecision(n)控制精度
setw(n)控制宽度
left / right左右对齐
setfill(c)填充字符
endl换行+刷新

第四幕:综合实战(有学习含量 💥)

🎯 成绩单程序(cin + getline + 所有输出控制)

#include <iostream> #include <iomanip> using namespace std; int main() { string name; double score; cout << "请输入学生姓名:"; getline(cin, name); cout << "请输入成绩:"; cin >> score; cout << "\n===== 成绩单 =====\n"; cout << left; cout << setw(10) << "姓名" << setw(10) << "成绩" << endl; cout << setw(10) << name << setw(10) << fixed << setprecision(2) << score << endl; return 0; }

三、📘 C++ 风格输入输出专项训练:


🟢 第一阶段:基础输入输出(1–5)

第 1 题:你好,C++

题目
使用cout输出一行文字:

Hello C++

【训练目标】

  • cout

  • 字符串输出

  • 分号


第 2 题:输出数字

题目
输出数字12345(不加引号)。

【训练目标】

  • 数字输出

  • 字符串 vs 数字的区别


第 3 题:输入一个整数

题目
输入一个整数n,输出它。

【训练目标】

  • cin >>

  • 变量


第 4 题:输入两个整数

题目
输入两个整数ab,输出它们的和。

【训练目标】

  • 连续输入

  • 表达式输出


第 5 题:输入并提示

题目
提示用户输入年龄,并输出:

你的年龄是:X

【训练目标】

  • 提示语输出

  • 输入 + 输出组合


🟡 第二阶段:cin 的规则与坑(6–9)


第 6 题:字符串(无空格)

题目
输入一个不包含空格的名字,用cin读取并输出。

【训练目标】

  • cin >> string

  • cin 遇空格停止


第 7 题:一句话(有空格)

题目
输入一整句话(可能包含空格),原样输出。

【训练目标】

  • getline

  • 区分 cin / getline


第 8 题:先数字,后整行

题目
先输入一个整数,再输入一整行字符串,分别输出。

【训练目标】

  • cin + getline

  • 输入缓冲区问题

⚠️本题必须正确处理回车


第 9 题:多行输入

题目
连续输入 3 行文字,使用getline读取,并逐行输出。

【训练目标】

  • 多次getline

  • 行输入概念


🟠 第三阶段:小数与精度控制(10–13)


第 10 题:输出浮点数

题目
输入一个double,直接输出。

【训练目标】

  • 浮点输入输出

  • 默认精度


第 11 题:保留 2 位小数

题目
输入一个浮点数,保留 2 位小数输出

【训练目标】

  • fixed

  • setprecision


第 12 题:保留 3 位小数

题目
输入两个浮点数,输出它们的平均值,保留 3 位小数。

【训练目标】

  • 浮点运算

  • 精度控制


第 13 题:有效数字 vs 固定小数

题目
输入一个浮点数:

  • 第一行用setprecision(3)输出

  • 第二行用fixed + setprecision(3)输出

【训练目标】

  • 理解两种精度含义的区别


🔵 第四阶段:宽度、对齐、表格(14–17)


第 14 题:控制输出宽度

题目
输出数字42,占 5 个字符宽度。

【训练目标】

  • setw

  • 默认右对齐


第 15 题:左对齐

题目
输出字符串"Tom",占 10 个字符宽度,左对齐。

【训练目标】

  • left

  • 宽度 + 对齐


第 16 题:右对齐

题目
输出字符串"Tom",占 10 个字符宽度,右对齐。

【训练目标】

  • right


第 17 题:成绩表

题目
输入 2 个学生的姓名和成绩,按下表格式输出:

姓名 成绩 Tom 95.50 Lucy 88.00

【训练目标】

  • getline + cin

  • setw

  • fixed + setprecision

  • 表格输出


🔴 第五阶段:竞赛级输入输出(18–20)


第 18 题:多组数据

题目
第一行输入整数n,接下来输入n个整数,逐个输出。

【训练目标】

  • 循环 + 输入输出

  • 比赛常见格式


第 19 题:严格格式输出

题目
输入一个整数x,输出格式如下(注意空格和对齐):

Value: x

其中x占 5 个字符宽度,右对齐。

【训练目标】

  • 精确格式控制

  • OJ 判题思维


第 20 题:综合终极题(I/O 大魔王)

题目
输入:

  • 一行姓名(可能有空格)

  • 一个整数年龄

  • 一个浮点数成绩

输出格式要求:

  • 姓名左对齐,占 15

  • 年龄右对齐,占 5

  • 成绩保留 2 位小数,占 8

【训练目标】

  • cin + getline

  • 缓冲区处理

  • 所有输出控制综合

  • 竞赛级 I/O 能力


四、C++ 风格输入输出专项训练

—— 参考答案与详细讲解

🟢 第 1 题:你好,C++

✅ 参考答案

#include <iostream> using namespace std; int main() { cout << "Hello C++"; return 0; }

🧠 讲解

  • cout:C++ 风格输出

  • "Hello C++":字符串,必须加双引号

  • ;:一句话结束

  • 程序从main开始,从return 0结束


🟢 第 2 题:输出数字

✅ 参考答案

#include <iostream> using namespace std; int main() { cout << 12345; return 0; }

🧠 讲解

  • 数字不是字符串

  • 不需要双引号

  • "12345"12345是完全不同的东西


🟢 第 3 题:输入一个整数

✅ 参考答案

#include <iostream> using namespace std; int main() { int n; cin >> n; cout << n; return 0; }

🧠 讲解

  • cin >> n:把键盘输入的整数放进变量n

  • cout << n:把变量里的值输出

  • 箭头方向记忆法:

    • cin >>:装进去

    • cout <<:拿出来


🟢 第 4 题:输入两个整数求和

✅ 参考答案

#include <iostream> using namespace std; int main() { int a, b; cin >> a >> b; cout << a + b; return 0; }

🧠 讲解

  • cin >> a >> b:连续输入

  • a + b:可以直接写在cout

  • 不需要中间变量


🟢 第 5 题:带提示的输入输出

✅ 参考答案

#include <iostream> using namespace std; int main() { int age; cout << "请输入你的年龄:"; cin >> age; cout << "你的年龄是:" << age; return 0; }

🧠 讲解

  • 提示语只是普通输出

  • 输入不会自动换行,是否换行由程序员决定


🟡 第 6 题:字符串(无空格)

✅ 参考答案

#include <iostream> #include <string> using namespace std; int main() { string name; cin >> name; cout << name; return 0; }

🧠 讲解

  • cin >> string遇到空格就停

  • 只能读一个“单词”

  • 非常重要的规则


🟡 第 7 题:一句话(有空格)

✅ 参考答案

#include <iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); cout << s; return 0; }

🧠 讲解

  • getline:读整行

  • 一直读到回车为止

  • 专门用来处理“有空格的输入”


🟡 第 8 题:先数字,后整行(重点)

✅ 参考答案

#include <iostream> #include <string> using namespace std; int main() { int n; string s; cin >> n; cin.ignore( ); getline(cin, s); cout << n << endl; cout << s << endl; return 0; }

🧠 讲解(必须讲清)

  • cin >> n读完数字后,回车还留在缓冲区

  • getline一来就读到了这个回车

  • cin.ignore():清理缓冲区

  • 这是竞赛必会坑


🟡 第 9 题:多行输入

✅ 参考答案

#include <iostream> #include <string> using namespace std; int main() { string s; for (int i = 0; i < 3; i++) { getline(cin, s); cout << s << endl; } return 0; }

🧠 讲解

  • 每次getline读一整行

  • 非常常见的输入形式(作文、日志)


🟠 第 10 题:输出浮点数

✅ 参考答案

#include <iostream> using namespace std; int main() { double x; cin >> x; cout << x; return 0; }

🧠 讲解

  • 默认输出不是全部小数

  • C++ 会自动控制精度


🟠 第 11 题:保留 2 位小数

✅ 参考答案

#include <iostream> #include <iomanip> using namespace std; int main() { double x; cin >> x; cout << fixed << setprecision(2) << x; return 0; }

🧠 讲解

  • fixed:固定小数位

  • setprecision(2):保留 2 位

  • 比赛中极其常用


🟠 第 12 题:平均值(3 位小数)

✅ 参考答案

#include <iostream> #include <iomanip> using namespace std; int main() { double a, b; cin >> a >> b; double avg = (a + b) / 2; cout << fixed << setprecision(3) << avg; return 0; }

🧠 讲解

  • 浮点计算要用double

  • 精度控制只影响输出,不影响计算


🟠 第 13 题:精度对比

✅ 参考答案

#include <iostream> #include <iomanip> using namespace std; int main() { double x; cin >> x; cout << setprecision(3) << x << endl; cout << fixed << setprecision(3) << x << endl; return 0; }

🧠 讲解(非常重要)

  • 没有fixed:有效数字

  • fixed:小数位数

  • 这是很多 WA 的根源


🔵 第 14 题:宽度控制

✅ 参考答案

#include <iostream> #include <iomanip> using namespace std; int main() { cout << setw(5) << 42; return 0; }

🧠 讲解

  • setw(5):占 5 个字符

  • 默认右对齐


🔵 第 15 题:左对齐

✅ 参考答案

#include <iostream> #include <iomanip> using namespace std; int main() { cout << left << setw(10) << "Tom"; return 0; }

🧠 讲解

  • left是状态,会一直生效

  • 常用于表格输出


🔵 第 16 题:右对齐

✅ 参考答案

#include <iostream> #include <iomanip> using namespace std; int main() { cout << right << setw(10) << "Tom"; return 0; }

🧠 讲解

  • right是默认状态

  • 数字通常右对齐更好看


🔵 第 17 题:成绩表

✅ 参考答案

#include <iostream> #include <iomanip> #include <string> using namespace std; int main() { string name1, name2; double s1, s2; cin >> name1 >> s1; cin >> name2 >> s2; cout << left; cout << setw(10) << "姓名" << setw(10) << "成绩" << endl; cout << setw(10) << name1 << fixed << setprecision(2) << setw(10) << s1 << endl; cout << setw(10) << name2 << fixed << setprecision(2) << setw(10) << s2 << endl; return 0; }

🧠 讲解

  • setw每次只作用于下一个输出

  • 精度控制是状态

  • 表格输出是竞赛必备技能


🔴 第 18 题:多组数据

✅ 参考答案

#include <iostream> using namespace std; int main() { int n, x; cin >> n; for (int i = 0; i < n; i++) { cin >> x; cout << x << endl; } return 0; }

🧠 讲解

  • 第一行是“控制数量”的输入

  • OJ 中极其常见


🔴 第 19 题:严格格式

✅ 参考答案

#include <iostream> #include <iomanip> using namespace std; int main() { int x; cin >> x; cout << "Value:" << setw(5) << right << x; return 0; }

🧠 讲解

  • 判题系统空格不允许多也不允许少

  • 格式不对 = WA


🔴 第 20 题:终极综合题

✅ 参考答案

#include <iostream> #include <iomanip> #include <string> using namespace std; int main() { string name; int age; double score; getline(cin, name); cin >> age >> score; cout << left << setw(15) << name; cout << right << setw(5) << age; cout << fixed << setprecision(2) << setw(8) << score; return 0; }

🧠 讲解(竞赛级)

  • getline + cin混用

  • 对齐 + 宽度 + 精度

  • 这是完整 I/O 能力的体现


五、总结一句话(最后给学生)

C++ 输入输出不是“会用就行”,
而是“格式对不对,直接决定你 AC 还是 WA”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 17:29:23

BabylonJS开发:从入门到资深

目录 第一章&#xff1a;启航&#xff01;三维世界的入场券 1.1 WebGL与BabylonJS&#xff1a;你的浏览器里藏着一个宇宙 3D图形学极简史&#xff1a;从三角形到元宇宙 BabylonJS的“超能力清单”&#xff1a;为什么选它&#xff1f; 环境搭建&#xff1a;Node.js、TypeScr…

作者头像 李华
网站建设 2026/5/4 2:52:31

JavaScript概述

JavaScript概述 Js的书写方式主要有三种 行内式&#xff1a;在 HTML 标签中直接编写 <button onclick"alert(点击)">点我一下</button>内嵌式&#xff1a;通过 标签在 HTML 中嵌入 JS 代码 <body><script>alert(Hello JavaScript)</scrip…

作者头像 李华
网站建设 2026/5/4 9:16:23

Git协作开发实战指南:从拉取代码到安全提交

&#x1f680; 完整操作流程&#xff08;7步法&#xff09;第1步&#xff1a;拉取代码到本地bash# 克隆项目到本地 git clone 项目地址 cd 项目目录第2步&#xff1a;确认当前分支状态bash# 查看本地分支&#xff08;当前分支前有*号标记&#xff09; git branch# 查看所有分支…

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

【Java毕设源码分享】基于springboot+vue的高校会议室预订管理系统设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 19:32:10

【Java毕设源码分享】基于springboot+vue的高校教务管理系统设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华