【习题——菱形的打印】

news2025/2/25 21:36:10

一、打印下面的图形(菱形)

我们可以先来看一个简单点的菱形:
输入描述:
输入一个char类型字符
输出描述:
输出一个用这个字符填充的对角线长5个字符,倾斜放置的菱形:
在这里插入图片描述

1、思路:

我们看到这个图形,可以直接打印出来,这个方法也是最简单的:

#include<stdio.h>
int main()
{
	char ch;
	scanf("%c", &ch);
	printf("  %c\n", ch);
	printf(" %c%c%c\n", ch,ch,ch);
	printf("%c%c%c%c%c\n",ch,ch, ch, ch, ch);
	printf(" %c%c%c\n", ch, ch, ch);
	printf("  %c\n", ch);
	return 0;
}

通过我们敲代码的过程可以发现,这种敲法太累了,不能节省时间。所以我们可以仔细看看这题,发现图形中的规律。

在这里插入图片描述
我们可以分成上下两个部分来发现规律,首先定义一个变量i,用它来表示行数,这里我是从0开始计算的,所以我们i的初值就赋值成0。第0行的时候,空格有2个,符号有1个;第1行的时候,空格有1个,符号有3个;第2行的时候,空格有0个,符号有5个,这就是上半部分的规律。

附一个图(便于理解):
在这里插入图片描述
我们再来看看下半部分:
在这里插入图片描述
我们依然可以从0开始算行数,一共有1行。
在这里插入图片描述
然后我们可以发现空格与行数之间的关系,以下半部分为例:

行数是0,空格可以用1乘以0+1表示,也就是(1*行数+1),这个式子对于第1行也同样适用,所以,我们的规律找到了,符号也是如此去寻找规律。

2、代码:

#include<stdio.h>
int main()
{
	char ch;
	scanf("%c", &ch);
	int i = 0;
	//上半部分
	for (i = 0; i < 3; i++)   //3是上半部分的行数
	{
		//根据图形,我们先要打印空格
		for (int j = 0; j <2-i; j++)//j是我们打印多少个空格
		{
			printf(" ");
		}
		//打印符号
		for (int j = 0; j < 2 * i + 1; j++)
		{
			printf("%c", ch);
		}
		printf("\n");
	}
	//打印下半部分
	for (i = 0; i < 3; i++)
	{
		//空格
		for (int j = 0; j < 1 * i + 1; j++)
		{
			printf(" ");
		}
		//字符
		for (int j = 0; j < 2 * (2 - i) - 1; j++)
		{
			printf("%c", ch);
		}
		printf("\n");
	}
	return 0;
}

输入一个字符:#
在这里插入图片描述
我们可以发现这个方法比直接输出要难理解许多,而且写的也很多,但是直接输出有很大的弊端,如果像下面这个图形的话,就不能简单的直接输出了。

3、菱形(大)

在这里插入图片描述
像这种图形就不适合一个一个的输出,这就需要我们去找规律,也是一样,分成上下部分去找。

在这里插入图片描述
在这里插入图片描述

发现规律的原则是一样的,大家可以自己下去找找看。

4、代码:
#include<stdio.h>
int main()
{
	char ch;
	scanf("%c", &ch);
	int i = 0;
	for (i = 0; i < 7; i++)
	{
		for (int j = 0; j <6-i; j++)
		{
			printf(" ");
		}
		for (int j = 0; j < 2 * i + 1; j++)
		{
			printf("%c", ch);
		}
		printf("\n");//换行,每打印完一行要换行
	}
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < i + 1; j++)
		{
			printf(" ");
		}
		for (int j = 0; j < 2 * (6 - i)-1; j++)
		{
			printf("%c", ch);
		}
		printf("\n");
	}
	return 0;
}

二、不知道行数的情况下,自己输入行数

上面的代码写完之后我们可以发现,每个代码都需要我们自己输入行数,但如果题目没有告诉行数就让我们输出菱形,我们该如何写?其实只需要用一个字母代表上面那些代码中的数字就行了,但是我们只需要输入菱形图一半的行数就可以了

