C++ (显示棱锥体)编写一个程序,提示用户输入1到15之间的整数并显示棱锥体
我想创建一个创建金字塔的程序。其大小(行数)由用户输入决定 这就是我迄今为止所尝试的。它只展示了金字塔的一半C++ (显示棱锥体)编写一个程序,提示用户输入1到15之间的整数并显示棱锥体,c++,C++,我想创建一个创建金字塔的程序。其大小(行数)由用户输入决定 这就是我迄今为止所尝试的。它只展示了金字塔的一半 #包括 使用名称空间std; int main() { //忽略所有变量 int n,m,i,j; cout>n; 对于(i=1;i将变量声明为接近其使用位置。为其指定有意义的名称: #include <iostream> #include <iomanip> int main() { std::cout << "Enter the numb
#包括
使用名称空间std;
int main()
{
//忽略所有变量
int n,m,i,j;
cout>n;
对于(i=1;i将变量声明为接近其使用位置。为其指定有意义的名称:
#include <iostream>
#include <iomanip>
int main()
{
std::cout << "Enter the number of lines: ";
int num_lines;
if (!(std::cin >> num_lines) || num_lines < 1 || 15 < num_lines) {
std::cerr << "Input error. Bye :(\n\n";
return EXIT_FAILURE;
}
for (int current_line{ 1 }; current_line <= num_lines; ++current_line) {
for(int spaces = 0; spaces < num_lines - current_line; ++spaces)
std::cout << " ";
for(int number = current_line; number; --number)
std::cout << std::setw(2) << std::right << number << ' ';
for (int number = 2; number <= current_line; ++number)
std::cout << std::setw(2) << std::right << number << ' ';
std::cout.put('\n');
}
}
15的示例输入说明:
我正在使用std::wetw()
将数字的输出填充到两位数。std::right
right将这两个字符内的输出对齐:1
~>“1”
但11
~>“11”
。我这样做是为了在打印每行开头的空格时不必编写更复杂的代码。一个打印的数字也有三个字符宽——两个数字和一个空格分隔数字
谈到每行开头的空格字符:在金字塔底部,所有从15到1到15的数字都会再次打印出来。因此,数字前面的空格数必须是第一行的14倍3,第二行的13倍3,第三行的12倍3,依此类推,直到最后一行的0倍3,第15行。正如您所看到的,空格的数量是num\u line-current\u line
乘以3。这就是第一个内部for()
-循环所做的
()的另外两个内部)
-循环应该是自规划的。一个循环从当前行
倒计时到1
,另一个循环再次倒计时到当前行
。循环向上计数从2
开始,不打印两倍于1的数字。声明变量尽可能接近它们的使用位置。为它们指定有意义的名称:
#include <iostream>
#include <iomanip>
int main()
{
std::cout << "Enter the number of lines: ";
int num_lines;
if (!(std::cin >> num_lines) || num_lines < 1 || 15 < num_lines) {
std::cerr << "Input error. Bye :(\n\n";
return EXIT_FAILURE;
}
for (int current_line{ 1 }; current_line <= num_lines; ++current_line) {
for(int spaces = 0; spaces < num_lines - current_line; ++spaces)
std::cout << " ";
for(int number = current_line; number; --number)
std::cout << std::setw(2) << std::right << number << ' ';
for (int number = 2; number <= current_line; ++number)
std::cout << std::setw(2) << std::right << number << ' ';
std::cout.put('\n');
}
}
15的示例输入说明:
我正在使用std::wetw()
将数字的输出填充到两位数。std::right
right将这两个字符内的输出对齐:1
~>“1”
但11
~>“11”
。我这样做是为了在打印每行开头的空格时不必编写更复杂的代码。一个打印的数字也有三个字符宽——两个数字和一个空格分隔数字
谈到每行开头的空格字符:在金字塔底部,所有从15到1到15的数字都会再次打印出来。因此,数字前面的空格数必须是第一行的14倍3,第二行的13倍3,第三行的12倍3,依此类推,直到最后一行的0倍3,第15行。正如您所看到的,空格的数量是num\u line-current\u line
乘以3。这就是第一个内部for()
-循环所做的
()的另外两个内部)
-循环应该是自规划的。一个循环从当前行
倒计时到1
,另一个循环再次倒计时到当前行
。循环向上计数从2
开始,以不打印两倍于1
的数字。您尝试过使用调试器吗?您尝试过使用调试器吗?