Problem E: Print Graphics Problerm (IV) (Append Code)
发布日期:2021-05-20 06:36:29 浏览次数:11 分类:精选文章

本文共 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空心菱形图形。

    上一篇:Problem A: 字符串的逆序
    下一篇:Problem D: 编写函数:数组元素的查找 (Append Code)

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年04月17日 14时40分45秒