我试图形成“目标”所示的三角形图案,然后得到一个标有“实际输出”的三角形图案。我也只应该使用嵌套的循环和%运算符。我尝试过用%运算符和i或j来代替k或代替k,但是我还无法完全获得所需的模式。看起来我的奇数行很好(行1、3、5),但一切都不行。欢迎任何帮助。
// target: * + * + * + actual output: * + * + * +
+ * + * + * + * + *
* + * + * + * +
+ * + * + *
* + * +
+ *
//
// code //
int main ()
{
int i,j,k;
for (i = 6; i >= 1; i--
{
for (j = 1;j <= (6 - i); j++ )
{
cout << " ";
}
for (k = 1;k<=i;k++)
{
if (k % 2 == 0) {
cout << "+";
}
else
{
cout << "*";
}
}
}
答案 0 :(得分:3)
只需替换
if (k % 2 == 0)
作者
if ((k+i) % 2 == 0)
#include <iostream>
using namespace std;
int main ()
{
int i,j,k;
for (i = 6; i >= 1; i--)
{
for (j = 1;j <= (6 - i); j++ )
{
cout << " ";
}
for (k = 1;k<=i;k++)
{
if ((k+i) % 2 == 0) {
cout << "+";
}
else
{
cout << "*";
}
}
cout << endl;
}
}
编译和执行:
pi@raspberrypi:/tmp $ g++ -pedantic -Wextra t.c
pi@raspberrypi:/tmp $ ./a.out
*+*+*+
+*+*+
*+*+
+*+
*+
+
答案 1 :(得分:0)
(根据我的评论)
#include <iostream>
using namespace std;
int main ()
{
int i,j;
for (i = 0; i < 6; ++i)
{
for (j = 0; j < i; ++j )
{
cout << ' ';
}
for ( ; j < 6; ++j) // just carry on to increment j
{
cout << (j % 2 ? '+' : '*');
}
cout << endl;
}
}