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