#7376. 2026/6/15/HSJ笔记(输入输出)

2026/6/15/HSJ笔记(输入输出)

📚 编程复习笔记

🗓️ 2026年6月10日 — 6月16日


🎯 本周学习路线:从第一行代码 Hello,World! 出发,掌握输出输入算术运算图形输出,一步步搭建编程基础!


🟢 专题一:程序入门 — 输出与输入

📌 1.1 Hello, World!

题目:P1218

请输出一行内容:Hello,World!(中间没有空格)

🎯 核心知识:学会用 cout 输出文字

#include <iostream>
using namespace std;

int main() {
    cout << "Hello,World!" << endl;
    return 0;
}

⚠️ 易错点

❌ 常见错误 ✅ 正确写法
Hello World!(多了空格) Hello,World!(逗号后无空格)
忘了 endl\n 输出后加换行
中英文标点混用 英文逗号 , 不是中文逗号

💡 小贴士endl = end line,表示换行。每次输出最后都记得加!


📌 1.2 A+B Problem

题目:P1

输入两个整数 A 和 B,输出 A+B 的值

🎯 核心知识:学会用 cin 读入数据

#include <iostream>
using namespace std;

int main() {
    int A, B;
    cin >> A >> B;
    cout << A + B << endl;
    return 0;
}

🔑 输入输出模板(所有题目的骨架):

┌─────────────────────────────────────────┐
│  #include <iostream>                    │
│  using namespace std;                   │
│                                         │
│  int main() {                           │
│      // 1. 声明变量                     │
│      // 2. 读入数据 (cin >> ...)        │
│      // 3. 计算处理                     │
│      // 4. 输出结果 (cout << ... << endl)│
│      return 0;                          │
│  }                                      │
└─────────────────────────────────────────┘

⚠️ 易错点

❌ 常见错误 ✅ 正确做法
cin << A(方向反了) cin >> A(箭头指向变量)
cout >> A+B(方向反了) cout << A+B(箭头从变量指出)
忘了声明变量 int A, B; 先声明再使用

💡 记忆口诀cin>>(数据流入变量),cout<<(数据流出变量)


🔵 专题二:算术运算

📌 2.1 A×B 问题

题目:P952

输入两个正整数 A 和 B(1 ≤ A,B ≤ 10000),输出 A×B 的值

🎯 核心知识:乘法运算符 * + 数据类型选择

#include <iostream>
using namespace std;

int main() {
    int A, B;
    cin >> A >> B;
    cout << A * B << endl;
    return 0;
}

⚠️ 重点关注 — 数据范围

A, B 最大 10000
A × B 最大 = 10000 × 10000 = 100,000,000(1亿)

int 范围:约 ±21亿 → ✅ 本题用 int 够用

但如果 A, B 可以到 10⁹ 呢?
10⁹ × 10⁹ = 10¹⁸ → int 存不下!必须用 long long

💡 安全习惯:看到乘法,先想"结果会不会超 int?"拿不准就用 long long


📌 2.2 计算 (a+b)×c 的值

题目:P462

输入三个整数 a, b, c,计算 (a+b)×c

#include <iostream>
using namespace std;

int main() {
    int a, b, c;
    cin >> a >> b >> c;
    cout << (a + b) * c << endl;
    return 0;
}

🎯 核心知识:运算符优先级 + 括号

数学写法:    (a+b)×c
C++ 写法:    (a + b) * c     ← 必须加括号!

如果写成 a + b * c → C++ 会算成 a + (b*c),结果完全不同!
数学 C++ 含义
(a+b)×c (a + b) * c ✅ 先加后乘
a+b×c a + b * c ❌ 先乘后加(数学也是这样,但容易写错)
a÷c a / c ⚠️ 整数除法(向下取整)
a mod c a % c 取余数

📌 2.3 计算 (a+b)/c 的值

题目:P459

输入三个整数 a, b, c,计算 (a+b)÷c

#include <iostream>
using namespace std;

int main() {
    int a, b, c;
    cin >> a >> b >> c;
    cout << (a + b) / c << endl;
    return 0;
}

⚠️ 整数除法陷阱(重要!):

7 / 2 = 3    (不是 3.5!小数部分直接丢弃)
5 / 3 = 1    (不是 1.67!)
-7 / 2 = -3  (向零取整,不是 -4)

口诀:整数除整数,结果还是整数,小数直接砍掉

💡 题目保证 c ≠ 0,所以不用担心除以零。但以后写代码要记得检查!


🟡 专题三:图形输出

🎯 核心思想:图形输出 = 把题目要求的每一行逐行cout 输出来!


📌 3.1 输出星号矩形

题目:P4440

输出 3 行 4 列的星号矩形

****
****
****
#include <iostream>
using namespace std;

int main() {
    cout << "****" << endl;
    cout << "****" << endl;
    cout << "****" << endl;
    return 0;
}

🔑 方法:题目怎么画,你就怎么写——一行一行 cout

