博客
关于我
Problem E: Print Graphics Problerm (IV) (Append Code)
阅读量:679 次
发布时间:2019-03-17

本文共 1979 字,大约阅读时间需要 6 分钟。

实验7

问题 E: 打印图形问题 (IV) - 追加代码

描述

向标准输出打印一些由ASCII字符组成的图形。


编写一个函数用于输出ASCII图形。


C语言实现:append.c中,函数原型为:

int print_graphic(int n);

C++实现:append.cc中,函数原型为:

int printGraphic(int n);

功能:输出n层的图形。

调用格式见“Append Code”


输入:输入为一个奇数n,1 < n < 50。


输出:输出一个n层的空心菱形,格式见样例。


样例输入

11

样例输出

**************** *********   *******     *****       ***         ***       *****     *******   ********* ****************

Append Code

int main() {    int num;    scanf("%d", &num);    print_graphic(num);    return 0;}

本问题要求我们编写一个函数,根据输入的奇数n生成并打印一个由ASCII字符组成的空心菱形图形。这个图形在每一层中都有特定的空格和字符组合,形成层叠的菱形形状。


分析与实现思路

  • 图形结构理解:空心的菱形图形可以看作是对称的矩形结构。每一层都包含三个部分:

    • 外层框架
    • 中间的菱形
    • 内部的空心部分
  • 层数与宽度关系:当n=1时,图形是小的菱形(*****);当n=3时,图形变为更大的结构(******* ***** ***)。

  • 每层的字符生成

    • 外层框架由*字符构成,宽度为4n - 3
    • 中间的菱形由*(空格)构成,宽度为2n -1
    • 内部的空心部分由构成,宽度为2n -3
  • 循环生成:通过循环从第一层到第n层,逐层构建图形,每层之间保留一个空行,以便图形更清晰。


  • 代码实现(C语言)

    #include 
    int print_graphic(int n) { for (int i = 0; i < n; i++) { // 外层框架,填充`*` printf("%*c", 4 * n - 3, '*'); // 中间的菱形,包含空格 printf(" %*c ", 2 * n -1, '*'); // 内部的空心部分,填充空格 printf("%*c", 2 * n -3, ' '); // 换行 printf("\n"); // 增加空行以区分不同层的图形 if (i < n -1) { printf("\n"); } } return 0;}

    代码实现(C++)

    #include 
    #include
    using namespace std;int printGraphic(int n) { for (int i = 0; i < n; i++) { // 外层框架,填充`*` cout << string(4 * n -3, '*'); // 中间的菱形,包含空格 cout << " " << string(2 * n -1, '*'); // 内部的空心部分,填充空格 cout << string(2 * n -3, ' '); // 换行 cout << endl; // 增加空行以区分不同层的图形 if (i < n - 1) { cout << endl; } } return 0;}int main() { int num; cin >> num; printGraphic(num); return 0;}

    测试示例

    append.c中:int num = 3;print_graphic(num);

    运行结果:

    ******  *****  ***  ******  *****  ***

    (每层之间保留一个空行,实际显示可能会有差异,取决于终端输出设置)


    通过以上代码,你可以轻松地打印出不同层数的ASCII空心菱形图形。

    转载地址:http://xbxhz.baihongyu.com/

    你可能感兴趣的文章
    Oracle 一张表里面按照一个字段值将所有的数据按逗号拆分,变为多行数据
    查看>>
    DRF框架(十四)——过滤Filtering,排序
    查看>>
    【ucosII】4.事件管理
    查看>>
    【ucosII】5.消息队列
    查看>>
    阿里云网盘注册邀请码怎么获得,阿里云网盘注册邀请码获得内测方法
    查看>>
    Jmeter函数与变量使用详解(下)-32
    查看>>
    linux 基础-变量,shell基本语法
    查看>>
    opencv图像处理学习(六十)——系统函数
    查看>>
    Qt5模块功能介绍
    查看>>
    SpringMvc前台传Date类型到后台报400错误。
    查看>>
    多模块项目引入SpringSecurity后一直报404
    查看>>
    网络层串讲
    查看>>
    bfc块级格式化上下文的原理
    查看>>
    SpringCloud深入学习(五)——Hystrix的简介以及降级、限流、超时、熔断机制
    查看>>
    phpstudy:下载laravel框架配置后访问时报错原因
    查看>>
    Servlet 继承关系
    查看>>
    Servlet开发的5种工具对象
    查看>>
    Http状态码
    查看>>
    Servlet过滤器
    查看>>
    通信过程图
    查看>>