#include<stdio.h>
int main()
{
	char ch;
	scanf("%c", &ch);
	int n = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n - 1 - i; j++)
		{
			printf(" ");
		}
		for (int j = 0; j < 2 * i + 1; j++)
		{
			printf("%c", ch);
		}
		printf("\n");
	}
	for (int i = 0; i <n; i++)
	{
		for (int j = 0; j < i+1; j++)
		{
			printf(" ");
		}
		for (int j = 0; j < 2 * (n - 1 - i) - 1; j++)
		{
			printf("%c", ch);
		}
		printf("\n");
	}
	return 0;
}

在这里插入图片描述

老样子,最后附上一张图片吧(希望大家喜欢!)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务 人工智能AI 物联网智慧工地云平台源码

目录 ​编辑 智慧工地架构 智慧工地系统 智慧工地云平台功能模块 1、基础数据管理 2、考勤管理 3、安全隐患管理 4、视频监控 5、塔吊监控 6、升降机监控 7、移动端数据推送 智慧工地管理平台子系统构成 智慧工地物联网解决方案&#xff0c;对工地施工安全人员、设…

如何使用 Pandas 删除 DataFrame 中的非数字类型数据?

目录 前言 识别非数字类型数据 删除非数字类型数据 1. 使用 drop() 方法删除非数字类型的列 2. 使用布尔索引删除非数字类型的行 3. 使用 applymap() 方法转换非数字类型数据 4. 使用 to_numeric() 函数转换非数字类型数据 应用实例&#xff1a;处理销售数据 总结 前言 在…

SemiDrive E3 MCAL 开发系列(2) – Port Dio 模块的使用

一、概述 本文将会介绍如何导入 SemiDrive E3 系列 MCU 的 MCAL 配置工程以及介绍 Port 和 Dio 模块的基本配置&#xff0c;并且会结合实际操作的介绍&#xff0c;帮助新手快速了解并掌握这两个模块的使用&#xff0c;文中的 MCAL 是基于 PTG3.0 的版本&#xff0c;开发板是官…

android应用开发基础知识,安卓面试2020

第一章&#xff1a;设计思想与代码质量优化 1、设计思想六大原则 2、三大设计模式 3、数据结构 4、算法 第二章&#xff1a;程序性能优化 1、启动速度和执行效率优化 2、布局检测与优化 3、内存优化 4、耗电优化 5、网络传输与数据存储优化 6、APK大小优化 7、屏幕适配 8、…

【教3妹学编程-算法题】标记所有下标的最早秒数 II

3妹&#xff1a;2哥2哥&#xff0c;你有没有看到上海女老师出轨男学生的瓜啊。 2哥 : 看到 了&#xff0c;真的是太毁三观了&#xff01; 3妹&#xff1a;是啊&#xff0c; 老师本是教书育人的职业&#xff0c;明确规定不能和学生谈恋爱啊&#xff0c;更何况是出轨。 2哥 : 是啊…

【小沐学QT】QT学习之信号槽使用

文章目录 1、简介2、代码实现2.1 界面菜单“转到槽”方法2.2 界面信号槽编辑器方法2.3 QT4.0的绑定方法2.4 QT5.0之后的绑定方法2.5 C11的方法2.6 lamda表达式方法 结语 1、简介 在GUI编程中&#xff0c;当我们更改一个小部件时&#xff0c;我们通常希望通知另一个小程序。更普…

【Unity】构建简单实用的年份选择器(简单原理示范)

在许多应用程序和游戏中&#xff0c;年份选择是一个常见的需求。无论是在日历应用程序中查看事件&#xff0c;还是在历史类游戏中选择时间段&#xff0c;年份选择器都是用户体验的重要组成部分&#xff0c;下面实现一个简易的年份选择器。 一、效果预览&#xff1a; 目录 一、…

sylar高性能服务器-日志(P43-P48)内容记录

文章目录 P43&#xff1a;Hook01一、HOOK定义接口函数指针获取接口原始地址 二、测试 P44-P48&#xff1a;Hook02-06一、hook实现基础二、class FdCtx成员变量构造函数initsetTimeoutgetTimeout 三、class FdManager成员变量构造函数get&#xff08;获取/创建文件句柄类&#x…

前端架构: 脚手架之包管理工具的案例对比及workspaces特性的使用与发布过程

