• 【C语言练习——打印空心正方形及其变形】


    活动地址:毕业季·进击的技术er

    夏日炎炎,热浪中我们迎来毕业季,这是告别,也是迈向新起点的开始。这是一个毕业的月份,每年看到很多毕业生都离校上班,在校生准备考试和暑假实习,都非常感慨,不管怎样,作为在校生,玩好的同时,还是要能够扎实的学习,打好坚实基础,从初学C语言开始,为后续的实习找工作做准备。


    前言

    前面已经在【C语言练习——打印正方形及其变形】【C语言练习——打印空心下三角及其变形】【C语言练习——打印空心上三角及其变形】 练过打印空心上三角及其变形、打印空心三角形及其变形、打印正方形及其变形。

    本文在此基础上,练习打印空心正方形及其变形


    1、打印空心正方形

    1.1 图形1——无空格版

    //打印空心正方形 无空格
    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 || j == 0 || i == n - 1 || j == n - 1)
    					printf("*");
    				else
    					printf(" ");//不在边界上的点都是空格			
    			}
    			printf("\n");
    		}
    	}
    	
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    结果见下图:

    在这里插入图片描述

    1.2 图形2——有空格版

    //打印空心正方形 空格版
    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 || j == 0 || i == n - 1 || j == n - 1)
    					printf("* ");
    				else
    					printf("  ");//不在边界上的点都是空格			
    			}
    			printf("\n");
    		}
    	}
    
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    结果见下图:

    在这里插入图片描述

    1.3 图形3——旋转45度,没有空格版

    //打印正方形,旋转45度,没有空格版
    int main()
    {
    	int n = 0;
    	while (scanf("%d", &n) != EOF)
    	{
    		//打印上半部分 n
    		for (int i = 0; i < n; i++)
    		{
    			//打印一行
    			//打印空格
    			int j = 0;
    			for (j = 0; j < n - 1 - i; j++)
    			{
    				printf(" ");
    			}
    			//打印*
    			for (j = 0; j < 2 * i + 1; j++)
    			{//满足条件输出 * ,即在边界上就是 *
    				if (j == 0 || j == 2 * i )
    					printf("*");
    				else
    					printf(" ");//不在边界上的点都是空格
    			}
    			printf("\n");
    		}
    		//打印下半部分 n-1
    		for (int i = 0; i < n - 1; i++)
    		{
    			//打印一行
    			//打印空格
    			int j = 0;
    			for (j = 0; j <= i; j++)
    			{
    				printf(" ");
    			}
    			//打印*
    			for (j = 0; j < (n - 1 - i) * 2 - 1; j++)
    			{//满足条件输出 * ,即在边界上就是 *
    				if (j == 0 || j == (n - 1 - i) * 2 - 2)
    					printf("*");
    				else
    					printf(" ");//不在边界上的点都是空格			
    			}
    			printf("\n");
    		}
    		
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    结果见下图:

    在这里插入图片描述

    1.4 图形4——旋转45度,有空格版

    //打印正方形,旋转45度,有空格版
    int main()
    {
    	int n = 0;
    	while (scanf("%d", &n) != EOF)
    	{
    		//打印上半部分 n
    		for (int i = 0; i < n; i++)
    		{
    			//打印一行
    			//打印空格
    			int j = 0;
    			for (j = 0; j < n - 1 - i; j++)
    			{
    				printf(" ");
    			}
    			//打印*
    			for (j = 0; j <= i; j++)
    			{//满足条件输出 * ,即在边界上就是 *
    				if (j == 0 || i == j)
    					printf("* ");
    				else
    					printf("  ");//不在边界上的点都是空格
    			}
    			printf("\n");
    		}
    		//打印下半部分 n-1
    		for (int i = 0; i < n - 1; i++)
    		{
    			//打印一行
    			//打印空格
    			int j = 0;
    			for (j = 0; j <= i; j++)
    			{
    				printf(" ");
    			}
    			//打印*
    			for (j = 0; j < (n - 1 - i); j++)
    			{//满足条件输出 * ,即在边界上就是 *
    				if (j == 0 || j == n - i - 2)
    					printf("* ");
    				else
    					printf("  ");//不在边界上的点都是空格			
    			}
    			printf("\n");
    		}
    	}
    	
    	return 0;
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    结果见下图:

    在这里插入图片描述


    总结

    本文练习打印空心正方形及其变形,主要练习了:

    • 外循环、内循环的应用
    • 注意行数、空格数、符号*数之间的数学表达式

    活动地址:毕业季·进击的技术er

  • 相关阅读:
    计算机网络---第四章网络层---ipv4---应用题
    盲打键盘的正确指法指南
    七牛直播推流端flutter插件,支持Android和iOS
    【算法】时间复杂度,空间复杂度
    Zookeeper中的Watch机制的原理?
    ppt 插入柱状图及基础功能调整
    无损以太网的ROCE革命,队列的缓存空间优化分析
    华为机试真题 Java 实现【最长连续方波信号】
    笔记本开启WiFi
    括号有效配对题型问题解法
  • 原文地址:https://blog.csdn.net/taibudong1991/article/details/125493285