顺序结构与完整输入输出

一句话目标:写出一个完整程序的”三段式”骨架 —— 读入 → 计算 → 输出,代码从上到下依次执行。

本课承接 02.变量、数据类型与输入输出。变量、类型、运算符已经会了,这节把它们串成一个能跑通的完整程序,并补齐输入输出的几种写法。


第一部分:什么是顺序结构

程序最基本的执行方式:一行一行、从上到下,依次执行,不跳、不回头。
绝大多数题目的主干都是这个固定套路:

1. 读入数据      cin >> ...
2. 进行计算      用运算符算出答案
3. 输出结果      cout << ...

记住这个”三段式”,拿到任何入门题先把这三块框出来,再往里填。


第二部分:两套输入输出

C++ 里有两套 IO,考试都允许,挑顺手的用。

C++ 风格:cin / cout(推荐入门用)

#include <iostream>
using namespace std;
 
int main() {
    int a, b;
    cin >> a >> b;          // 读入
    cout << a + b << endl;  // 输出,endl 换行
    return 0;
}
  • >> 自动按空格/回车分隔,不用关心数据类型。
  • 字符串里有空格、要读一整行时,用 getline(cin, s)

C 风格:scanf / printf(数据量大时更快)

#include <cstdio>
int main() {
    int a, b;
    scanf("%d %d", &a, &b);     // %d 读整数,注意变量前要加 &
    printf("%d\n", a + b);
    return 0;
}
占位符类型
%dint
%lfdouble(读入)
%cchar
%s字符数组

入门阶段用 cin/cout 就够;等数据量到十万级别再换 scanf/printf 提速。


第三部分:小数怎么”好看地”输出

默认输出小数位数不固定。要保留两位小数(货币、平均分常用):

#include <iostream>
#include <iomanip>          // setprecision 在这个头文件里
using namespace std;
 
int main() {
    double pi = 3.14159;
    cout << fixed << setprecision(2);  // 固定两位小数
    cout << pi << endl;                // 输出 3.14
    return 0;
}
  • fixed + setprecision(2) 一起用 = 小数点后固定 2 位
  • 只写一次,后面所有 cout 都生效。

第四部分:完整例题 —— 圆的面积

输入半径 r(小数),输出圆面积,保留两位小数。π 取 3.14159。

按三段式来写:

#include <iostream>
#include <iomanip>
using namespace std;
 
int main() {
    double r;
    cin >> r;                              // ① 读入
    double area = 3.14159 * r * r;         // ② 计算
    cout << fixed << setprecision(2);
    cout << area << endl;                  // ③ 输出
    return 0;
}

小坑回顾(来自 02.变量、数据类型与输入输出):半径要用 double
如果写成 int 再乘,小数部分会被丢掉。


小结

  • 顺序结构 = 代码从上到下依次执行;解题主干是 读入 → 计算 → 输出
  • 两套 IO:cin/cout(好写)与 scanf/printf(快),入门先用前者。
  • 小数格式化:#include <iomanip>cout << fixed << setprecision(2);

课后小练

  1. 输入两个整数,输出它们的平均数,保留两位小数。
  2. 输入摄氏温度 c,输出华氏温度 f = c * 1.8 + 32,保留一位小数。
  3. 洛谷题单【入门1】顺序结构,做 3 题。