博客
关于我
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/

    你可能感兴趣的文章
    我用wxPython搭建GUI量化系统之多只股票走势对比界面
    查看>>
    selenium+python之切换窗口
    查看>>
    重载和重写的区别:
    查看>>
    搭建Vue项目步骤
    查看>>
    账号转账演示事务
    查看>>
    SpringBoot找不到@EnableRety注解
    查看>>
    简易计算器案例
    查看>>
    在Vue中使用样式——使用内联样式
    查看>>
    Find Familiar Service Features in Lightning Experience
    查看>>
    Explore Optimization
    查看>>
    连接Oracle数据库经常报错?关于listener.ora和tnsnames.ora文件的配置
    查看>>
    map[]和map.at()取值之间的区别
    查看>>
    【SQLI-Lab】靶场搭建
    查看>>
    【Bootstrap5】精细学习记录
    查看>>
    Struts2-从值栈获取list集合数据(三种方式)
    查看>>
    参考图像
    查看>>
    设计模式(18)——中介者模式
    查看>>
    error LNK2019:无法解析的外部符号_imp_CryptAcquireContextA@20
    查看>>
    推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
    查看>>
    【专题3:电子工程师 之 上位机】 之 【46.QT音频接口】
    查看>>