我想创建一个程序,它使用两个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;
}
请帮忙吗? :)
答案 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