首页 > 试题广场 >

空心正方形图案

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

输入描述:
多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。


输出描述:
针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。
示例1

输入

4

输出

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

输入

5

输出

* * * * * 
*       * 
*       * 
*       * 
* * * * * 
#include <stdio.h>
void print(int num)
{
    int i,j;
    for(i=1;i<=num;i++)
    {
        for(j=1;j<=num;j++)
        {
            if((i>1&&i<num)&&(j>1&&j<num))
            printf("  ");
            else
             {
                printf("* ");
             }
        }
        printf("\n");
    }
}
int main()
{
    int num = 0;
    scanf("%d",&num);
    print(num);
    return 0;
}
发表于 2024-10-20 11:28:30 回复(0)
#include<stdio.h>
int main()
{
int n=0;
while((scanf("%d",&n))!=EOF)
{
int i=0,j=0;
for(i=1;i<=n;++i)
{

for(j=1;j<=(2*n-1);++j)
{
if((j==1)||(j==(2*n-1))||((i==1)&&((j%2)!=0))||((i==n)&&((j%2)!=0)))
printf("*");
else
 printf(" ");
}
 printf("\n");
}

}
    return 0;
}
发表于 2024-08-24 20:30:38 回复(0)
#include <stdio.h>

int main() {
   int n;
   while(~scanf("%d",&n))
   {
    for(int i=1;i<=n;i++)
    {
        if(i==1||i==n)
        {
            for(int j=1;j<=n;j++)
            printf("* ");
        }
        else
        {
            for(int z=1;z<=n;z++)
            {
                if(z==1||z==n)
                printf("* ");
                else
                printf("  ");
            }
        }
        printf("\n");
    }
   }
    return 0;
}
发表于 2024-08-04 12:04:35 回复(0)
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        for (int i = 0; i < n; i++) {
            if (i == 0 || i == n - 1) {
                for (int j = 0; j < n; j++) {
                    printf("* ");
                }
                printf("\n");
            }
            else {
                printf("* ");
                for (int k = 0; k < n - 2; k++) {
                    printf("  ");
                }
                printf("* \n");
            }
        }
    }

    return 0;
}

