我一直在使用嵌套循环创建自己的C ++程序来创建某种形状。我最近的项目是创建一个看起来像这样的形状
*
**
***
****
*****
*****
****
***
**
*
但是我写了一个程序,给我一个结果
*
**
***
****
*****
*****
****
***
**
*
这里也是我的代码
#include <iostream>
using namespace std;
void main(){
//displays a top triangle going from 1 - 5(*)
for (int i = 0; i <= 5; i++){
for (int j = 0; j <= i; j++){
cout << "*";
}
cout << endl;
}
//displays a bottom to top triangle 5 - 1(*)
for (int k = 0; k <= 5; k++){
for (int l = 5; l >= k; l--){
cout << "*";
}
cout << endl;
}
system("pause");
}
这将有所帮助,谢谢:)
答案 0 :(得分:1)
在第二个嵌套循环中,不打印空格。
有一个三个空格的字符串,然后在每次运行内部循环后,将另一个空格附加到它并打印出来:
spc = " ";
for (int k = 0; k <= 5; k++){
cout << spc;
for (int l = 5; l >= k; l--){
cout << "*";
}
spc += " ";
cout << endl;
}
答案 1 :(得分:1)
在你的第二个循环中,你想要:
std::string spc = " "; // add #include <string> at the top of the file
for (int k = 0; k <= 5; k++) {
cout << spc;
for (int l = 5; l >= k; l--){
cout << "*";
}
spc += " ";
cout << endl;
}
答案 2 :(得分:1)
您可以尝试:http://ideone.com/hdxPQ7
#include <iostream>
using namespace std;
int main()
{
int i, j, k;
for (i=0; i<5; i++){
for (j=0; j<i+1; j++){
cout << "*";
}
cout << endl;
}
for (i=0; i<5; i++){
for (j=0; j<i+1; j++){
cout << " ";
}
for (k=5; k>i+1; k--){
cout << "*";
}
cout << endl;
}
return 0;
}
这是它的输出:
*
**
***
****
*****
****
***
**
*
答案 3 :(得分:0)
希望这有帮助(需要优化)。
void printChars(int astrks, int spcs, bool bAstrkFirst)
{
if(bAstrkFirst)
{
for(int j = 0; j<astrks;j++)
{
std::cout<<"*";
}
for(int k = 0; k<spcs;k++)
{
std::cout<<" ";
}
}
else
{
for(int k = 0; k<spcs;k++)
{
std::cout<<" ";
}
for(int j = 0; j<astrks;j++)
{
std::cout<<"*";
}
}
std::cout<<std::endl;
}
int main()
{
int astrk = 1, spc = 7;
for(int x = 0; x<5; x++)
{
printChars(astrk++, spc--, true);
}
for(int x = 0; x<5; x++)
{
printChars(--astrk, ++spc, false);
}
getchar();
return 0;
}
输出:
*
**
***
****
*****
*****
****
***
**
*