打印ASCII金字塔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印ASCII金字塔相关的知识,希望对你有一定的参考价值。

我试图打印以下ASCII金字塔。

A B C D E F G F E D C B A
A B C D E F   F E D C B A 
A B C D E       E D C B A 
A B C D           D C B A 
A B C               C B A 
A B                   B A 
A                       A 

但我得到了以下的输出。

A B C D E F G       F E D C B A
A B C D E F     F E D C B A 
A B C D E         E D C B A 
A B C D             D C B A 
A B C                 C B A 
A B                     B A 
A                         A

第一行是混乱的。谁能帮我得到想要的输出?

下面是代码。

#include <stdio.h>;
#include <stdlib.h>;

void main() {
  unsigned long int x, y, z;
  printf("
THIS PROGRAM PRINTS ASCII PYRAMID 
");
  char c;
  y = 71;
  z = 12;
  for (int i = 0; i < 7; i++) {

    for (int j = 65; j <= y; ++j) {
      printf("%c ", j); /*prints left side of the string */
    }

    for (int k = 0; k < 2 * i; ++k) {

      printf("  "); /*prints spaces between the strings */
    }
    for (int l = y; l > 64; l--) {
      if (l == 71) {
        for (int p = 70; p > 64; p--)
          printf("%c ", i);
      } else
        printf("%c ", l); /* prints right part of the string */
    };
    y = y - 1;
    printf("
");
  }
}
答案

我发现你的代码有两大问题。

第一,你在左右字符之间多打印了一对2个空格。

第二,你的

for (int p = 70; p > 64; p--)
  printf("%c ", i);

部分发出垃圾(控制字符)和额外的空格。

这个程序(也有小的修正)看起来工作得很好。

/* remove extra semicolons */
#include <stdio.h>
#include <stdlib.h>

/* use standard return type */
int main() {
  unsigned long int x, y, z;
  printf("
THIS PROGRAM PRINTS ASCII PYRAMID 
");
  char c;
  y = 71;
  z = 12;
  for (int i = 0; i < 7; i++) {

    for (int j = 65; j <= y; ++j) {
      printf("%c ", j); /*prints left side of the string */
    }

    /* reduce number or pairs of spaces to print */
    for (int k = 0; k < 2 * i - 1; ++k) {

      printf("  "); /*prints spaces between the strings */
    }
    for (int l = y; l > 64; l--) {
      /* remove extra printing */
      if (l != 71)
        printf("%c ", l); /* prints right part of the string */
    };
    y = y - 1;
    printf("
");
  }
}

以上是关于打印ASCII金字塔的主要内容,如果未能解决你的问题,请参考以下文章

java n的金字塔

如何打印完整的金字塔图案?

怎么用java打印金字塔

打印数字金字塔(python)

ForDemo.java打印一个金字塔

用python打印数字金字塔