发表于 2024-08-03 11:09:31 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main() {
    int a;
    while (scanf("%d", &a) != EOF) {
        int i = 0;
        int j = 0;
        int b = 0;
        for (i = 0; i < a; i++) {
            for (j = 0; j < a; j++) {
                if ((i > 0) && (i < (a - 1)) && (j > 0) && j < (a - 1)){
                    for (b = 0; b < 2; b++) {
                        printf(" ");
                    }
                }
                else {
                    printf("*");
                    printf(" ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}
发表于 2024-07-28 11:02:13 回复(0)
#include<stdio.h>
int main(void)
{
    int a, i, k, l;
    char b = '*';
    char c = ' ';
    while (scanf("%d", &a) == 1)
    {
        for (i = 1; i <= 2 * a - 1; i++, i++)
        {
            l = 1;
            if (i == 1 || i == 2 * a - 1)
            {
                for (k = 1; k <= 2 * a - 1; k++)
                {
                    if (k == l)
                    {
                        printf("%c", b);
                        l = l + 2;
                    }
                    else
                        printf("%c", c);
                }
                printf("\n");
            }
            else
            {
                for (int i = 1; i <= 2 * a - 1; i++)
                {
                    if (i == l || i == 2 * a - 1)
                        printf("%c", b);
                    else
                        printf("%c", c);
                }
                printf("\n");
            }
        }
    }
    return 0;
}
发表于 2024-07-27 23:52:15 回复(1)
#include <stdio.h>

int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF) 
    {
        //打印第一行
        for(int j = 0; j < n; j++ )
                printf("* "); 
            printf("\n");
        //打印中间n-2行
        for(int i = 0; i< n-2; i++)
        {
            printf("* ");
            for(int j = 0; j < n - 2; j++)
                printf("  ");
            printf("*\n");
        }
        //打印最后一行
        for(int j = 0; j < n; j++ )
            printf("* "); 
        printf("\n");
    }
    return 0;
}

发表于 2024-06-21 01:00:53 回复(0)
/*思路 : 可以把题目示例中的正方形看成 两个部分
行 为一部分 列为一部分
i和j为0的时候 打印一行或者一列
其次 当 i==n-1 , j==n-1 的时候 打印一行或者一列
1.i==0 的时候打印一整行2.j==0的时候打印一整列3.i==n-1 的时候 打印一个
4.j==n-1 的时候 打印一个 就可以看到绿色箭头所指的地方 正好就是j== 5-1=4
*/
# 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++)
            {
                // i和j为0的时候 打印一行或者一列
                // 其次 当 i==n-1 , j==n-1 的时候 打印一行或者一列
                if (i==0||j==0||i==n-1||j==n-1) 
                {
                    printf("* ");
                }
                else 
                {
                    printf("  ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}

发表于 2024-06-02 14:51:17 回复(0)
#include <stdio.h>

int main() {
    int a;
    while (scanf("%d", &a) != EOF)
    {
        for (int i=1; i<=a; i++)//行
        {
            if (i==1 || i==a)
            {
                for (int j=1; j<=a; j++)
                {
                    printf("* ");
                }
            }
            else
            {
                printf("* ");
                for (int j=1; j<=a-2; j++)
                {
                    printf("  ");
                }
                printf("* ");
            }

            printf("\n");
        }
       
    }
    return 0;
}
发表于 2024-05-08 22:14:24 回复(0)
这里有个坑,输出空格的时候,需要输出三个空格
//BC111 空心正方形图案
#include "stdio.h"
int main(){
    int n;
    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 || j==0 || j==n-1){
                    printf("* ");
                }
                else{
                    printf("  ");//这里有三个空格
                }
            }
            printf("\n");
        }
    }
    return 0;
}


发表于 2024-02-29 15:04:18 回复(2)
#include <stdio.h>

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

	while (scanf("%d", &input) == 1)
	{
		for (i = 0; i < input; i++)//控制换行
		{
			for (j = 0; j < input; j++)//控制输出
			{
				if (i == 0 || i == input - 1 || j == 0 || j == input - 1)
				{
					printf("* ");
				}
				else
				{
					printf("  ");
				}
			}
			printf("\n");
		}
	}
	return 0;
}

编辑于 2024-02-06 17:56:53 回复(0)
#include <stdio.h>

int main() {
    int n;
    while(scanf("%d", &n) != EOF){
        for(int y=1; y<=n; y++){
            if(y == 1 || y == n){
                for(int x=1; x<=n; x++){
                    printf("* ");
                }
            }else{
                for(int x=1; x<=n; x++){
                    if(x == 1 || x == n){
                        printf("* ");
                    }else{
                        printf("  ");
                    }
                }
            }
            printf("\n");
        }
    }
    return 0;
}
编辑于 2024-01-29 20:34:16 回复(0)
#include<stdio.h>
int main()
{
    int n = 0;
    int i = 0;
    printf("请输入数字:>");
    scanf_s("%d", &n);
    for (i = 0; i < n; i++)
    {
        int j = 0;
        for (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;
}
#include<stdio.h>
int main()
{
	int n = 0;
	int i = 0;
	printf("请输入数字:>");
	scanf_s("%d", &n);
	for (i = 0; i < n; i++)
	{
		int j = 0;
		for (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;
}

编辑于 2024-01-25 16:11:07 回复(0)
#include <stdio.h>  
  
int main() {  
    int size = 0;  
  
    scanf("%d", &size);  
    char arr[size][size];  
    for (int j = 0; j < size; j++)  
        arr[0][j] = '*';  
    for (int i = 1; i < size - 1; i++) {  
        arr[i][0] = '*';  
        for (int j = 1; j < size - 1; j++)  
            arr[i][j] = ' ';  
        arr[i][size - 1] = '*';  
    }  
    for (int j = 0; j < size; j++)  
        arr[size - 1][j] = '*';  
    for (int i = 0; i < size; i++) {  
        for (int j = 0; j < size; j++) {  
            printf("%c ", arr[i][j]);  
        }  
        printf("\n");  
    }  
    return 0;  
}

发表于 2024-01-24 20:30:00 回复(0)
//i==0||i=n-1
//或j==0||j==n-1
#include <stdio.h>

int main() {
    int n;
    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;
}

发表于 2024-01-09 19:50:40 回复(0)
#include <stdio.h>

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

           else {
           for(m=1;m<=i;m++)
           {
            if(m==1||m==i)
            {
                printf("* ");
            }
            else
            {
            printf("  ");
            }
           }
           }
           printf("\n");
        }
    }
    return 0;
}
编辑于 2023-12-05 17:03:44 回复(0)
#include <stdio.h>

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

printf("\n");
    }
    return 0;
}
发表于 2023-12-05 10:45:33 回复(0)
#include<stdio.h>
int main()
{
    int a,i,j;
    while(scanf("%d",&a))
    {
        for(i=0;i<a;i++)
        {
            for(j=0;j<a;j++)
            {
                if(i==0||j==0||i==a-1||j==a-1)
                {
                    printf("*");
                }
                else
                {
                    printf(" ");
                }
            }printf("\n");
        }
    
    return 0;
}
发表于 2023-12-04 18:08:15 回复(0)
#include <stdio.h>

int main()
{
    int a;
    while (scanf("%d", &a) != EOF)
    {
        //a为输入的数
        //i表示行,j表示列
        for(int i=0;i<a;i++)
        {
            for(int j=0;j<a;j++)
            {
                if(i==0 || i==a-1 || j==0 || j==a-1)
                {
                    printf("* ");

                }
                else
                {
                    printf("  ");
                }

            }
            printf("\n");
        }

    }
    return 0;
}
发表于 2023-12-02 15:51:24 回复(0)