npm的workspaces 特性 1 &#xff09;使用或不使用包管理工具的对比 vue-cli 这个脚手架使用 Lerna 管理&#xff0c;它的项目显得非常清晰在 vue-cli 中包含很多 package 点开进去&#xff0c;每一个包都有package.json它里面有很多项目&#xff0c;再没有 Lerna 之前去维护和…

【Spring】回顾反射机制

一、分析方法四要素 package org.qiu.reflect;/*** author 秋玄* version 1.0* email qiu_2022aliyun.com* project Spring* package org.qiu.reflect* date 2022-11-11-17:26* since 1.0*/ public class SomeService {public void doSome(){System.out.println("public …

【Unity】如何在Unity 中创建带有缩放效果的滚动视图(具有吸附效果的实现与优化)?

效果预览&#xff1a; 目录 效果预览&#xff1a; 一、引言&#xff1a; 二、问题描述 三、解决方案&#xff1a; 三、优化&#xff1a; 四、结论 一、引言&#xff1a; 在Unity开发中&#xff0c;经常需要实现滚动视图&#xff08;ScrollView&#xff09;中的内容吸附到…

个人博客系列-Django部署-nginx(3)

使用Nginx uwsgi进行部署django项目 一. 检查项目是否可以运行 启动项目 python manage.py runserver 0.0.0.0:8099输入ip:8099 查看启动页面 出现上述页面表示运行成功 二. 安装uwsgi并配置 2.1 下载uwsgi pip install uwsgi新建文件test.py写入内容&#xff0c;测试一…

面试笔记系列六之redis+kafka+zookeeper基础知识点整理及常见面试题

目录 Redis redis持久化机制&#xff1a;RDB和AOF Redis 持久化 RDB的优点 RDB的缺点 AOF 优点 AOF 缺点 4.X版本的整合策略 Redis做分布式锁用什么命令&#xff1f; Redis做分布式锁死锁有哪些情况&#xff0c;如何解决&#xff1f; Redis如何做分布式锁&#xff1f…

Logic Pro:专业音乐制作软件,为你的音乐插上翅膀

Logic Pro是一款功能强大的音乐制作软件&#xff0c;专为专业音乐人和音乐爱好者设计。它提供了全面的音乐创作工具&#xff0c;包括音频录音、编辑、混音、合成以及自动化等功能&#xff0c;让你能够轻松实现音乐梦想。 Logic Pro软件获取 首先&#xff0c;Logic Pro拥有卓越…

Tomcat:Java Web

简介 Apache Tomcat 是 Java Web 应用程序开发中最为常用的服务器之一。作为一个开源、轻量级的 Servlet 容器和 JSP 容器&#xff0c;Tomcat 提供了一个稳定可靠的运行环境&#xff0c;使得开发者可以快速开发、部署和管理 Java Web 应用程序。本文将深入介绍 Tomcat 的特点、…

js 面试 sort背后原理及排序使用方法

1 sort 概念 2 原理 之前版本是用的插入排序 和 快速排序。 现在用的是冒泡排序。 3 排序方式&#xff1a; 2-1 根据字符码点排序 2-2 从小到大或从大到小排序 2-3 对数组中的对象进行排序

高校水电预付费管控系统

高校水电预付费管控系统在现代高校管理中扮演着重要角色。这一系统通过整合先进的科技手段&#xff0c;如智能计量设备和互联网技术&#xff0c;实现对校园水电消费的精准监控和管理。首先&#xff0c;高校水电预付费管控系统能够有效监测学生宿舍、教学楼等区域的实时用水用电…

Zookeeper基础入门-2【ZooKeeper 分布式锁案例】

Zookeeper基础入门-2【ZooKeeper 分布式锁案例】 四、ZooKeeper-IDEA环境搭建4.1.环境搭建4.1.1.创建maven工程&#xff1a;zookeeper4.1.2.在pom文件添加依赖4.1.3.在项目的src/main/resources 目录下&#xff0c;新建文件为“log4j.properties”4.1.4.创建包名com.orange.zk …

网站数据加密之Hook通用方案

文章目录 1. 写在前面2. 请求分析3. 编写Hook4. 其他案例 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…

Python进阶学习:Pickle模块--dump()和load()的用法

Python进阶学习&#xff1a;Pickle模块–dump()和load()的用法 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您…