💡 3 行内容一样?那就写 3 行 cout,简单直接!


📌 3.2 输出直角三角形

题目:P4441

输出 3 行直角三角形

*
**
***
#include <iostream>
using namespace std;

int main() {
    cout << "*" << endl;
    cout << "**" << endl;
    cout << "***" << endl;
    return 0;
}

🔑 观察规律

第1行:1个*  →  "*"
第2行:2个*  →  "**"
第3行:3个*  →  "***"

每一行星号数量 = 行号

💡 不用想复杂了,图形题就是看清楚题目要什么,原样输出!


📌 3.3 输出倒直角三角形与数字组合图形

题目:P4442

上半部分:3 行星号倒三角;下半部分:两行数字

***
**
*
123
321
#include <iostream>
using namespace std;

int main() {
    cout << "***" << endl;
    cout << "**" << endl;
    cout << "*" << endl;
    cout << "123" << endl;
    cout << "321" << endl;
    return 0;
}

🔑 分段输出

上半部分(倒三角):
  第1行:3个*  →  "***"
  第2行:2个*  →  "**"
  第3行:1个*  →  "*"

下半部分(数字):
  第4行:123
  第5行:321

两部分之间没有空行,直接接着写 cout 就好!

📌 3.4 输出菱形数字图案

题目:P4443

输出 5 行菱形数字图案,每行总宽度 5 个字符

  1
 222
33333
 222
  1
#include <iostream>
using namespace std;

int main() {
    cout << "  1" << endl;
    cout << " 222" << endl;
    cout << "33333" << endl;
    cout << " 222" << endl;
    cout << "  1" << endl;
    return 0;
}

🔑 空格是关键!

  1      → 2个空格 + 1个1(共5字符)
 222     → 1个空格 + 3个2(共5字符)
33333    → 0个空格 + 5个3(共5字符)
 222     → 1个空格 + 3个2(共5字符)
  1      → 2个空格 + 1个1(共5字符)

⚠️ 最容易出错的地方

❌ 错误 ✅ 正确
空格数数错了 用尺子量或在纸上一个一个数
行末多了空格 行末不要加多余空格
只看了数字忘了空格 空格也是输出内容的一部分!

💡 小技巧:把每行内容用引号括起来,连空格一起原样写在 cout 里!


📌 3.5 输出长方形

题目:P6387

输出 4 行 7 列的星号长方形

*******
*******
*******
*******
#include <iostream>
using namespace std;

int main() {
    cout << "*******" << endl;
    cout << "*******" << endl;
    cout << "*******" << endl;
    cout << "*******" << endl;
    return 0;
}

💡 和矩形题一样的思路,只是行数和列数变了——4行7列!


📊 本周知识体系总览

                    编程入门
                   ┌───┴───┐
               输出与输入     算术运算
              ┌──┴──┐    ┌──┴──┐
            cout   cin   加减乘除  运算优先级
              │      │      │        │
          输出文字  读变量  整数除法   括号
                          取余%
                           │
                       图形输出
                    ┌──────┼──────┐
                  矩形   三角形   菱形
                (逐行cout) (逐行cout) (空格是关键)

🔴 本周常见错误汇总

# 错误类型 错误示例 正确做法
1 输出字符串错误 Hello World! Hello,World! 仔细对照题目
2 cin/cout 方向反 cin << / cout >> cin >> cout <<
3 忘记声明变量 直接用 A+B int A, B;
4 运算优先级 a + b * c (a + b) * c 加括号
5 整数除法 以为 7/2=3.5 7/2=3,整数除法砍小数
6 图形漏换行 两行粘在一起 每行末尾加 endl
7 空格数错了 菱形对不齐 在纸上一个一个数空格
8 行末多了空格 看起来对但判题WA 行末不要加多余空格

📋 复习检查清单

✏️ 基础操作

  • [ ] 能独立写出 #includemain 函数框架
  • [ ] 能用 cout 输出指定文字
  • [ ] 能用 cin 读入整数
  • [ ] 分清 >><< 的方向

🔢 算术运算

  • [ ] 知道 C++ 中乘法是 * 不是 ×
  • [ ] 知道 C++ 中除法是 / 不是 ÷
  • [ ] 理解整数除法:7/2 = 3 不是 3.5
  • [ ] 知道取余运算:7%2 = 1
  • [ ] 会用括号控制运算顺序

🎨 图形输出

  • [ ] 会把题目要求的图形逐行用 cout 输出
  • [ ] 知道空格也是输出内容的一部分
  • [ ] 每行输出完记得加 endl 换行
  • [ ] 数空格时仔细,不嫌麻烦

🧠 好习惯

  • [ ] 写代码前先在纸上画出图形,数清每行的空格和字符
  • [ ] 提交前仔细对照题目要求的输出格式
  • [ ] 注意数据范围,判断是否需要 long long

📅 生成时间:2026-06-17 | 内容覆盖:C++ 入门 — 输入输出、算术运算、图形输出