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; // 输出了一行元素后,需要输出换行
}
相关推荐
FlightYe7 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
by209998 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble8 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长8 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall9 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊9 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
你怎么知道我是队长12 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
青少儿编程课堂12 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
雷✘13 小时前
C++ 类与对象的初始化机制、成员访问边界与拷贝优化
java·网络·c++
努力实干14 小时前
简单工厂模式(Simple Factory Pattern)——C++
开发语言·c++·简单工厂模式