2012-11-23 31 views
1

我想创建一个程序,它使用两个for语句来显示下面显示的星号模式。编写一个简单的语句程序,显示星号

** 
**** 
****** 
******** 
********** 

我可以让他们用了不少的声明,但我只想使用其中的2,把它缩短 这是我有:

#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
int row = 1; 
int astrk = 1; 

for (int row = 1; row < 2; row += 1) 
{ 
for (int astrk = 1; astrk <= 2; astrk += 1) 
cout << '*'; 
cout << endl; 
}// end for 
for (int row = 1; row < 2; row += 1) 
{ 
for (int astrk = 1; astrk <= 4; astrk +=1) 
cout << '*'; 
cout << endl; 
}//end for 
for (int row = 1; row < 2; row += 1) 
{ 
for (int astrk = 1; astrk <= 6; astrk += 1) 
cout << '*'; 
cout << endl; 
}// end for 
for (int row = 1; row < 2; row += 1) 
{ 
for (int astrk = 1; astrk <= 8; astrk += 1) 
cout << '*'; 
cout << endl; 
}// end for 
for (int row = 1; row < 2; row += 1) 
{ 
for (int astrk = 1; astrk <= 10; astrk += 1) 
cout << '*'; 
cout << endl; 
}// end for 

return 0; 
} 

帮助吗? :)

+0

** **提示:你这里有五个环,每行一个。而且他们几乎没有循环,因为每个迭代只有一次。它们又有什么不同?只有'astrk'的上限,它会变成'2,4,6,8,10'。这是否意味着解决方案? – Beta

回答

0

你应该重写这个使用两个for循环,一旦控制了行,而另一个控制列。

你有5行,并在每一行上,你有2,4,6等...星。

for(int i = 1; i <= 5; ++i) // five rows 
{ 
    for(int j = 1; j <= i * 2; ++j) // we have 2 stars for each row number -> 2, 4, 6, etc... 
    { 
     cout << "*"; 
    } 
    cout << "\n"; 
} 

试图理解你的问题,找出在纸上的解决方案,然后尝试实现它,这将是更简单的方法,如果你正在学习如何编程。

1

你应该有一个外循环的行数,以及一个内部循环的星号。当内循环完成打印星号时,外循环将打印换行符,并增加星号计数。

在伪代码:

for (from one to the number of lines) 
{ 
    for (one to the number of asterisks) 
    { 
     print an asterisk 
    } 

    print a newline 
    increase number of asterisks 
} 
+0

我曾试过这种方式,这是我想出来的:#include #include using namespace std; int main() { int row = 1; int astrk = 1; 对(INT行= 1;行<6;排+ = 1) { 对(INT astrk = 1; astrk <= 13; astrk + = 1) COUT << '*'; cout << endl; } // end for – jewport101

+0

@ jewport101,那么为什么你的代码每行都有一个循环,而不是所有行的循环? – Beta

+0

@ jewport101这将打印五行,每行13个星号。星号的上限必须是一个变量,在外部循环中增加。 –

0

注图案:

线1具有2个星号, 第2行有4个星号, 第3行有6个星号, ...

星号来打印的数目由相乘来确定line number by 2.

与emartel显示的一样,您可以通过基于内部for循环的测试表达式基于外部循环的当前i值(行号)乘以以下内容来动态确定内部for循环将运行多少次2(单星号码s打印)。

这些问题大多会归结为内循环使用外循环计数器值以某种巧妙的方式打印所需的输出模式。

0

你也可以尝试下面的代码

for(int i=0;i<6;i++){//used to print out rows 

     for(int j=0;j<=i;j++){used to print asterisk in each row 
       cout<<"**"; 
       } 
     cout<<endl; 
     } 

更多详情请访问:http://include.site40.net/aasterics.php