C++基础之字符输出 cout


找了一些视频教程,课程的示例是输入一个三角形

 

 要输入这样的图案,思路是可以进行拆解,分为两三角形分别输出,先输入一部分,比如,先输出上半部分三角形:

找到规律,可以发现,上面的三角形是7颗星,也就是说,我们要每次循环增加2颗星,下一行比上一行多两颗星 也就是递增的方式,逐次增加,可以这样写

for(int i = 1;i<7;i+=2)

{

}

这样一来,我们就可以让他循环5次

第二步,循环5次之后要输入*来组成一个三角形,也是每次要增加,第一行,要输入一颗*,第二行就是三颗*....到第五行输出七颗*

所以要在上面的循环体内再加一层for循环,那么可以这样写

for(int i = 1;i<5;i+=2)

{

  for(int a = 1;a < i ;++a)

  {  

    cout << "*";

  }

}

然后在第一for循环里加上换行

for(int i = 1;i<5;i+=2)

{

  for(int a = 1;a < i ;++a)

  {  

    cout << "*";

  }

  cout << endl;

}

然后测试一下,看下输出的是否正确

 

 这样就输出了上半部分,那下再来考虑下半部分,下半部分就是一个递减的过程,也就是说一开始,就要输入五颗星

那么循环体就要和上面写的相反,循环的初始数要减少2,7颗星已经输出过了,我们少输出一行,所以要减2,然后每次循环递减2

for(int j = 5;j>=1;j-=2)

{

  for(int b =1; b<j; ++b)

  {

    cout<<"*";

  }

  cout<<endl;

}

然后一起运行

 

 OK,下面来点扩层,如果要输出一个完整的三角型,像这样:

 

 首先我们可以这样来拆分,第一步,我们输入空格,这个空格,我们想象成一个上一个例子的下半截,那么可这样写,最外层的循环体写法和上面一样:

for(int i=1;i<=10;++i)

{

for (int c = 1; c <=10 - i; ++c)
{
cout << "- ";


}

}

这里提一下,为什么是i<=10,而不是i<10?

假设,如果是i<10,那么输出的时候,就会少一行,因为循环到了9这里,就停了,

为了方便直观的看到这个效果,我们把i<=10,改成i<10测试一下

 

 可以看到差了一行,所以我们就要把<10,改成i<=10

 

 好了,这一步输出""空来占位,然后来输出*号的问题 ,输出10行,每次输入*,用空格来间格一下

for(int a=1;a<=i;++a)

{

  cout<< " " << "*";

}

然后在最外层,加一个换位符

for(int i=1;i<=10;++i)

{

for (int c = 1; c <=10 - i; ++c)
{
cout << "  ";


}

for(int a=1;a<=i;++a)

{

  cout<< " " << "*";

}

cout<<endl;

}

最终的效果,

 

 这里也是抛砖引玉,网上的大佬太多,学习的过程中,不能只跟着视频教程的思维走,也要有自己的思考,在理解的同时,学会举一反三.欢迎留言交流.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM