首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【手把手带你刷好题】--C语言基础编程题(七)

【手把手带你刷好题】--C语言基础编程题(七)

作者头像
LOTSO
发布2025-10-29 13:44:16
发布2025-10-29 13:44:16
760
举报
文章被收录于专栏:C++C++

🔥个人主页:@草莓熊Lotso 🎬作者简介:C++研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受。

前言:本篇博客是刷题集中的第七篇,题目都是一些比较基础的IO型题目,适合C语言初学者。特别声明一下,这里提供的答案和思路都并非唯一,仅供参考。

1.翻转直角三角形图案

题目链接:翻转直角三角形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

题目解析:

  • 这题我们根据示例可以看出每行打印的刚好都是n-i个,一共有n行,根据这个直接利用两层循环给它打印出来就行了
  • 还是得注意一下每次输出一个*,后面都带个空格

2.带空格的直角三角形图案

题目链接:带空格直角三角形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

题目解析:

  • 我们先处理空格,每一行的空格为n-1-i个,处理完空格后再利用一个循环打印 * ,还是注意打印一个后面跟一个空格,然后一共打印n行
  • 这里也还有其它的方法大家可以自己试试

3.翻转金字塔图案

题目链接:翻转金字塔图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

    }
    return 0;
}

题目解析:

  • 还是和上一题一样,先处理空格再处理打印的 *,其实这种题我们只需要把这个示例中的图画下来,观察它们就可以了
  • 比如这一题我们可以发现每一行的空格数刚好是i个,i从0开始,j也从0开始,所以我们用j<=i-1来作为判断条件,然后每一行需要打印的*号是n-i个,还是老样子打印一个后面就加个空格

4.菱形图案

题目链接:菱形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    while (scanf("%d", &n) != EOF) {
        //打印上半部分
        for(int i=0;i<n+1;i++)
        {
          for(int j=0;j<n+1-i-1;j++)
          {
            printf(" ");
          }  
          for(int k=0;k<=i;k++)
          {
            printf("* ");
          }
          printf("\n");
        }
        //打印下半部分
        for(int i=0;i<n;i++)
        {
           for(int j=0;j<=i;j++)
           {
            printf(" ");

           }
           for(int k=0;k<n-i;k++)
           {
            printf("* ");
           }
           printf("\n");
        }
    }
    return 0;
}

题目解析:

  • 这题的本质呢其实还是控制好空格和字符就行了,这里就不多说了,可以看看我写的代码并且自己画图理解一下,在这里博主还是想说一下,画图真的很有用
  • 这里需要注意的是我们需要分成上下两半分别来看

5.K形图案

题目链接:K形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    while (scanf("%d", &n) != EOF) {
        //打印上半部分
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n+1-i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
        //打印下半部分
        for(int i=0;i<n+1;i++)
        {
            for(int j=0;j<=i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

题目解析:

  • 那么这题呢还是分为上下两半来看,控制好它的字符打印就行了
  • 这里有点坑的就是 * 的后面还是得跟空格,但这个在题目示例中没有很好的体现出来

6.箭形图案

题目链接:箭形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    while (~scanf("%d", &n)) 
    { 
        //打印上半部分
        for(int i=0;i<n+1;i++)
        {
            for(int j=0;j<n-i;j++)
            {
                printf("  ");
            }
            for(int k=0;k<=i;k++)
            {
                printf("*");
            }
            printf("\n");
        }
        //打印下半部分
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<=i;j++)
            {
                printf("  ");
            }
            for(int k=0;k<n-i;k++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
    return 0;
}

题目解析:

  • 依旧还是分上下两半,还是分别控制好空格和字符,理解掌握了上面的题后这题也是很简单的,这里就不详细讲了,还是一样的操作画图之后再来理解
  • 值得注意的空格是这里是两个空格为一组,其实大家仔细观察就能看出来的

7.反斜线形图案

题目链接:反斜线形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

题目解析:

  • 这题我们换个方法来写,我们去直接找规律,我们可以很清楚的发现当行和列相等时即i==j就打印*,其它情况都是空格

8.正斜线图案

题目链接:正斜线形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

题目解析:

  • 我们依旧是用找规律的方法,我们还是画好图标好对应的行和列的下标,很快就能发现当i+j==n-1时,我们就打印*,其它时候都是空格

9.X形图案

题目链接:X形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

题目解析:

  • 大家仔细观察应该很快就可以看出来这题不就是正斜线和反斜线组成的图案吗,那我们的判断条件就算当i==j || i+j=n-1的时候打印*,其它的情况打印空格就好了

10.空心正方形图案

题目链接:空心正方形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

题目解析:

  • 这就不用多说了,直接开始找规律就行了,这题不就算i==0 || i==n-1以及j==0 || j==n-1的时候就打印*号但是后面记得带空格,然后其余情况直接空格就行

11.空心三角形图案

题目链接:空心三角形图案_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

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

题目解析:

  • 拿到这个题还是找规律就完事了,主要是观察行列下标之间的关系,画个图标一下,我们会发现当i==j || j==0 || i==n-1的时候就打印*号加空格,其它的时候都是直接打印空格

往期回顾:

【手把手带你刷好题】--C语言基础编程题(三)

【手把手带你刷好题】--C语言基础编程题(四)

【手把手带你刷好题】--C语言基础编程题(五)

【手把手带你刷好题】--C语言基础编程题(六)

结语: 本篇文章就到此结束了,C语言刷题集专栏中的第七篇的题目也是很基础的,收录的都是一些打印图案的题,相信大家做完这些题之后再碰到类似的题一定会更加得心应手的,也是很适合刚学完C语言的朋友们拿来练手,提升自己的代码能力的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.翻转直角三角形图案
  • 2.带空格的直角三角形图案
  • 3.翻转金字塔图案
  • 4.菱形图案
  • 5.K形图案
  • 6.箭形图案
  • 7.反斜线形图案
  • 8.正斜线图案
  • 9.X形图案
  • 10.空心正方形图案
  • 11.空心三角形图案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档