小学生学C++编程 (C风格的输入与输出)
2026/4/21 18:58:08 网站建设 项目流程

一、🏰《数字王国的传声筒》

—— C 风格输入输出(scanf / printf)奇幻故事课

1、认识两位主角 🎭

C++ 王国里,有一条古老又强大的魔法体系,叫做:

C 风格输入输出

它的两位主角是:

名字作用
🧙‍♂️ scanf听别人说话(输入)
🧙‍♀️ printf大声念出来(输出)

2、printf:会“念稿子”的播音员 🎤

1️⃣ 最简单的 printf

printf("Hello World!");

📢 播音员说:

Hello World!

👉双引号里的内容,原封不动念出来


2️⃣ printf 会“留空位”等数字 📦

如果你想说:

“我今年 10 岁”

就不能直接写死数字,而是:

int age = 10; printf("我今年 %d 岁", age);

🧩%d是什么?

它是一个占位符,意思是:

“这里等一个整数来!”


3、printf 的“变形金刚符号”大全 🤖

🎯 常用格式符

符号意思举例
%d整数10
%f小数3.14
%c字符'A'
%s字符串"cat"
%lld很大的整数long long
printf("%d %f %c %s", 10, 3.14, 'A', "cat");

📢 输出:

10 3.140000 A cat

(注意:小数默认打印 6 位)


4、控制小数:小数精灵 ✨

1️⃣ 控制小数点后几位

printf("%.2f", 3.14159);

📢 输出:

3.14

🧠 规则:

%.2f→ 保留2 位小数


2️⃣ 让数字“站得整整齐齐” 📏

printf("%5d", 12);

📢 输出:

12

解释:

  • 总共 5 个位置

  • 数字只有 2 位

  • 前面补空格


3️⃣ 左对齐 vs 右对齐 🧍‍♂️🧍‍♀️

printf("|%5d|\n", 12); printf("|%-5d|\n", 12);

📢 输出:

| 12| |12 |

🧠 小口诀:

  • %5d右对齐

  • %-5d左对齐


4️⃣ 用 0 补位(像时间一样) ⏰

printf("%05d", 42);

📢 输出:

00042

5、scanf:会“听指令”的小机器人 🤖

1️⃣ 最基础用法

int x; scanf("%d", &x);

🧠 故事理解:

  • %d:我要一个整数

  • &x:把听到的数,放进 x 的盒子里

⚠️& 非常重要!
没有它,机器人不知道往哪放数据!


2️⃣ 一次听多个数字 👂👂

int a, b; scanf("%d %d", &a, &b);

输入:

3 5

3️⃣ 听小数、字符、字符串 🎶

double d; char c; char s[20]; scanf("%lf", &d); scanf(" %c", &c); // 注意前面的空格! scanf("%s", s);

🧠 为什么%c前要加空格?

因为:

键盘里可能还残留一个“回车键幽灵” 👻
加空格可以吃掉它!


6、scanf 的“精准读取魔法” 🎯

1️⃣ 限制字符串长度(防止炸掉) 💥

char name[6]; scanf("%5s", name);

最多只读5 个字符(留 1 个给结尾)


2️⃣ 按固定格式读取(高级) 🧩

int h, m; scanf("%d:%d", &h, &m);

输入:

12:30

7、printf + scanf 完整小故事 🌈

#include <cstdio> int main() { int age; double score; printf("请输入你的年龄:"); scanf("%d", &age); printf("请输入你的分数:"); scanf("%lf", &score); printf("你今年 %d 岁,考试得了 %.1f 分!\n", age, score); return 0; }

📢 输出示例:

你今年 10 岁,考试得了 98.5 分!

8、给小学生的终极口诀 🧠✨

🪄 printf 口诀

有 % 就要给
给的顺序不能乱
想要几位写几位

🪄 scanf 口诀

scanf 读数据
变量前面要加 &
字符注意空格吃


9、C 风格 vs C++ 风格(悄悄说) 🤫

风格特点
scanf / printf快、严谨、竞赛常用
cin / cout好理解、适合初学

二、🏆 小学生 → 竞赛级

——C风格 输入与输出格式专项训练

🟢 第一阶段:入门稳固(1–5 题)

目标:不写错、不慌、不乱


✅ 第 1 题:最基础输出

题目

输出下面一句话(完全一样):

I love C++!
参考答案
printf("I love C++!");
解析
  • 字符串原样输出

  • 不涉及变量和格式符


✅ 第 2 题:整数输出

题目

定义一个整数x = 8,输出:

x = 8
参考答案
int x = 8; printf("x = %d", x);
解析
  • %d对应int

  • 一个%对应一个变量


✅ 第 3 题:多个整数

题目

输入两个整数a b,输出:

