C++ 趣味编程小课堂

一、课程目标

通过几个有趣的小案例,学习用 C++ 解决问题,认识输入输出、循环、图形绘制,让大家像搭积木一样学会写简单代码,感受编程乐趣!

二、知识储备

  1. C++ 基础:知道 #include 引入工具库、using namespace std 简化代码,int main() 是程序入口。
  2. 逻辑概念:理解顺序执行、循环(重复做事)、条件判断(选情况做事 )。

三、案例实战

案例 1:拆分数字的“小零件”(分离整数数位)

需求:输入一个数,比如 123,按个位、十位、百位拆成 3 2 1 输出。

代码实现(每行有详细注释,方便理解):

// 引入输入输出工具库,让程序能读入、输出内容
#include<iostream>  
// 使用标准命名空间,简化代码里的写法
using namespace std;  

int main() {  
    // 定义一个整数变量 n,用来存输入的数字
    int n;  
    // 从键盘读入一个整数,存到 n 里
    cin >> n;  

    // 当 n 不等于 0 时,重复做这些事(循环)
    while (n != 0) {  
        // 取 n 的个位数字:用 % 10 可以拿到最后一位,比如 123%10 就是 3
        cout << n % 10 << " ";  
        // 把 n 去掉个位数字:用 / 10 可以砍掉最后一位,比如 123/10 就变成 12
        n = n / 10;  
    }  

    // 程序结束标志
    return 0;  
}  

运行示例

  • 输入:123
  • 输出:3 2 1

原理:用 %10 挖个位数字,用 /10 去掉个位,循环砍数字直到砍完,就拆分出所有数位啦!

案例 2:给矩阵“边缘”算总和(矩阵边缘元素求和)

需求:输入一个矩阵(表格数字),算第一行、最后一行、第一列、最后一列的数字总和。

代码实现(注释超详细):

// 引入输入输出工具库
#include<iostream>  
using namespace std;  

int main() {  
    // m 存矩阵行数,n 存矩阵列数
    int m, n;  
    // 从键盘读入行数和列数
    cin >> m >> n;  

    // cnt 用来累加边缘数字的和,初始设为 0
    int cnt = 0;  

    // 外层循环:一行一行遍历(从第 1 行到第 m 行 )
    for (int i = 1; i <= m; i++) {  
        // 内层循环:一列一列遍历(从第 1 列到第 n 列 )
        for (int j = 1; j <= n; j++) {  
            // 临时变量 a,存当前读的数字
            int a;  
            // 读入矩阵里的一个数字
            cin >> a;  

            // 判断是不是边缘:第一行(i==1)、最后一行(i==m)、第一列(j==1)、最后一列(j==n)
            if (i == 1 || i == m || j == 1 || j == n) {  
                // 是边缘就加到总和里
                cnt = cnt + a;  
            }  
        }  
    }  

    // 输出边缘数字的总和
    cout << cnt;  

    return 0;  
}  

运行示例
输入(3 行 3 列矩阵):

3 3  
3 4 1  
3 7 1  
2 0 1  

输出:15(第一行 3+4+1 + 最后一行 2+0+1 + 第一列多的 3 + 最后一列多的 1 → 总和 15 )

原理:用两层循环遍历每个数字,用 if 判断是不是边缘位置,是就把数字加到总和里!

案例 3:画“圆圆排排站”(图形绘制,简单版)

需求:弹出一个窗口,画几个圆形排排站,感受图形编程趣味!

代码实现(先装 graphics.h 图形库才能运行哦,比如用 Dev-C++ 软件):

// 引入图形绘制工具库,能弹出窗口、画图形
#include <graphics.h>  
// 引入数学工具库(暂时用不上,但图形库常一起用 )
#include <math.h>  
// 引入按键检测工具库,让程序等我们按按键再关闭
#include <conio.h>  
using namespace std;  

int main() {  
    // 定义窗口高度,这里设 1200 像素,让窗口长一点好放圆形
    const int height = 1200;  
    // 初始化图形窗口:宽度 600 像素,高度用上面定义的 height
    initgraph(600, height);  

    // 画圆形:circle(圆心X, 圆心Y, 半径)
    // 第一个圆:Y 坐标是 1*height/4(把窗口高度分成 4 份,选第一份位置 )
    circle(300, 1 * height / 4, 50);  
    // 第二个圆:Y 坐标是 2*height/4(第二份位置 )
    circle(300, 2 * height / 4, 50);  
    // 第三个圆:Y 坐标是 3*height/4(第三份位置 )
    circle(300, 3 * height / 4, 50);  

    // 让程序暂停,等我们按任意按键(不然窗口一闪就没啦 )
    getch();  

    // 关闭图形窗口,释放资源
    closegraph();  

    return 0;  
}  

运行效果:弹出一个窗口,里面有 3 个圆形垂直排开,按任意键窗口关闭。

原理:用 initgraph 开窗口,circle 画圆(参数是圆心坐标和半径 ),getch 让程序等我们按键,最后关窗口~

四、总结

  1. 拆分数字:用 %10/10 循环拆分数位,像剥洋葱一层一层剥!
  2. 矩阵求和:两层循环遍历,if 判断边缘位置,累加算总和~
  3. 图形绘制:用 graphics.h 开窗口、画图形,轻松实现可视化效果!

多改改代码里的数字(比如矩阵大小、圆形位置 ),看看效果咋变的,编程就是越玩越会哟!

0 条评论

目前还没有评论...