C 如何创建字母金字塔?

C 如何创建字母金字塔?,c,char,C,Char,我正在尝试创建一个字母金字塔 我的代码经过编译,最初可以工作,但在请求用户输入一封信的初始提示后不会打印。以下是我的代码当前的样子: intmain(void { char letter = 'A'; char display; char output; int row; char spaces = ' '; printf ("Please enter a lowercase letter!"); scanf ("%c", &

我正在尝试创建一个字母金字塔

我的代码经过编译,最初可以工作,但在请求用户输入一封信的初始提示后不会打印。以下是我的代码当前的样子:

  intmain(void {
    char letter = 'A';
    char display;
    char output;
    int row;
    char spaces = ' ';

    printf ("Please enter a lowercase letter!");
    scanf ("%c", &letter);

    while ((letter < 96) || (letter > 122)) {
      printf ("That's not lowercase.");
      scanf ("%c", &letter);
    }

    else if ((letter > 96) || (letter < 122)) {
      while (1) {
        letter = letter - 32;
        printf ("%c", letter -1);
        printf ("\n\n");
        spaces = letter - 1;
        putchar = (spaces);
        letter++
        spaces++
      }
    }
    return 0;
  }
}

因此,输入的字母将是金字塔底部的中心字母

一旦你意识到字母只是数字,这个问题就很容易解决了。你可以像其他数字一样加减它们

int main(int argc, char* argv[]) {
  char letter = 0;
  cout << "Enter a letter between A and Z";
  cin >> letter;
  cout << endl;

  for (int i = 'A'; i <= letter; i++) {
    for (int j = 'A'; j < i; j++)
      cout << (char)j;
    while (j >= 'A') {
      cout << (char)j;
      j--;
    }
    cout << endl;
  }
  return 0;
}
intmain(intargc,char*argv[]){
字符字母=0;
字母;
不能包含
#包括
int main()
{
std::字符串字母{};
标准::cout(0){

std::cout刚刚尝试了一下,对我来说,它看起来是这样的:

#include <iostream>
#include <string>

char initialCharacter = 'A';
char characterToPrintTo = 'J';
int levels;

void printSpaces(int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        std::cout<<" ";
    }
}

int main()
{
    levels = characterToPrintTo - initialCharacter + 1;
    int numberOfCharacters = 2 * levels - 1;
    int maxChar, diff;
    for(int level = 1; level <= levels; level++)
    {
        maxChar = 2 * level - 1;
        if(maxChar < numberOfCharacters)
            diff = numberOfCharacters - maxChar;
        else diff = 0;
        printSpaces(diff/2);
        for(int i = 0; i < maxChar; i++)
        {
            if(i < maxChar / 2 + 1)
                std::cout<< (char) (initialCharacter + i);
            else
                std::cout<< (char) (initialCharacter + maxChar - i - 1);
        }
        printSpaces(diff/2);
        std::cout<<std::endl;
    }
    return 0;
}

这里的标记有特定的含义。请在使用之前阅读标记说明,并且只使用实际适用于您的问题的标记。金字塔标记是关于一个特定的基于Python的框架,对您的问题没有任何适用性,我已经从您的问题中删除了它。您还应该发布您的实际代码;您已经发布的内容这里的sted根本不会编译(其中有明显的打字错误和语法错误),这意味着它也不可能“一开始就工作”。这个问题被标记为,而不是空白,当它超出范围时使用
j
,并且语言错误
#include <iostream>
#include <string>

int main()
{
    std::string letters{};

    std::cout << "Enter a string of letters to create a Letter Pyramid from it: ";
    getline(std::cin, letters);

    size_t num_letters = letters.length();

    int position {0};

    // for each letter in the string
    for (char c: letters) {

        size_t num_spaces = num_letters - position;
        while (num_spaces > 0) {
            std::cout << " ";
            --num_spaces;
        }

        // Display in order up to the current character
        for (size_t j=0; j < position; j++) {
            std::cout << letters.at(j);
        }

        // Display the current 'center' character
        std::cout << c;

        // Display the remaining characters in reverse order
        for (int j=position-1; j >=0; --j) {
            // You can use this line to get rid of the size_t vs int warning 
            auto k = static_cast<size_t>(j);
            std::cout << letters.at(k);
        }

        std::cout << std::endl; // Don't forget the end line
        ++position;
    }

    return 0;
}
#include <iostream>
#include <string>

char initialCharacter = 'A';
char characterToPrintTo = 'J';
int levels;

void printSpaces(int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        std::cout<<" ";
    }
}

int main()
{
    levels = characterToPrintTo - initialCharacter + 1;
    int numberOfCharacters = 2 * levels - 1;
    int maxChar, diff;
    for(int level = 1; level <= levels; level++)
    {
        maxChar = 2 * level - 1;
        if(maxChar < numberOfCharacters)
            diff = numberOfCharacters - maxChar;
        else diff = 0;
        printSpaces(diff/2);
        for(int i = 0; i < maxChar; i++)
        {
            if(i < maxChar / 2 + 1)
                std::cout<< (char) (initialCharacter + i);
            else
                std::cout<< (char) (initialCharacter + maxChar - i - 1);
        }
        printSpaces(diff/2);
        std::cout<<std::endl;
    }
    return 0;
}
         A
        ABA
       ABCBA
      ABCDCBA
     ABCDEDCBA
    ABCDEFEDCBA
   ABCDEFGFEDCBA
  ABCDEFGHGFEDCBA
 ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA