GESP 23年9月2级 小杨的X字矩阵

【题目链接】

一本通 4015 小杨的X字矩阵

洛谷 B3865 小杨的X字矩阵


【题目考点】

  1. 循环结构(嵌套);

  2. 输出图形;

  3. 分支结构;


【解题逻辑】

解法1:

  1. 通过嵌套循环控制图形的行数与列数:
  • 外层循环控制图形的行数
  • 内层循环控制图形的列数
  1. 观察图形规律,确定对角线位置:
  • 左对角线:行列号相等 (i==j);
  • 右对角线:行号 + 列号 = n+1;(起点下标+结束下标)
  1. 循环判断当前行列位置,若在对角线位置则输出 '+',否则输出 '-';

解法2:

1.通过嵌套循环控制图形的行数与列数:

  • 外层循环控制图形的行数
  • 内层循环控制图形的列数
  1. 定义两个游标变量记录每行要输出 '+' 的列坐标,左游标初始为 1,右游标初始为 n;

  2. 循环判断当前列号是否等于游标值,相等则输出 '+',否则输出 '-';

  3. 每行输出结束后,左游标自增 1,右游标自减 1,匹配对角线偏移规律;


【题解代码】

解法1:

  1. 输入1个整数:图形的行列数;
cpp 复制代码
int n;
cin>>n;
  1. 循环控制图形的行数与列数;
cpp 复制代码
for(int i=1;i<=n;i++){ // 一共n行
    for(int j=1;j<=n;j++){ // 每行n列
        if(i==j || i+j==1+n){ // 如果行号与列号相等 或 行号+列号与n+1相等
            cout<<'+'; // 代表在做左对角线上,输出-
        }
        else{
            cout<<'-'; // 否则输出'+'
        }
    }
    cout<<endl; // 输出了一行元素后,需要输出换行
}

解法2:

  1. 输入1个整数:图形的行列数;
cpp 复制代码
int n;
cin>>n;
  1. 定义变量作为游标,记录左对角线与右对角线开始的位置;
cpp 复制代码
int l=1,r=n; 
  1. 循环控制图形的行数与列数;
cpp 复制代码
for(int i=1;i<=n;i++){ // 一共n行
    for(int j=1;j<=n;j++){ //每行n列
        if(j==l || j==r){ // 如果列号与左游标 或 右游标相同
            cout<<'+'; // 代表在对角线上
        }
        else{
            cout<<'-'; 
        }
    }
    // 下一行的游标更新
    l++;
    r--;
    cout<<endl; // 输出了一行元素后,需要输出换行
}
相关推荐
clint45612 小时前
C++进阶(1)——前景提要
c++
夜悊16 小时前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴17 小时前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0011 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
玖玥拾1 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
один but you2 天前
constexpr函数
c++
凡人叶枫2 天前
Effective C++ 条款41:了解隐式接口和编译期多态
java·开发语言·c++·effective c++
凡人叶枫2 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
小胖xiaopangss2 天前
BRpc使用
c++·rpc
-森屿安年-2 天前
63. 不同路径 II
c++·算法·动态规划