我现在脑震荡,所以我想问一个非常简单的问题。
Currenly,我试图像这样打印出来
当输入为7时,输出为
*
**
*
**
*
**
*
这里我的代码是,它打印14次而不是7次,或者当我放N/2
时它不打印奇数。
#include <iostream>
using namespace std;
int main () {
int N;
cout << " Please enter N " ;
cin >> N;
for (int i = 0; i < N ; i++) {
cout << "*" << endl;
for (int j = 0; j < 2; j++) {
cout << "*" ;
}
cout << endl;
}
}
答案 0 :(得分:5)
对于每个N
,您要打印两行,一行*
,另一行*
。而只是用打印单行基于该行的一个或两个星是奇数或偶数。
#include <iostream>
int main ()
{
unsigned int N;
cout << " Please enter N " ;
cin >> N;
for(unsigned int i = 0; i < N; ++i)
{
if(i%2 == 0)
{
std::cout << "*" << std::endl;
}
else
{
std::cout << "**" << std::endl;
}
}
}
(未经测试的代码)
答案 1 :(得分:2)
你不能这样:
for (int i = 0; i < N ; i++) {
if (i%2 == 0)
{
cout << "**" << endl;
}
else
{
cout << "*" << endl;
}
}
在您的情况下,对于N次迭代中的每次迭代,都打印,跳转到新行,打印* ,然后跳转到新的迭代。当N为7时,这14行。
答案 2 :(得分:1)
这是因为每次第一个for
循环运行时,第二个循环也会运行。您无法打印*
和**
,并希望打印N
次(它将始终打印2 * N
次)。您需要同时打印*
或**
,但不能同时打印两者。简单的例子:
bool alternate = false;
for (int i = 0; i < N ; i++) {
if (alternate) {
cout << "*" << endl;
} else {
cout << "**" << endl;
}
alternate = !alternate;
}
您可以移除alternate
变量并检查i
是偶数还是奇数(类似i & 1
),但我使用了alternate
变量来帮助它更加清晰。
答案 3 :(得分:0)
对于外循环的每个完整迭代,将打印以下内容:
*
**
如果你运行该循环7次,那么你将获得14行。试试这个,不需要内循环:
for (int i = 0; i < N ; i++) {
cout << "*" << endl;
cout << "**" << endl;
}