特朗普画像

任务内容

Description

特朗普当选了,网上流传着很多段子,也出了特朗普的头像。有人说,特朗普 的头像像一团云。所以今年马云去了美国和特朗普谈中美企业的发展。那么你能帮 忙打印出特朗普的头像吗? 抽象派认为,特朗普的头像上半部分可以由一些*组成。由上下对称的两个梯形 组成,梯形每一层之间相差1个星号。告诉你梯形的上边星号,梯形层数,你能打印 出来吗?。

Input

多组测试,输入2个整数,分别是梯形的上边星号,梯形层数

Output

输出头像。

解题思路详细解释

  1. 整体思路概述
    • 本题要求根据输入的梯形上边星号数量和梯形层数,动态生成并输出一个类似抽象派描述的特朗普头像上半部分(由上下对称的两个梯形组成)的图案。程序通过多个步骤,先绘制图案上半部分,再依据上半部分生成下半部分,最后输出整个图案,并在每次完成输出后清理用于存储图案的数组,以准备处理下一组输入数据。
  2. 变量定义部分
    • 定义了多个整型变量,ij主要用于在各种嵌套循环中控制行和列的计数,n用于接收输入的梯形上边星号数量,m用于接收梯形层数,这两个变量决定了图案的形状特征。p变量用于在绘制图案上半部分时控制每行中空格的数量,实现梯形逐渐变宽的效果,u变量则在绘制图案下半部分时,辅助定位要复制的上半部分图案对应的行,以保证下半部分与上半部分对称。
  3. 图案上半部分绘制部分
    • 首先将p初始化为m - 1,意味着最初每行前面的空格数量是梯形层数减 1,随着行数增加,空格逐渐减少,星号逐渐增多,形成梯形形状。
    • 通过外层for循环控制行数(从第 0 行到第m - 1行),对于每一行,内层for循环控制列数(从第 0 列到第n + m - 1列),根据当前列位置与空格数量p的比较,决定在二维字符数组a对应的位置填充空格(a[i][j] = ' ')还是星号(a[i][j] = '*'),每绘制完一行后,p减 1,使得下一行的星号更靠右,逐步构建出上半部分的梯形图案。
  4. 图案下半部分绘制部分
    • 先将u初始化为m - 2,因为要从图案上半部分倒数第二行开始,将其内容复制到下半部分与之对称的位置,以实现上下对称的效果。
    • 通过外层for循环控制行数(从第m行到第2 * m - 1行),对于每一行,内层for循环利用strcpy函数将上半部分对应行(由u控制)的内容复制到当前行(strcpy(a[i], a[u])),每复制完一行,u减 1,向上半部分更靠上的行获取内容进行复制,这样就构建出了与上半部分对称的下半部分梯形图案。
  5. 图案输出部分
    • 通过两层嵌套的for循环,外层循环控制行数(从第 0 行到第2 * m - 1行),内层循环控制列数(从第 0 列到第n + m - 1列),使用printf函数逐个输出二维字符数组a中存储的字符(printf("%c", a[i][j])),每输出完一行后,通过printf("\n")进行换行操作,从而将整个上下对称的梯形组成的图案完整地输出显示出来。
  6. 数组清理部分
    • 使用memset函数将二维字符数组a的所有元素清空(设置为'\0'),这是为了在下一次输入新的梯形上边星号数量和梯形层数时,能够重新准确地绘制新的图案,避免上次图案残留的字符对新图案产生干扰,保证每次输出的图案都是根据当前输入参数独立生成的。
