编写一个程序,在输入10的情况下显示以下模式。输出从1到10的增加,从10到1的减少。
+
++
+++
++++
+++++
++++++
+++++++
++++++++
+++++++++
++++++++++
++++++++++
+++++++++
++++++++
+++++++
++++++
+++++
++++
+++
++
+
我试图弄乱endl;但我似乎无法弄清楚为什么我要获得多余的空间。
//System Libraries
#include <iostream> //Input/Output Library
using namespace std;
//User Libraries
//Global Constants, no Global Variables are allowed
//Math/Physics/Conversions/Higher Dimensions - i.e. PI, e, etc...
//Function Prototypes
//Execution Begins Here!
int main(int argc, char** argv) {
for (int r = 0; r <= 10; r++)
{
cout << endl;
for (int c = 0; c < r; c++)
{
cout << "+";
}
cout << endl;
}
for (int r = 10; r >= 0; r--)
{
cout << endl;
for (int c = 0; c < r; c++)
{
cout << "+";
}
cout << endl;
}
return 0;
}
预期产量
+↵
↵
++↵
↵
+++↵
↵
++++↵
↵
+++++↵
↵
++++++↵
↵
+++++++↵
↵
++++++++↵
↵
+++++++++↵
↵
++++++++++↵
↵
++++++++++↵
↵
+++++++++↵
↵
++++++++↵
↵
+++++++↵
↵
++++++↵
↵
+++++↵
↵
++++↵
↵
+++↵
↵
++↵
↵
+
您的输出
↵
↵
↵
+↵
↵
++↵
↵
+++↵
↵
++++↵
↵
+++++↵
↵
++++++↵
↵
+++++++↵
↵
++++++++↵
↵
+++++++++↵
↵
++++++++++↵
↵
++++++++++↵
↵
+++++++++↵
↵
++++++++↵
↵
+++++++↵
↵
++++++↵
↵
+++++↵
↵
++++↵
↵
+++↵
↵
++↵
↵
+↵
↵
↵
答案 0 :(得分:0)
在上部双循环中,...
首先,c
循环不会在r==0
时进行迭代,因此您会得到双换行符↵↵
。
接下来,当↵
时,在c
循环之前,您又得到一个r==1
。
在下面的双循环中,...
c
循环不会在r==0
时进行迭代,因此您会得到双换行符↵↵
。 因此,您应将r
的最小值替换为1
,并避免在下部双循环中的r==1
时输出换行符,如下所示:
#include <iostream>
int main()
{
for (int r = 1; r <= 10; ++r)
{
for (int c = 0; c < r; ++c)
{
std::cout << "+";
}
std::cout << std::endl << std::endl;
}
for (int r = 10; r > 0; --r)
{
for (int c = 0; c < r; ++c)
{
std::cout << "+";
}
if(r != 1){
std::cout << std::endl << std::endl;
}
}
return 0;
}
答案 1 :(得分:0)
我们第一次进入第一个循环r = 0
,进入内部循环c=0
。
在这种情况下,不满足内部循环的条件,因此仅两个endl
的第一状态在内部循环的开始和结束处执行。
要更正,您必须置于第二个循环条件int c = 0; c <= r; c++
中。
在这种情况下,您需要将第一个循环的条件固定为int r=0; r<10; r++
u可以看到此for循环图:for_loop_diagram
更正的代码:
int main(int argc, char** argv) {
for (int r = 0; r < 10; r++)
{
cout << endl;
for (int c = 0; c <= r; c++)
{
cout << "+";
}
cout << endl;
}
for (int r = 10; r > 0; r--)
{
cout << endl;
for (int c = 0; c <= r; c++)
{
cout << "+";
}
cout << endl;
}
return 0;
}