C语言之随心所欲打印三角形,金字塔,菱形(倒金字塔)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点): 我要学编程(ಥ_ಥ)-CSDN博客

目录

三角形

金字塔

倒金字塔

菱形


三角形

题目:根据输入的行数打印对应的三角形。(用 * 号打印)

cs 复制代码
#include <stdio.h>
int main()
{
	int row = 0;
	scanf("%d", &row);
	int i = 0;
	for (i = 0; i < row; i++)//打印行
	{
		int j = 0;
		for (j = 0; j < 2 * i + 1; j++)//打印列
		{
			printf("*");
		}
		printf("\n");//换行
	}
	return 0;
}

金字塔

题目:根据输入的行数打印对应的金字塔。(用 * 号和空格打印)

cs 复制代码
#include <stdio.h>
int main()
{
	int row = 0;
	scanf("%d", &row);
	int i = 0;
	for (i = 0; i < row; i++)//行
	{
		//金字塔除了星号(*),还有空格。每一行只有星号要全部打印,空格只要打印一半(左边的)
		int j = 0;
		for (j = 0; j < row - i; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

至于右边,我们只需要打印*,不需要打印空格。而左边就都需要打印 ,我们先来找一下规律。(这种打印图形的都是有规律的) 空格是5--->1的逐级递减(只看左边),而*是1,3--->9的奇数跳跃增加(全部一起看)。空格 = 行数 - i ,* = 2i + 1。当然这个题的规律不止这一种,我就不列举了。

倒金字塔

题目:根据输入的行数打印对应的菱形。(用 * 号和空格打印)

cs 复制代码
#include <stdio.h>
int main()
{
	int row = 0;
	scanf("%d", &row);
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < i + 1; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * (row - i) - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

空格 = i + 1,因为是逐级变化,肯定是与 i 有关(第一个空格数是1) 。* = 2(row- i)- 1。* 是跳跃变化,就肯定和2 * i 有关系,再通过多组推敲,得出是这个规律。

菱形

题目:根据输入的行数打印对应的菱形。(用 * 号和空格打印)

cs 复制代码
#include <stdio.h>
int main()
{
	int row = 0;
	scanf("%d", &row);
	int uppart = row / 2 + row % 2;
	int lopart = row - uppart;
	int i = 0;
	//打印上半部分
	for (i = 0; i < uppart; i++)
	{
		int j = 0;
		for (j = 0; j < uppart - i; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	//打印下半部分//就是倒金字塔
	for (i = 0; i < lopart; i++)
	{
		int j = 0;
		for (j = 0; j < i + 2; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * (lopart - i) - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

上半部分的打印,其实就是打印那个金字塔。而下半部分就是倒着的金字塔。

空格 = i + 2,因为是逐级变化,肯定是与 i 有关 。* = 2(lopart - i)- 1。* 是跳跃变化,就肯定和2 * i 有关系,再通过多组推敲,得出是这个规律。

总结:这种图形的打印是有规律的。这个规律得通过多组数据来推敲,演化,来得出。以上的所有图形的空格数都是以输入的数作为参照的。(就是输入的行数的那一列,不计数空格数)

相关推荐
这料鬼有毒17 分钟前
二刷hot100-1143.最长公共子序列
算法·leetcode·动态规划
政企项目老覃1 小时前
边缘 AI 推理部署:安防零售场景下的模型裁剪与端侧落地实践
人工智能·程序人生·算法·性能优化·vllm
Logic1012 小时前
C语言/数据结构贪心算法题解:买卖股票的最佳时机——一次交易最大利润(O(n)时间O(1)空间)
c语言·数据结构·贪心算法·数组·时间复杂度·算法题·股票交易
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出货币交易中的“独特面值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
GreenTea3 小时前
发布 3 天登顶 HN:不生成一个字的模型 Jev,我把它的源码和黑料都扒了一遍
前端·后端·算法
庖丁解牛3 小时前
无穷小不是一个“神秘小数”,而是一场奔向 0 的过程
算法
ZPC82104 小时前
YOLO26 识别串番茄果梗
人工智能·深度学习·算法·机器学习
景熙55234 小时前
14.Java 集合框架从入门到源码万字详解(含 ArrayList/LinkedList/HashMap 源码、泛型通配符、红黑树)
java·开发语言·数据结构·算法
aaaameliaaa4 小时前
结构体 结构体
c语言·笔记·算法
是隼人5 小时前
buuctf-pwn PWN8题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门