文章

【GESP】C++一级练习BCQM3010、BCQM3012、BCQM3019,变量值交换

三道交换两个变量值的题目。从给定值到读取输入循序渐进,可以一起练习。

BCQM3010

题目要求

描述

现有两个整型变量a和b,分别存放了整数20和22。编程实现交换两个变量里的数,并输出结果。

输入

输出

如题

输入样例

输出样例

1
2
a=22
b=20

题目分析

最简单的交换两个变量值的题目。交换变量的值也算是涉及到算法的最基础的问题了。思路很简单,通过一个中间变量来交换两个变量的值。即:

1
2
3
a的值 -> 中间变量
b的值 -> a
中间变量的值 -> b

代码参考

1
2
3
4
5
6
7
8
9
10
#include <cstdio>
int main() {
    int a = 20, b = 22, c = 0;
    c = a;
    a = b;
    b = c;
    printf("a=%d\n", a);
    printf("b=%d", b);
    return 0;
}

BCQM3012

题目要求

描述

尼克是一位好学的学生,他经常做实验。有一天他在做实验的时候需要交换一瓶10毫升的红墨水和一瓶20毫升的蓝墨水,但他不会,便向狐狸老师求助,狐狸老师念了一句咒语“阿布拉卡达布拉”帮助了尼克。试编一程序,模拟这一过程。

输入

输出

第一行输出交换前两个瓶子的墨水数量。
第二行交换后两个瓶子的墨水数量(单位ml)。

输入样例

输出样例

1
2
a=10 b=20
a=20 b=10

题目分析

BCQM3010类似,只是输出格式不同。并且注意要先把交换前的值输出,再输出交换后的值。

代码参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdio>
int main() {
    int a = 10, b = 20, c = 0;
    // 交换前
    printf("a=%d ", a);
    printf("b=%d\n", b);
    c = b;
    b = a;
    a = c;
    // 交换后
    printf("a=%d ", a);
    printf("b=%d\n", b);
    return 0;
}

BCQM3019

题目要求

描述

尼克是一位好学的学生,他经常做实验。有一天他在做实验的时候需要交换一瓶x毫升的红墨水和一瓶y毫升的蓝墨水,但他不会,便向狐狸老师求助,狐狸老师念了一句咒语“阿布拉”帮助了尼克。试编一程序,模拟这一过程。

输入

输入x, y

输出

第一行输出交换前两个瓶子的墨水数量。
第二行交换后两个瓶子的墨水数量(单位ml)。

输入样例

10 20

输出样例

1
2
a=10 b=20
a=20 b=10

题目分析

BCQM3012基础上增加了变量输入环节,先读取变量值然后在交换和输出。读取变量输入可以用scanfcin函数。

代码参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstdio>
int main() {
    int x, y, c = 0;
    // 读取变量输入值
    scanf("%d%d", &x, &y);
    // 输出交换前变量值 
    printf("a=%d ", x);
    printf("b=%d\n", y);
    c = y;
    y = x;
    x = c;
    // 输出交换后变量值
    printf("a=%d ", x);
    printf("b=%d\n", y);
    return 0;
}


所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

本文由作者按照 CC BY 4.0 进行授权