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; // 输出了一行元素后,需要输出换行
}
相关推荐
程与留3 小时前
15_国际化和本地化:tr()、ts 文件、QM 文件、多语言切换
c++·qt
程与留4 小时前
14_Qt 样式表(QSS)入门(语法、选择器、美化实战)
c++·qt
欧特克_Glodon13 小时前
OpenCV计算机视觉开发入门与实践<二十七>:图像分割概述
c++·人工智能·opencv·计算机视觉
蒸蒸yyyyzwd13 小时前
cpp 选手秋招学习笔记 day21
c++·面试·八股
「QT(C++)开发工程师」1 天前
C++ auto 用法详解
开发语言·c++
OPEN-F1 天前
C++STL教程:容器适配器与实用工具
开发语言·c++
OPEN-F1 天前
C++模板教程:变参模板、折叠表达式与SFINAE
java·开发语言·c++
有点。1 天前
C++二叉搜索树进阶
开发语言·c++
HugoStudio_SWAN1 天前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
kyle~1 天前
C++_STL---迭代器失效
开发语言·c++