编写一个简单的for语句程序,显示星号

时间:2012-11-23 03:35:52

标签: c++ for-loop

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

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

我可以使用相当多的语句,但我只想使用其中的两个,以缩短它 这就是我所拥有的:

 #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;
 }
请帮忙吗? :)

4 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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";
}

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

答案 2 :(得分:0)

注意模式:

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

要打印的星号数是通过将行号乘以2来确定的。

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

像这样的大多数问题都归结为内部for循环使用外部for循环计数器值以一种巧妙的方式来打印所需的输出模式。

答案 3 :(得分: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