a+b=?
参考答案
int a, b; scanf("%d %d", &a, &b); printf("a+b=%d", a + b);
解析
  • scanf读整数必须加&

  • 输出中=+都是普通字符


✅ 第 4 题:小数默认输出

题目

输入一个double,直接输出它

参考答案
double x; scanf("%lf", &x); printf("%f", x);
解析
  • double%lf

  • printf%f打印

  • 默认6 位小数


✅ 第 5 题:字符与整数混合

题目

输入一个字符和一个整数,输出:

A 10
参考答案
char c; int x; scanf(" %c %d", &c, &x); printf("%c %d", c, x);
解析
  • %c前的空格:吃掉回车

  • 混合输入要注意顺序


🟡 第二阶段:格式控制(6–10 题)

目标:整齐、好看、可控


✅ 第 6 题:控制小数位数

题目

输入一个小数,输出保留 2 位

参考答案
double x; scanf("%lf", &x); printf("%.2f", x);
解析
  • %.2f:保留两位,四舍五入


✅ 第 7 题:右对齐输出

题目

输出整数42,占 5 个位置

参考答案
printf("|%5d|", 42);
解析
  • 不够的位置用空格补在左边

  • 默认右对齐


✅ 第 8 题:左对齐输出

题目

同样占 5 个位置,但左对齐

参考答案
printf("|%-5d|", 42);
解析
  • -表示左对齐


✅ 第 9 题:0 补位

题目

输出一个三位数,不足补 0
输入:7
输出:

007
参考答案
int x; scanf("%d", &x); printf("%03d", x);
解析
  • 0:用 0 补位

  • 3:总宽度


✅ 第 10 题:宽度 + 精度

题目

输出小数,占 6 位,保留 1 位

参考答案
double x; scanf("%lf", &x); printf("%6.1f", x);
解析
  • 6:总宽度

  • .1:小数位数


🟠 第三阶段:字符串与表格(11–15 题)

目标:竞赛中最容易丢分的地方


✅ 第 11 题:字符串输入输出

题目

输入一个名字,比如Tom , 输出:

Hello, Tom
参考答案
char s[20]; scanf("%s", s); printf("Hello, %s", s);
解析
  • 字符数组不用&

  • %s遇空格会停


✅ 第 12 题:限制字符串长度

题目

最多读 5 个字符

参考答案
char s[6]; scanf("%5s", s);
解析
  • 留 1 位给\0

  • 防止数组越界(竞赛必考)


✅ 第 13 题:整齐表格(一行)

题目
输出:
|Tom | 95|
参考答案
printf("|%-5s|%3d|", "Tom", 95);
解析
  • 字符串左对齐

  • 数字右对齐


✅ 第 14 题:多行表格

题目
输出:
|Tom | 95| |Bob |100|
参考答案
printf("|%-5s|%3d|\n", "Tom", 95); printf("|%-5s|%3d|\n", "Bob", 100);

✅ 第 15 题:固定格式输入

题目

输入时间12:30

参考答案
int h, m; scanf("%d:%d", &h, &m);
解析
  • :必须完全匹配

  • 格式不对 → 读失败


🔴 第四阶段:竞赛级 IO(16–20 题)

目标:不翻车、不卡题、不 WA


✅ 第 16 题:多组输入直到 EOF

参考答案
int x; while (scanf("%d", &x) == 1) { printf("%d\n", x); }
解析
  • scanf返回成功读入的个数

  • EOF 是竞赛常见输入方式


✅ 第 17 题:cin + printf 混用(安全版)

ios::sync_with_stdio(false); cin.tie(nullptr); int x; cin >> x; printf("%d\n", x);
解析
  • 关闭同步,避免慢或乱序


✅ 第 18 题:高精度输出

题目

输出 15 位小数

参考答案
double x; scanf("%lf", &x); printf("%.15f", x);

✅ 第 19 题:long long 输入输出

参考答案
long long x; scanf("%lld", &x); printf("%lld", x);
解析
  • %lld是竞赛必背


✅ 第 20 题:综合终极题 ⭐

题目
输入:
Tom 95.5
输出:
Name: Tom Score: 095.50
参考答案
char name[20]; double score; scanf("%s %lf", name, &score); printf("Name: %s\n", name); printf("Score: %06.2f\n", score);
解析
  • 06:宽度 6,不足补 0

  • .2:保留两位

  • 竞赛输出最常见组合


三、🎉 总结

🧠输入输出不是“语法”,而是“规则 + 细节 + 习惯”

做完这 20 题,你已经:

  • ✅ 达到NOIP / CSP 入门级 IO 水平

  • ✅ 不再害怕输出格式题

  • ✅ 能一眼看出题目在“卡你什么格式”

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询