首页 > 试题广场 >

菱形图案

[编程题]菱形图案
  • 热度指数:27234 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。

输入描述:

多组输入,一个整数(2~20)。



输出描述:

针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。

示例1

输入

2

输出

  * 
 * * 
* * * 
 * * 
  * 
示例2

输入

3

输出

   * 
  * * 
 * * * 
* * * * 
 * * * 
  * * 
   * 
示例3

输入

4

输出

    * 
   * * 
  * * * 
 * * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    * 
#include<stdio.h>
int main()
{
    int n = 0;
    while ((scanf("%d", &n)) != EOF)
    {
        int i = 1;//i表示行数

        for (; i <= n + 1; ++i)//打印上半部分
        {

            int j = i;
            for (; j < n + 1; ++j)//打印开头空格
            {
                printf(" ");
            }

            for (j = 1; j <= i; ++j)//打印*
            {
                printf("* ");
            }
            printf("\n");

        }

        for (i = 1; i <= n; ++i)
        {
            int j = 1;
            for (; j <= i; ++j)
                printf(" ");

            for (j = 1; j <= n - i + 1; ++j)
            {
                printf("* ");
            }
            printf("\n");

        }

    }

    return 0;
}

发表于 2024-08-24 11:49:01 回复(0)
#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(" ");
        }
        for (int k = i+1; k > 0; k--)
        {
            printf("* ");
        }
        printf("\n");
    }
    for (int i = 0; i < n + 1; i++)
    {
        for (int j = i; j > 0 ; j--)
        {
            printf(" ");
        }
        for (int k = n + 1 -i; k > 0; k--)
        {
            printf("* ");
        }
        printf("\n");
    }
   }

    return 0;
}

发表于 2024-08-07 17:59:12 回复(0)
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        for (int i = 1; i <= n + 1; i++) {
            for (int j = 0; j < n + 1 - i; j++) {
                printf(" ");
            }
            for (int k = 0; k < i; k++) {
                printf("* ");
            }
            printf("\n");

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

        }
    }

    return 0;
}

发表于 2024-08-03 10:46:00 回复(0)
#include <stdio.h>

int main() {
    int a = 0;
    while (scanf("%d", &a) != EOF) 
    {   
        //打印上半部分,假设多打印一行
        for (int i = 0; i < a + 1; i++)    
        {
            //a-i会随着i变化,当输入2时,第一行打印2-i格空格
            for (int j = 0; j < a-i; j++) //打印一个空格
                printf(" ");

            for (int j = 0; j <= i; j++) //打印*和空格
                printf("* ");
            
            printf("\n");   //换行
        }

        //打印下半部分
       for (int i = 0; i < a; i++) 
        {
            for (int j = 0; j <= i; j++) //第一行打印一个空格
                printf(" ");

            //a-1-i会随着i变化,当输入2时,第一行打印2-i个“* ”
            for (int j = 0; j < a - i; j++) //打印一个空格
                printf("* ");

            printf("\n");   //换行
        }
    }
    return 0;
}

发表于 2024-06-20 17:10:23 回复(0)
/*思路 : 可以分成两个部分来看 上面是n行 下面是n+1行
for(j=0;j<n-i;j++)
//如果这里要打印四个空格 4-0=4 三个空格4-1=3 两个空格4-2=2
for(j=0;j<=i;j++)
//因为这里j都是每次从0开始的 
//当i为0的时候打印零个 为1的时候打印一个 为2的时候打印两个
//......
//i随着变化而变化
 for(j=0;j<i;j++)
//打印空格
//当i为0的时候不打印 当i为1的时候打印一个空格
//当i为2的时候打印两个 ......
for(j=0;j<n+1-i;j++)
//这里是因为是n+1行 所以要写成n+1
//这里是5的时候 i为0 就打印五个
//为4的时候 i为1 打印四个
//为3的时候 i为2 打印三个
//......
*/
# 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++)
        //如果这里要打印四个空格 4-0=4 三个空格4-1=3 两个空格4-2=2
        //......
        {
            printf(" ");
        }
        //接下来打印 空格+星号
        for(j=0;j<=i;j++)
        //因为这里j都是每次从0开始的 
        //当i为0的时候打印零个 为1的时候打印一个 为2的时候打印两个
        //......
        //i随着变化而变化
        {
            printf("* ");
        }
        printf("\n");
    }
        //下半部分
        //n+1 行
        //依旧是有空格加型号组成的
        for(i=0;i<n+1;i++)
        {
            int j = 0;
            for(j=0;j<i;j++)
            //打印空格
            //当i为0的时候不打印 当i为1的时候打印一个空格
            //当i为2的时候打印两个 ......
            {
                printf(" ");
            }
            for(j=0;j<n+1-i;j++)
            //这里是因为是n+1行 所以要写成n+1
            //这里是5的时候 i为0 就打印五个
            //为4的时候 i为1 打印四个
            //为3的时候 i为2 打印三个
            //......
            {
                printf("* ");
            }
            printf("\n");
        }
        
    }

    return 0;
}