#include<stdio.h>
#include<string.h>// 定义一个二维字符数组a,用于存储要打印的图案信息,这里假设图案最大尺寸为100x100
char a[100][100];int main(void)
{int i, j, n, m, p, u;  // i、j用于循环计数,n表示梯形的上边星号数量,m表示梯形层数,p用于控制每行空格数量,u用于辅助复制上半部分图案到下半部分// 使用while循环持续读取输入,只要能成功读取两个整数(代表梯形的上边星号数量和梯形层数),就进行后续的图案绘制与输出操作,直到遇到文件结束符(EOF)停止循环while (scanf("%d%d", &n, &m) != EOF){p = m - 1;  // 初始化空格数量,最初空格数量等于梯形层数减1,随着行数增加,空格逐渐减少// 外层循环控制行数,用于绘制图案的上半部分(梯形部分),从第0行开始,总共绘制m行for (i = 0; i < m; i++){// 内层循环控制每行的列数,用于填充字符(空格或星号),总列数为n + m - 1,这个数量与梯形的形状相关for (j = 0; j < n + m - 1; j++){// 如果当前列位置小于当前行对应的空格数量(即还没到该填充星号的位置),则在该位置填充空格if (j < p)a[i][j] = ' ';else// 否则,在该位置填充星号,以此来绘制出梯形形状a[i][j] = '*';}p--;  // 每绘制完一行,空格数量减1,使得下一行的星号更靠右,形成梯形逐渐变宽的效果}u = m - 2;  // 初始化用于复制上半部分图案的行索引,指向从上半部分倒数第二行开始,因为要复制到下半部分与之对称的位置// 外层循环控制行数,用于绘制图案的下半部分(与上半部分对称的梯形部分),从第m行开始,到2 * m - 1行结束,总共绘制m - 1行for (i = m; i < 2 * m - 1; i++){// 内层循环控制每行的列数,通过字符串复制函数strcpy,将上半部分对应行(由u控制)的内容复制到当前行,实现下半部分图案与上半部分对称的效果for (j = 0; j < n + m - 1; j++){strcpy(a[i], a[u]);}u--;  // 每复制完一行,将复制的源行索引减1,向上半部分更靠上的行获取内容,以保证对称复制}// 外层循环控制行数,用于输出整个图案,从第0行开始,到2 * m - 1行结束,即输出整个上下对称的梯形组成的图案for (i = 0; i < m * 2 - 1; i++){// 内层循环控制列数,逐个输出当前行的每个字符,将图案内容打印出来for (j = 0; j < n + m - 1; j++){printf("%c", a[i][j]);}printf("\n");  // 每输出完一行,进行换行操作,以便下一行图案能正确显示}// 使用memset函数将二维字符数组a的所有元素清空(设置为'\0'),为下一次输入新的参数绘制新图案做准备,避免上次图案残留影响下次输出memset(a, '\0', sizeof(a));}return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NIPS2024】Unique3D:从单张图像高效生成高质量的3D网格

背景&#xff08;现有方法的不足&#xff09;&#xff1a; 基于Score Distillation Sampling &#xff08;SDS&#xff09;的方法&#xff1a;从大型二维扩散模型中提取3D知识&#xff0c;生成多样化的3D结果&#xff0c;但存在每个案例长时间优化问题/不一致问题。 目前通过微…

cocotb value cocotb—基础语法对照篇

cocotb—基础语法对照篇 import cocotb from cocotb.triggers import Timer from adder_model import adder_model from cocotb.clock import Clock from cocotb.triggers import RisingEdge import randomcocotb.test() async def adder_basic_test(dut):"""Te…

万物可爬(以爬取浏览器井盖图片和豆瓣电影名字为例)

我们以爬取 井盖图片 这个链接中的图片为例&#xff1a; 点击F12 并选中其中一张图片 &#xff0c;得到它的信息。具体如下&#xff1a;我们可以编写对应的正则表达式&#xff1a; <img[^>]*src"(.*?)"[^>]*alt"井盖图片 的图像结果"[^>]*&g…

MySQL-DDL之数据库操作

文章目录 一. 创建数据库1. 直接创建数据库&#xff0c;如果存在则报错2. 如果数据库不存在则创建3. 创建数据库时设置字符集4. 栗子 二. 查看数据库1. 查看数据库 三. 删除数据库1. 删除数据库 四. 使用数据库1. 使用数据库2. 查看正在使用的数据库 数据定义语言&#xff1a;简…

3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切

3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切 文章目录 0 论文工作1 方法2 实验结果 0 论文工作 最近提出的高斯Splatting方法实现了高质量的实时三维场景新视角合成。然而&#xff0c;它仅仅关注外观和几何建模&#xff0c;缺乏细粒度的物体级场景理解。为了解决…

Unity 使用LineRenderer制作模拟2d绳子

效果展示&#xff1a; 实现如下&#xff1a; 首先&#xff0c;直接上代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;public class LineFourRender : MonoBehaviour {public Transform StartNode;public Transform MidNod…

Linux-ADC驱动实验

上一章我们讲解了如何给 ICM20608 编写 IIO 驱动&#xff0c;ICM20608 本质就是 ADC&#xff0c;因此纯粹的 ADC 驱动也是 IIO 驱动框架的。本章我们就来学习一下如何使用 I.MX6ULL 内部的 ADC&#xff0c;并且在学习巩固一下 IIO 驱动。 ADC 驱动源码简析 设备树下的 ADC 节点…

Rigol DP711自动控制--SCPI命令

通过串口的SCPI命令来控制通道输入输出 也可以用UltraSigma UI来发送SCPI 物理连接&#xff1a; Pin2_2, Pin3_3, Pin5_5 串口命令控制&#xff1a; 命令&#xff1a;9600&#xff0c; 8bit, None SCPI CMD(Standard Commands for Programmable Instruments) OUTPut CH1, On…

Unity类银河战士恶魔城学习总结(P167 Blackhole additional vfx 黑洞技能额外特效)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 为黑洞技能增加了额外的特效 BlackHole_Skill_Controller.cs 功能概要&#xff1a; 1. 黑洞技能的初始化与配置 SetupBlackhole: 设置黑…

小红薯x-s算法最新补环境教程12-06更新(下)

在上一篇文章中已经讲了如何去定位x-s生成的位置&#xff0c;本篇文章就直接开始撸代码吧 如果没看过的话可以看&#xff1a;小红薯最新x-s算法分析12-06&#xff08;x-s 56&#xff09;&#xff08;上&#xff09;-CSDN博客 1、获取加密块代码 首先来到参数生成的位置&…

【银河麒麟操作系统真实案例分享】内存黑洞导致服务器卡死分析全过程

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 现象描述 机房显示器连接服务器后黑屏&#xff…

“为您的家电穿上防震铠甲:优质电器缓冲器

在地震频发地区或日常生活中&#xff0c;确保家电的安全和稳定至关重要。为了防止地震、意外碰撞或其他外力对家电造成损害&#xff0c;采用优质的电器缓冲器就像是为家电穿上了一层坚固的“防震铠甲”。这不仅能够有效减少因震动导致的损坏风险&#xff0c;还能显著延长家电的…

Cherno C++学习笔记 P32 字符串

这篇文章我们来讲字符串。字符串可以说是最重要的变量类型了&#xff0c;因为对字符串的读写极大地影响到我们的程序和用户之间的交互。甚至很多很庞大的程序就只是在处理字符串。 对于字符串&#xff0c;我们同时需要有关于数组和指针的关系&#xff0c;字符串的实现与数组是…

Visual Studio 2022 项目配置常用选项

作为一名C++开发者,经常需要配置第三方库,今天来跟大家截图一下,方便大家快速配置: 头文件包含目录: 或者: 库文件包含目录:

leetcode每日一题(20241207)(20241204补)

leetcode每日一题&#xff08;20241206&#xff09;和补一下 &#xff08;20241204&#xff09;的这天的 &#xff08;20241204): 2056. 棋盘上有效移动组合的数目:题目描述&#xff1a; 有一个 8 x 8 的棋盘&#xff0c;它包含 n 个棋子&#xff08;棋子包括车&#xff0c;后…

AJAX和XHR、fetch、axios的关系

AJAX中有两套原生的API&#xff0c;一个是XHR(XMLHttpRequest)&#xff0c;一个是Fetch API axios是第三方库&#xff0c;在浏览器环境中使用的是XHR umi-request也是第三方库&#xff0c;在浏览器环境中使用的是Fetch 在 AJAX&#xff08;Asynchronous JavaScript and XML&am…

Sarcomere仿人灵巧手ARTUS,20个自由度拓宽机器人作业边界

Sarcomere Dynamics 是一家深度技术先驱&#xff0c;通过开发和商业化仿人机械来改变机器人行业。专注于为科研人员&#xff0c;系统集成商和制造商提供更实惠、更轻便且更灵活的末端执行器替代品。凭借创新的致动器技术&#xff0c;创造了一款紧凑、轻便且非常坚固的机械手Art…

【Python库安装】Python环境安装hdf4处理库pyhdf

目录 pyhdf库简介功能简介 pyhdf库安装1. 使用 pip 安装&#xff08;推荐方法&#xff09;2. 从源码安装3. conda安装 参考 pyhdf库简介 pyhdf 是一个 Python 库&#xff0c;用于读取和处理 HDF4 格式的文件&#xff08;注意&#xff1a;HDF5 格式文件需要用 h5py 库&#xff…

34.1 uber开源的m3db简介

本节重点介绍 : m3db自己的定位m3db自己的架构m3db自己的组件 两句话简介 M3最初是在优步开发的&#xff0c;目的是提供对优步业务运营&#xff0c;微服务和基础架构的可视性由于M3具有轻松进行水平扩展的能力&#xff0c;因此它为所有监视用例提供了一个集中式存储解决方案…

WebSocket 通信说明与基于 ESP-IDF 的 WebSocket 使用

一、 WebSocket 出现的背景 最开始 客户端&#xff08;Client&#xff09; 和 服务器&#xff08;Server&#xff09; 通信使用的是 HTTP 协议&#xff0c;HTTP 协议有一个的缺陷为&#xff1a;通信只能由客户端&#xff08;Client&#xff09;发起。 在一些场景下&#xff0…