我必须编写一个C ++程序来打印这种模式:
* *
* * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
这是我的解决方案:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
for(int i = 1; i <= 5; ++i) {
string temp = "";
for(int j = 1; j <= i; ++j) {
if(j == i)
temp += "*";
else
temp += "* ";
}
cout << left << setw(10)<< temp;
cout << right << setw(10) << temp << endl;
}
return 0;
}
是否有使用简单空间的解决方案?不要只在cout
语句中写出五个字符串。
答案 0 :(得分:0)
如果你使用两个字符串变量,例如,你可以轻松地做到这一点。 left
和right
,而不是您的单个temp
变量:
for(int i = 0; i < 5; i++)
{
string left, right;
for(int j = 0; j < 5; j++)
{
if(j - i < 1)
{
// Add a star and a space to each side.
left += "* ";
right = " *" + right;
}
else
{
// Add four spaces into the middle between the stars.
left += " ";
}
}
cout << left + right << endl;
}