发表于 2024-06-01 19:48:08 回复(0)
#include <stdio.h>

int main()
{
    int line = 0;
    for(line=2;line<=20;line++)
  {
    scanf("%d",&line);
    int i = 0;
    //上
    for (i = 0; i <= line; i++) {
        //空格
        for (int j = 0; j < line - i; j++) {
            printf(" ");
        }
        //星号
        for (int j = 0; j < (i + 1); j++) {
            printf("* ");
        }
        printf("\n");
    }
    //下
    for (i = 0; i <line; i++) {
        //空格
        for (int j = 0; j <= i; j++) {
            printf(" ");
        }
        for (int j = 0; j <line-i; j++) {
            printf("* ");
        }
        printf("\n");
    }
  }
  return 0;
}
发表于 2024-05-26 11:31:21 回复(0)
#include<stdio.h>
int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        //正金字塔
        //打印行
        for (int i = 0; i < n; i++)
        {
            printf(" ");
            //打印空格
            for (int j = 0; j < n - i - 1; j++)
            {
                printf(" "); //打印2个空格
            }
            //打印*号
            for (int m = 0; m <= i; m++)
            {
                printf("* ");

            }
            printf("\n");
        }


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


        //倒金字塔
        //打印行
        for (int i = n; i > 0; i--)
        {
            printf(" ");
            //打印空格
            for (int j = 0; j < n - i; j++)
            {
                printf(" "); //打印2个空格
            }
            //打印*号
            for (int m = i; m > 0; m--)
            {
                printf("* ");

            }
            printf("\n");
        }
    }

}

发表于 2024-05-07 21:15:42 回复(0)
#include <stdio.h>

int main() {
    int n;
    scanf("%d",&n);
    int ret=n;
    int count=1;
    int num=n;
    int src=1;
    for (int i=0; i<n; i++) {
        for (int j=ret; j>0; j--) {
            printf(" ");
        }
        for (int i=0; i<count; i++) {
            printf("* ");
        }
        count++;
        printf("\n");
        ret--;
    }
    for (int i=0; i<n+1; i++) {
        printf("* ");
    }
    printf("\n");
    for (int i=0; i<n; i++) {
        for (int j=src; j>0; j--) {
            printf(" ");
        }
        for (int i=0; i<num ; i++) {
            printf("* ");
        }
        num--;
        printf("\n");
        src++;
    }
    return 0;
}
为啥自测输入打出来的都对就是一直提示不通过
发表于 2024-04-13 09:19:23 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0;
    int j = 0;

    while (scanf("%d", &n) != EOF)
    {
        //输出上三角与中线
        for (i = 0; i < n + 1; i++)
        {
            //输出前面空格
            for(j = 0; j < n - i; j++)
            {
                printf(" ");
            }
            //输出后面图案
            for(j = 0; j < i + 1; j++)
            {
                printf("* ");
            }
            //换行准备输出下一行
            printf("\n");
        }

        //输出下三角
        for(i = 0; i < n; i++)
        {
            //输出前面空格
            for(j = 0; j < i + 1; j++)
            {
                printf(" ");
            }
            //输出后面图案
            for(j = 0; j < n - i; j++)
            {
                printf("* ");
            }
            //换行准备输出下一行
            printf("\n");
        }
    }

    return 0;
}

