基础刷题--打印‘ X ’图形

简介: 行数受n控制,每行又进行先打印空格,再打印*再打印空格。不过这种方法实在啰嗦。我们换个角度思考,这个其实是个正方形,小点点代表一个位子,那 就是正方形的对角线,

目:打印X形图案

牛客网上的链接 打印x形图案


在做这道题之前可以先做下另外两个题目作为铺垫喔。


  1. 第一题 反斜线形图案.
  2. 第二题正斜线形图案


勤能补拙,努力的人终有收获!


第一题 [反斜线形图案]


d8ff9e0e13a943d4a80d9660a0a3bdbf.png


遇到要打印图案问题可以把实例中的图形给复制放在给定的代码区内看看!


e059bd17ca324406b97d1b1e00bdf122.png


然后看看这个图形到底是怎么组成的。(需要选中它们才能显示)


这里面小点点代表着一个空位,相当于空格,那这样我们不难分析出规律。


行数受n控制,每行又进行先打印空格,再打印*再打印空格。不过这种方法实在啰嗦。我们换个角度思考,这个其实是个正方形,小点点代表一个位子,那 就是正方形的对角线,


392e50f190394d748be875fb82637534.png


定义i表示行,j表示列哈。

那么满足的条件就是i==j


int main()
{
  int n;
  while (scanf("%d", &n) != -1)
  {
    int i, j;
    for (i = 0;i < n;i++)
    {
      for (j = 0;j < n;j++)
      {
        if (i == j)
        {
          printf("*");
        }
        else
          printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}


4b008b975fbc4d9a887f90e81bb041ba.png


不过我提到的比较啰嗦的那种解法也可以的,代码如下:


#include <stdio.h>
int main() {
    int n;
    while(scanf("%d",&n)!=-1)
    {
      int i,j;
      for(i=0;i<n;i++)
      {
          for(j=0;j<i;j++)
          {
              printf(" ");
          }
          printf("*");
          for(j=0;j<n-1-i;j++)
          {
              printf(" ");
          }
          printf("\n");
      }
    }
    return 0;
}


第二题[正斜线形图案]


ed73c639a59d4a138ebdf1106f45510f.png


d915fe0833c04a21b93e0f8b994e97a9.png


解法跟第一道题目是一样的,把它先看成一个正方形,看*的分布规律就行了。


61c6bf9b5cd74ce7af0620794b3b91ca.png


所以代码如下:


int main()
{
  int n;
  while (scanf("%d", &n) != -1)
  {
    int i, j;
    for (i = 0;i < n;i++)
    {
      for (j = 0;j < n;j++)
      {
        if (i + j == n - 1)
        {
          printf("*");
        }
        else
          printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}

c1346b3427d646679714ab405c97f982.png


最后一题:X形图案


做完前面俩题,再做这题是不是有种豁然大悟的感觉呢,只要把上面两种对角线的情况综合一下,就能打印出来X图形了。


e961515dc7694523be64cd2b8ace7672.png


#include <stdio.h>
int main()
{
  int n;
  while (scanf("%d", &n) != -1)
  {
    int i, j;
    for (i = 0;i < n;i++)
    {
      for (j = 0;j < n;j++)
      {
        if (i == j)
        {
          printf("*");//反斜线对角线打印;
        }
        else if (i + j == n - 1)//正斜线对角线打印
        {
          printf("*");
        }
        else
          printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}

a51a32ea70564e0f86fe95492eeec6a5.png


感谢大家的观看喔!!!

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
人工智能的发展现状如何?
【10月更文挑战第16天】人工智能的发展现状如何?
|
机器学习/深度学习 监控 安全
智能混凝土:自我修复与环境感应的建筑材料
【10月更文挑战第21天】智能混凝土是一种集自我修复与环境感应于一体的先进建筑材料。通过复合智能型组分,智能混凝土能够实现自感知、自适应和自修复,显著提高结构的耐久性和安全性,减少维修成本,促进环保节能。未来,智能混凝土将向多功能化、智能化和绿色化方向发展,为建筑行业带来革命性变革。
|
存储 缓存 定位技术
如果遇到网络延迟问题,有哪些方法可以快速解决以保证视频源同步?
如果遇到网络延迟问题,有哪些方法可以快速解决以保证视频源同步?
|
JSON Java jenkins
实现Jenkinsfile与Json的转换
实现Jenkinsfile与Json的转换
216 4
|
前端开发 容器
解锁CSS定位奥秘,从迷茫到精通,让你的网页布局“稳如老狗”,引领前端新潮流!
【8月更文挑战第23天】本文深入探讨了Web前端开发中CSS定位的三大基石:相对定位、绝对定位与固定定位。通过具体示例,展示了各种定位方式的特点及应用场景。相对定位可在不影响布局的情况下微调元素位置;绝对定位使元素完全脱离文档流,适用于精确控制位置的需求;固定定位则确保元素始终固定于浏览器窗口特定位置,不受页面滚动影响。这些技巧对于实现复杂网页布局至关重要。
243 0
|
算法 Linux API
Pygame的主要优势
【6月更文挑战第12天】Pygame的主要优势
365 3
|
前端开发 搜索推荐 UED
HTML基础-文本格式化标签:美化网页内容
【6月更文挑战第1天】本文介绍了HTML的文本格式化标签,包括`<b>`、`<strong>`、`<i>`、`<em>`、`<u>`、`<s>`、`<mark>`、`<small>`、`<sub>`和`<sup>`等,强调了语义化使用和避免常见错误的重要性。示例代码展示了这些标签的用法,帮助提升网页内容的可读性和吸引力。
486 3
|
消息中间件 负载均衡 大数据
【夏之以寒-Kafka专栏 01】Kafka的消息是采用Pull模式还是Push模式?
Kafka采用Pull模式为主,消费者主动拉取消息,保证控制和灵活性;同时融合Push模式,如自动Partition再分配和有序消息传递,实现高可用和负载均衡。专栏提供全面资源和面试题,助力Kafka学习。
491 0
|
数据采集
【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
【5月更文挑战第5天】【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
|
机器学习/深度学习 传感器 编解码
BSRGAN超分辨网络
BSRGAN超分辨网络
263 0