我应该如何用包含在 * 框内的大字体打印 HI?

The*_*Sid 2 c++ pretty-print ascii-art c++11

我需要在 C++ 中用 * 框括起来的大块字母输出 Hi。所需输出的图像到目前为止,我只设法找出一种基本的方式,逐行打印每一行,但有没有更聪明的方法来做到这一点?

这是我到目前为止所管理的

#include <iostream>
using namespace std;

int main(){
  cout << "**********************" << endl;
  cout << "*                    *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*   HHHHHHHH     II  *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*   HH    HH     II  *" << endl;
  cout << "*                    *" << endl;
  cout << "**********************" << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

ene*_*dil 6

你可以这样做:

#include <iostream>
using namespace std;

int main(){
  for (int i = 0; i < 13; ++i) {
    for (int j = 0; j < 22; ++j) {
      char c = ' ';
      if (i == 0 || i == 12) c = '*';
      else if (j == 0 || j == 21) c = '*';
      else if (i >= 2 && i <= 10) {
        if (j >= 5 && j <= 12) {
          if (i == 6 || j == 5 || j == 6 || j == 11 || j == 12) c = 'H';
        }
        if (j == 17 || j == 18) c = 'I';
      }
      cout << c;
    }
    cout << "\n";
  }
}
Run Code Online (Sandbox Code Playgroud)

不过我不推荐。


ein*_*ica 5

在我看来,大多数其他答案并不比你的“更聪明”。

他们比你的。该程序可能比您的小。但它们仍然是特殊的,除了打印“HI”之外没有任何用处。那么为什么不像你一样以直接的方式来做呢?

现在,如果您希望能够以这种形式打印任意封闭的消息 - 那么您就有理由尝试“优化”、使用循环等。为此,您或许可以查看figlet实用程序,它接受任意文本并使用自定义字体文件:

$ figlet -f bigascii12 HI

 ##    ##   ######  
 ##    ##   ######  
 ##    ##     ##    
 ##    ##     ##    
 ##    ##     ##    
 ########     ##    
 ########     ##    
 ##    ##     ##    
 ##    ##     ##    
 ##    ##     ##    
 ##    ##   ######  
 ##    ##   ######  

Run Code Online (Sandbox Code Playgroud)