编辑于 2024-03-19 12:10:04 回复(0)
#include <stdio.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        for (int y = 1; y <= n * 2 + 1; y++) {
            if (y <= n) {
                for (int a = 0; a <= n - y; a++) {
                    printf(" ");
                }
                for (int b = 1; b <= y; b++) {
                    printf("* ");
                }
                //printf("\n");
            } else {
                for (int j = 1; j < y - n; j++) {
                    printf(" ");
                }
                for (int k = 1; k <= 2 * n - y + 2; k++) {
                    printf("* ");
                }
                //printf("\n");
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2024-01-29 19:04:08 回复(0)
#include <stdio.h>
int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF) {
        //将菱形分成两部分 上部n+1行打印
        for (int i = 0; i < n + 1; i++) {
            for (int j = 0; j < n - i; j ++) {
                printf(" ");
            }
            for (int j = 0; j <=  i ; j++) {
                printf("* ");
            }
            printf("\n");
        }
        //下部n行打印
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                printf(" ");
            }
            for (int j = 0; j < n - i; j++) {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

编辑于 2024-01-08 23:46:05 回复(0)
#include<stdio.h>
#include "math.h"
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        for (int i = 0; i < 2 * n + 1; i++) {
            for (int j = 0; j < n + 1; j++) {
                if (j >= fabs(n - i)) {
                    printf("* ");
                } else {
                    printf(" ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}

编辑于 2023-12-26 14:14:03 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 0;
    int a = 0;
    while (scanf("%d", &n) != -1)
    {
        for (a = 1; a <= n; a++)
        {
            int b = n - a + 1;
            while (b)
            {
                printf(" ");
                b--;
            }
            int c = a;
            while (c)
            {
                printf("* ");
                c--;
            }
            printf("\n");
        }
        for (int i = 0; i <= n; i++)
        {
            printf("* ");
        }
        printf("\n");
        for (a = n; a >= 0; a--)
        {
            int b = n - a + 1;
            while (b)
            {
                printf(" ");
                b--;
            }
            int c = a;
            while (c)
            {
                printf("* ");
                c--;
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2023-11-27 10:30:49 回复(0)
#include <stdio.h>

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

发表于 2023-11-10 22:27:16 回复(0)
#include <stdio.h>
int main()
{
    int n;
    while(scanf("%d ",&n) != EOF)
    {
        int i;
        for(i = 1;i <= n;i++)
        {
            //上半部分行的控制
            int j;
            for(j = 1;j <= n+1-i;j++)
            {
                printf(" ");
            }
            j = 1;
            for(j = 1;j<=i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
        int k;
        for(k = 1;k <= n+1;k++)
        {
            printf("* ");
        }
        printf("\n");

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

发表于 2023-11-04 09:40:17 回复(0)
#include <stdio.h>

int main() {
    int n=0;
    while(~scanf("%d",&n))
    {
        //1.up
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n-i;j++)
            {
                printf(" ");
            }
            for(int j=0;j<=i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
        //2.down
        for(int i=0;i<n+1;i++)
        {
            for(int j=0;j<i;j++)
            {
                printf(" ");
            }
            for(int j=0;j<n+1-i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2023-09-01 14:26:28 回复(0)
#include <stdio.h>

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

    return 0;
}
发表于 2023-04-08 17:24:21 回复(0)
#include <stdio.h>

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0;i<n;i++)//上半部分有多少行
        {
            for(int b=n;b>i;b--)
        {
            printf(" ");
        }
        for(int a=0;a<=i;a++)
        {
            printf("* ");
        }
        printf("\n");
        }//上半部分结束。
        for(int j=0;j<n+1;j++)
        {
            printf("* ");
        }//中间部分
        printf("\n");
         for(int c=n;c>0;c--)//下半部分有多少行
        {
            for(int b=c;b<=n;b++)
        {
            printf(" ");
        }
        for(int a=c;a>0;a--)
        {
            printf("* ");
        }
        printf("\n");
        }//下半部分结束。注意:打印下半部分时,行数要注意用的是递减,如c--,上半部分是i++

    }
    return 0;
}
发表于 2023-04-06 13:48:11 回复(0)
#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-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=i;k<n;k++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

发表于 2023-03-10 20:59:57 回复(0)
#include <stdio.h>

int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        // 正三角
        for (int i = 0; i < a; i++) {
            // 一行输出a个符号包括:空格和*
            for (int j = 0; j <= a; j++) {
                // 外部循环条件控制内部循环条件
                // 寻找它们之间的关系
                if (j < a - i) {
                    printf(" ");
                } else {
                    printf("* ");
                }
            }
            printf("\n");
        }

        // 中间部分
        for (int i = 0; i <= a; i++) {
            printf("* ");
        }
        printf("\n");

        // 倒三角
        for (int i = 0; i < a; i++) {
            // 一行输出a个符号包括:空格和*
            for (int j = 0; j <= a; j++) {
                // 外部循环条件控制内部循环条件
                // 寻找它们之间的关系
                if (j <= i) {
                    printf(" ");
                } else {
                    printf("* ");
                }
            }
            printf("\n");
        }


    }
    return 0;
}
发表于 2023-03-01 10:28:30 回复(0)