C语言 —— 图形打印

题目1:

思路:
如果我们要打印一个实心正方形,其实就是一个二维数组,i控制行,j控制列,行列不需要控制,arrij直接打印星号即可。
对于空心正方形,我们只需要控制行和列的条件,当i== 0或i<n-1,j==0或j<n-1条件成立时,我们才打印星号,其他地方打印空格即可。

代码实现如下:

c 复制代码
#include <stdio.h>

int main()
{
	int arr[20][20] = { 0 };
	int n = 0;
	while (scanf("%d", &n) != EOF)
	{
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				//1.打印星号
				if ((i == 0) || (i == n - 1) || (j == 0) || (j == n - 1))
				{
					printf("* ");
				}
				//2.打印空格
				else
				{
					printf("  ");
				}

			}
			printf("\n");
		}
	}
	return 0;
}

题目2:

思路:

通过观察我们发现,当i == j时,打印主对角线的星号,当i + j ==n-1时,打印次对角线的星号,其他地方打印空格即可。

代码实现如下:

c 复制代码
#include <stdio.h>

int main()
{
	int arr[20][20] = { 0 };
	int n = 0;
	while (scanf("%d", &n) != EOF)
	{
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				//1.打印星号
				if ((i == j) || (i + j) == n-1)
				{
					printf("*");
				}
				//2.打印空格
				else
				{
					printf(" ");
				}
			}
			printf("\n");
		}
	}
	return 0;
}

题目3:

思路:我们分为上半部分和下半部分的打印:

c 复制代码
#include <stdio.h>

int main()
{
	int line = 0;
	scanf("%d", &line);
	//打印上半部分
	for (int i = 0; i < line; i++)
	{
		//1.打印空格
		for (int j = 0; j < line - 1 - i; j++)
		{
			printf(" ");
		}
		//2.打印星号
		for (int j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	//打印下半部分
	for (int i = 0; i < line - 1; i++)
	{
		//1.打印空格
		for (int j = 0; j < i + 1; j++)
		{
			printf(" ");
		}
		//2.打印星号
		for (int j = 0; j < (line - 1 - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}

	return 0;
}
相关推荐
论迹复利1 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
736c1 小时前
C语言-结构体 08
c语言
张宇Joaquin1 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
736c1 小时前
C语言-数组 07
c语言·开发语言
kakakahahahaha2 小时前
【Windows】C盘低空间反复复发的排查与扩容边界
c语言·windows·电脑·笔记本电脑·内容运营·软件需求
宸津-代码粉碎机2 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
LorryJovens3 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
LuminousCPP4 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
Brilliantwxx4 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
wuyk5555 小时前
从零吃透Modbus通信|第7章:终极工程整合(模块化架构、双模式主机从机、RTOS适配、量产级模板)
c语言·stm32·学习·架构