火龙信奥
  • 分享
  • 课程
  • 题库
  • CSES HARD
    • GESP
    • CSP
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • e课堂
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

第 3 课《第一个 C++ 程序与输出》

作者: 作者的头像   huolong , 时间:2026-09-07 13:53:51 , 所有人可见, 阅读  2

第 3 课:第一个 C++ 程序与输出

本课学习目标: 1. 读懂最简单的 C++ 程序结构,认识 main 函数是程序执行的入口。 2. 掌握 cout 语句的用法,会输出文字、数字、变量和表达式。 3. 掌握 printf 语句的用法,会使用 %d、%% 以及 %2d / %02d 格式控制。 4. 彻底分清双引号以内(原样输出)与双引号以外(计算/找变量值)的巨大区别。 5. 掌握空格、换行(endl / \n)的控制方式。


一、 一个最完整的最小 C++ 程序

先看一段经典的 C++ 基础代码:

#include <iostream>
using namespace std;

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

运行后输出:

Hello, GESP!

逐行拆解:

  1. #include <iostream>:引入输入输出流头文件。以后只要用了 cout 或 cin,就必须写这一行。
  2. using namespace std;:使用标准命名空间。有了它,我们才能直接写 cout,否则需要写成繁琐的 std::cout。
  3. int main() { ... }:主函数。它是整个程序执行的唯一入口,计算机运行程序时会从 main 里面第一行开始执行。
  4. return 0;:表示程序正常结束。

二、 顺序结构:从上到下执行

C++ 程序中的语句默认是按照从上到下的顺序依次执行的。

int main() {
    cout << "A";
    cout << "B";
    cout << "C";
    return 0;
}
  • 输出结果:ABC(三者连在一起,因为中间没有写空格或换行)。

三、 使用 cout 进行输出

cout 是 C++ 最常用的输出工具,使用 << 符号连接输出内容。

1. 输出文字(加双引号)

  • 双引号包裹的内容叫字符串常量。双引号里的内容会原样输出,双引号本身不打印。
  • 代码:cout << "Hello"; ➡️ 输出:Hello
  • 陷阱题:cout << "a+b"; ➡️ 输出:a+b(里面是文字,不会去计算加法)。

2. 输出数字(不加双引号)

  • 代码:cout << 123; ➡️ 输出:123(数字直接写,代表数值本身)。

3. 连续输出多个内容

  • 用多个 << 连起来:
  • 代码:cout << "3+4=" << 3 + 4;
  • 输出:3+4=7
  • 解析:"3+4=" 在双引号内,原样输出;后面的 3 + 4 在双引号外,计算出结果 7。

四、 🚨 核心考点:双引号内外的区别(丢分重灾区)

考试中最喜欢考学生能不能分清双引号里面和外面:

代码写法 输出结果 核心原因
int a = 3, b = 4;
cout << "a+b=" << a + b;
a+b=7 "a+b="在双引号内原样输出;a+b在双引号外,计算变量和结果为 7。
int a = 3, b = 4;
cout << "a+b=a+b";
a+b=a+b 所有内容都在双引号内,程序只当成普通文字,完全不计算。
int N = 10;
cout << "N*N";
N*N 双引号内原样输出,不会输出 100。
int N = 10;
cout << N * N;
100 没有双引号,计算变量表达式的值。

💡 避坑口诀:“双引号内原样抄,双引号外求数值”。


五、 空格与换行的控制

  • 空格:
  • 写在双引号里的空格会直接输出(如 cout << "Hello GESP";)。
  • 也可以单独输出空格:cout << "Hello" << " " << "GESP";
  • 换行:
  • 方法 1:使用 endl ➡️ cout << "Hello" << endl; cout << "GESP";
  • 方法 2:在字符串中使用 \n ➡️ cout << "Hello\nGESP";
  • 两者效果相同,都会让光标跳到下一行。
  • 注意:输出语句之间不会自动加空格,也不会自动换行!

六、 进阶:使用 printf 输出(C 风格输出)

GESP 一级真题非常喜欢考 C 风格的 printf,尤其是格式化占位符。使用时需包含头文件 #include <cstdio>。

1. 基本占位符 %d(输出整数)

int a = 10;
printf("%d", a);  // 输出 10
  • 多变量对应: cpp int a = 3, b = 4; printf("%d+%d=%d", a, b, a + b); // 输出 3+4=7 前面的三个 %d 严格按顺序对应后面的变量 a、b、a + b。

2. 输出百分号 %%

在 printf 的双引号中,% 有特殊用途(用来引导 %d)。如果你想在屏幕上打印一个真正的 % 符号,必须写成两个百分号 %%。 * 代码:printf("5%%2=%d", 5 % 2); * 输出:5%2=1

3. 宽度控制与补零(高频难点)

  • %2d:代表输出的整数至少占 2 个字符宽度。如果数字本身只有 1 位,前面会补一个空格。
  • printf("%2d", 3); ➡️ 输出:3(前面有 1 个空格)
  • %02d:代表输出的整数至少占 2 个字符宽度,如果不足 2 位,前面补数字 0。
  • printf("%02d", 3); ➡️ 输出:03
  • printf("%02d%02d", 3, 22); ➡️ 输出:0322

七、 GESP 一级真题与例题精讲

练一练 1:printf 里的百分号转义

【题目】 下面程序的输出是()。

#include <cstdio>
int main() {
    printf("5%%2={%d}\n", 5 % 2);
    return 0;
}

A. 1={1}
B. 5%2={5%2}
C. 5%2={1}
D. 5 ={1}

正确答案:C 名师解析: %% 在 printf 中会折叠输出一个普通的 %,所以 5%%2= 会变成 5%2=;后面的 %d 对应 5 % 2 的计算结果 1;大括号 {} 是普通字符原样输出。合起来就是 5%2={1}。


练一练 2:%02d 宽度补零

【题目】 下面程序的输出是()。

#include <cstdio>
int main() {
    printf("%02d%02d", 3, 22);
    return 0;
}

A. 322
B. 0322
C. 3022
D. 003022

正确答案:B 名师解析: 第一个格式控制符是 %02d,数字 3 不足两所以在前面补 0,变成 03;第二个是 %02d,数字 22 刚好两位,输出 22。合起来就是 0322。


练一练 3:cout 陷阱辨析

【题目】 下面程序的输出是()。

#include <iostream>
using namespace std;
int main() {
    int N = 10;
    cout << "N*N=" << N * N;
    return 0;
}

A. N*N=100
B. 100=100
C. N*N=N*N
D. 10*10=100

正确答案:A 名师解析: "N*N=" 在双引号内,所以原样输出 N*N=;而后面的 N * N 在双引号外,计算变量乘积得到 100。连起来即为 N*N=100。

—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com

关于火龙

  • 关于我们
  • 学员获奖
  • 预约试听
  • ACM课程
  • CSP课程
  • 学习指南

帮助中心

  • 用户协议
  • 打字练习 HOT
  • 在线画图
  • DevC++下载
  • CSP报名
  • GESP官网

推荐课程

  • C++零基础入门(可试看)
  • C++进阶提升
  • GESP考级辅导
  • GESP打卡
  • CSP-J/S打卡

公众号

火龙信奥公众号二维码

© 2017-2026 义乌市睿码科技有限公司版权所有 浙ICP备2021013995号

火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码