我正在用c ++编写一个程序,我必须以n + 1的增量打印n个星号行。基本上程序的流程必须如下:
1 *
2 * **
3 * ***
我的程序现在只打印出一排有序的星号
#include <iostream>
using namespace std;
int main()
{
int x = 0, y = 0;
char s = '*';
cout << "Input x" << endl;
cin >> x;
cout << "Input y" << endl;
cin >> y;
cout << endl;
for (int i = x; i <= y; i++)
{
cout << i<<"# ";
for (int j = 1; j <= i; j++)
{
cout << s;
}
cout << endl;
}
system("PAUSE");
return 0;
}
任何人都可以帮我弄清楚如何让这个程序以n + 1的顺序打印星号吗?
答案 0 :(得分:1)
您想再添加一个星号,以便在内循环中添加一个:
for (int j = 1; j <= i+1; j++)
内部循环是打印星号数量的循环。每次运行时都会打印一个星号。
答案 1 :(得分:1)
内部循环必须按以下方式定义
for (int j = x; j <= i; j++)
{
cout << s;
}
而不是int j = 1
必须有int j = x
至少我得到了以下结果
Input x 3
Input y
3# *
4# **
5# ***
6# ****
7# *****
8# ******
9# *******
10# ********
如果您希望这些数字以1开头,请将cout << i<<"# ";
更改为cout << i - x + 1 <<"# ";
或者您可以写cout << setw( 2 ) << i - x + 1 <<"# ";
,前提是您已添加标题<iomanip>
修改强>
如果您的意思是以下输出
3# *
4# ***
5# *****
6# *******
7# *********
8# ***********
9# *************
10# ***************
然后内循环的控制语句应该是
for (int j = x; j < 2 * i - x + 1; j++)
答案 2 :(得分:0)
我明白了。我要感谢帮助我得到这个答案的贡献者:
for (int i = 1; i <= _howManyPrintLines; i++)
{
cout << i<<"# ";
n = i-1;//helps ensure that n stays at the right number
n = n + i;//stores each index of i and adds them
for (int j = 1; j <= n; j++)
{
cout << s;
}
cout << endl;
}
答案 3 :(得分:0)
这是使用字符串
enter code here #include <iostream>
#include <string>
using namespace std;
int main()
{
string a = "*";
string c;
int x;
for (x=0; x<5; x++)
{
c+=a;
cout<<c<<endl;
}
return 0;
}
答案 4 :(得分:0)
稍微修改一下代码,每行只打印一个额外的星号:
int n, row;
cout << "How many rows do you want to print? ";
cin >> row;
for (int i = 1; i <= row; i++) {
n = i - 1;
for (int j = 0; j <= n; j++) {
cout << '*';
}
cout << endl;
}