这一节的内容主要输出各种图案,题目来源牛客网;

目录

题目一:打印线段图案

题目二:打印正方形图案

题目三:打印直角三角形图案

题目四:打印翻转直角三角形图案

题目五:带空格直角三角形图案

题目六:打印金字塔图案

题目七:打印翻转金字塔图案

题目八:打印菱形

题目九:打印k形图案

题目十:打印x形


题目一:打印线段图案

线段图案_牛客题霸_牛客网 (nowcoder.com)

思路:根据题目要求输入线段图案用*表示,输入整数代表线段长度,很容易想到就写个循环,循环n(这里的n代表你输入的整数)次 。(记住换行)

#include<stdio.h>
int main()
{
    int a = 0;
    while(scanf("%d",&a)!=EOF)//多组输入
    {
       int i=0;
        for(i=0;i<a;i++)//循环a次
        {
            printf("*");
        }
        printf("\n");//换行
    }
    
    return 0;
}

题目二:打印正方形图案

正方形图案_牛客题霸_牛客网 (nowcoder.com)

 思路:一个整数代表有几行,几列

几行:外层循环n次

几列:内层也循环n次(记住换行)

#include<stdio.h>
int main()
{
    int row = 0;
    int col = 0;
    while (scanf("%d", &row) != EOF)
    {
        int i = 0;
        int j = 0;
        for (i = 0; i < row; i++)//打印row行
        {
            for (j = 0; j < row; j++)//打印每一行有多少个*(也就是列)
            {
                printf("* ");
            }
            printf("\n");//换行
        }
    }
    return 0;
}

题目三:打印直角三角形图案

直角三角形图案_牛客题霸_牛客网 (nowcoder.com)

 思路:给你整数代表直角边长度

观察图形第一行为1个*依次为1,2,3,4;

所以外层循环肯定是循环4次代表4行,

内层循环随着行数的增加*(星号)也增加所以我们内层循环判定条件就是j<i+1或者j<=i

#include<stdio.h>
int main()
{
    int lengh = 0;
    while (scanf("%d", &lengh) != EOF)
    {
        int i = 0;
        int j = 0;
        for (i = 0; i < lengh; i++)
        {
            for (j = 0; j <=i; j++)
            {
                printf("* ");//星号后带空格
            }
            printf("\n");
        }
    }
    return 0;
}

题目四:打印翻转直角三角形图案

翻转直角三角形图案_牛客题霸_牛客网 (nowcoder.com)

 思路:这个题和上面的题是反着来的;

观察图案随着行数的增加*(星号)逐渐减少

外层循环:循环5行

内层循环:随着增加*逐渐减少最开始是5个,所以这的for循环应该从5(也就是从输入的整数)开始一直减减,减到 i 为止(为什么减到 i,因为*在依次减少在改变,所以判断条件也一直在改变)

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

题目五:带空格直角三角形图案

带空格直角三角形图案_牛客题霸_牛客网 (nowcoder.com)

 思路:这个题显然与前面的不一样这个前面带空格。

外层循环:循环5次

内层循环:

分为两步,一个是打印空格,一个是打印*号。

空格:根据规律空格从上往下依次为4,3,2,1,0;这里的判断条件就为j<n-1-i

*星号:从上往下依次为1,2,3,4,5;这里的判断条件就为j<=i;

#include<stdio.h>
int main()
{
    int lengh =0;
    while(scanf("%d",&lengh)!=EOF)
    {
        int i=0;
        int j=0;
        for(i=0;i<lengh;i++)
        {
            for(j=0;j<lengh-1-i;j++)
            {
                //打印空格;
                printf("  ");//注意这里是两个空格(观察图案)
            }
            for(j=0;j<=i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

题目六:打印金字塔图案

金字塔图案_牛客题霸_牛客网 (nowcoder.com)

 思路:

外层循环:循环4次

内层循环:

分为两步,一个是打印空格,一个是打印*号加上空格。

空格:根据规律空格从上往下依次为3,2,1,0;这里的判断条件就为j<n--1- i

*星号加上空格:从上往下依次为1,2,3,4;这里的判断条件就为j<=i;

#include<stdio.h>
int main()
{
    int lengh =0;
    while(scanf("%d",&lengh)!=EOF)
    {
        int i=0;
        int j=0;
        for(i=0;i<lengh;i++)
        {
            for(j=0;j<lengh-1-i;j++)
            {
                //打印空格;
                printf(" ");//一个空格
            }
            for(j=0;j<=i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

题目七:打印翻转金字塔图案

翻转金字塔图案_牛客题霸_牛客网 (nowcoder.com)

 思路:

外层循环:循环5次

内层循环:

先打印空格:随着行数的增加空格依次为0,1,2,3,4所以判断条件为:j<i;

在打印星号加空格:随着行数的增加空格依次为5,4,3,2,1;判断条件为j<5-i;

#include<stdio.h>
int main()
{
    int lengh = 0;

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

题目八:打印菱形

菱形图案_牛客题霸_牛客网 (nowcoder.com)

 思路:这个菱形我们要分为两部分打印一个是正三角形,一个是倒着的三角形。

上半部分又分为空格和*(星号)的打印(外层循环是循环n次)

下半部分也分为空格和星号的打印(外层循环是n+1次)

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

        for (i = 0; i < n+1; i++)//下半部分
        {
            for (j = 0; j < i; j++)
            {
                printf(" ");
            }
            for (j = 0; j < n+1- i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

题目九:打印k形图案

​​​​​​K形图案_牛客题霸_牛客网 (nowcoder.com)

 思路:分为上半部分和下半部分

上半部分:观察可知,随着行数的增加星号为3,2,1;所以判断条件为:j<=n-i(外层循环n次)

下半部分:观察可知,随着行数的增加星号为1,2,3;所以判断条件为:j<=i(外层循环为n+1次)

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

题目十:打印x形

X形图案_牛客题霸_牛客网 (nowcoder.com) 

思路:

可以观察出来,星号都在对角线位置上,那我们可以根据规律找到符合对角线的坐标就可以,一个是i==j或者是n-1-i  ; 剩下不是这些坐标内的都打印空格。

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