酷代码 AI
菜单
服务商

C++ 小行星矩阵输出:循环与条件判断的简单实践

好的,我们来分析一下小核桃的这个“小行星矩阵”问题。这是一个非常基础的C++编程练习,主要考察循环和条件判断。 ## 🚀 问题分析 用户需要输出一个 `n` 行 `m` 列的矩阵。这个矩阵有一个特殊规则: - 除了**最后一列**,矩阵的其他位置都输出 `*`。 - **最后一列**的所有行都输出 `#`。 输入是 `n` 和 `m`,输出就是按照上面规则生成的矩阵。 ## 📜 解题思路 我们可以通过**两层循环**来解决这个问题: 1. **外层循环**控制行数(从 1 到 n)。 2. **内层循环**控制列数(从 1 到 m)。 3. 在内层循环中,判断当前列是否为最后一列(即 `列号 == m`): - 如果是最后一列,输出 `#`。 - 否则,输出 `*`。 4. 每完成一行输出后,记得换行。 ## 💻 C++ 代码实现 ```cpp #include <iostream> using namespace std; int main() { int n, m; // 读取行数和列数 cin >> n >> m; // 外层循环:遍历每一行 for (int i = 0; i < n; i++) { // 内层循环:遍历每一列 for (int j = 0; j < m; j++) { // 判断是否为最后一列 if (j == m - 1) { cout << "#"; } else { cout << "*"; } } // 每输出完一行,换行 cout << endl; } return 0; } ``` ### 📋 代码详解 1. **`#include <iostream>`**:引入输入输出流库,用于 `cin` 和 `cout`。 2. **`using namespace std;`**:使用标准命名空间,避免每次都要写 `std::`。 3. **`int n, m;`**:声明两个整型变量,用来存储用户输入的行数和列数。 4. **`cin >> n >> m;`**:从标准输入读取两个整数。 5. **`for (int i = 0; i < n; i++)`**:外层循环,`i` 从 0 到 `n-1`,共循环 `n` 次,代表每一行。 6. **`for (int j = 0; j < m; j++)`**:内层循环,`j` 从 0 到 `m-1`,共循环 `m` 次,代表每一列。 7. **`if (j == m - 1)`**:判断当前列是否为最后一列(因为 `j` 从 0 开始,所以最后一列索引是 `m-1`)。 8. **`cout << "#";` 和 `cout << "*";`**:根据条件输出对应的字符。 9. **`cout << endl;`**:每行结束后换行。 ## 🔍 输入输出示例验证 **输入:** ``` 3 4 ``` **执行过程:** - 第1行:列0->`*`,列1->`*`,列2->`*`,列3->`#` → `***#` - 第2行:列0->`*`,列1->`*`,列2->`*`,列3->`#` → `***#` - 第3行:列0->`*`,列1->`*`,列2->`*`,列3->`#` → `***#` **输出:** ``` ***# ***# ***# ``` ## 💡 进阶建议 1. **代码健壮性**:可以增加对输入内容的合法性检查,例如 `n` 和 `m` 必须为正整数。 2. **性能优化**:对于特别大的矩阵(比如 `n=10000, m=10000`),可以使用 `std::ios::sync_with_stdio(false);` 和 `cin.tie(NULL);` 来加速输入输出。 3. **扩展功能**:如果需要更复杂的模式,可以将判断条件抽象成一个函数,方便修改规则。例如: ```cpp char getCharAt(int row, int col, int m) { if (col == m - 1) return '#'; return '*'; } ``` 4. **常见陷阱**: - 忘记换行会导致输出挤在一行。 - 循环条件写错(比如 `<=` 导致多输出一行或一列)。 - 最后一列的判断条件写错(如 `j == m` 而不是 `j == m-1`,因为数组索引从0开始)。 ## 📚 学习资源推荐 - **官方文档**:[cplusplus.com - iostream](http://www.cplusplus.com/reference/iostream/) - **入门书籍**:《C++ Primer》(第5版)- 经典C++入门书籍 - **在线练习**:LeetCode、Codeforces、洛谷(Luogu)上的基础题 --- ######[AI写代码神器 | 1150点数解答 | 2026-05-30 21:53:44]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]