第二次关于循环的学习总结

经过了一个月的学习,学会了怎么用循环语句,并且结合顺序结构编写基础程序。但是,也碰到很多不懂的方面,以至于苦思冥想。就比如说oj上的这个题要求画带对角线的矩形:有些大神发现了其中的规律,运用规律编写了较短的代码,提高了效率。
【1】
我的代码则是冗长,以下就是我的代码
#include
using namespace std;
int main()
{
int a;
char c,d;
int j=1;
cin>>a>>c>>d;
for(int i=1;i<=a;i++)
{
cout<<c;
}
for(;j<=a-2;j++)
{
cout<<endl;
cout<<c;
if(j<=(a-1)/2&&a%2!=0)
{
for(int k=1;k<=(j-1);k++)
{
cout<<d;
}
}
if(j>(a-1)/2&&a%2!=0)
{
for(int k=1;k<=(a-j-2);k++)
{
cout<<d;
}
}
if(j<=(a/2)-1&&a%20)
{
for(int n=1;n<=(j-1);n++)
{
cout<<d;
}
}
if(j>(a/2)-1&&a%2
0)
{
for(int n=1;n<=(a-j-2);n++)
{
cout<<d;
}
}
cout<<c;
if(a-2j-2>=0&&a%2==0)
{
for(int m=1;m<=(a-2
j-2);m++)
{
cout<<d;
}
cout<<c;
}
if(a-2j-2<0&&a%2==0)
{
for(int m=1;m<=2
(j-1)+2-a;m++)
{
cout<<d;
}
cout<<c;
}
if(a-2j-1>0&&a%2!=0)
{
for(int h=1;h<=(a-2
j-2);h++)
{
cout<<d;
}
cout<<c;
}
if(a-2j-1<0&&a%2!=0)
{
for(int l=1;l<=2
(j-1)+2-a;l++)
{
cout<<d;
}
cout<<c;
}
if(j<=(a/2)-1)
{
for(int p=1;p<=(j-1);p++)
{
cout<<d;
}
}
else
{
for(int p=1;p<=a-j-2;p++)
{
cout<<d;
}
}
cout<<c;

}
cout<<endl;
for(int o=1;o<=a;o++)
{
	cout<<c;
}

}
这个编写过程我花了两天,发生了多次错误,修改了多次程序,终于功夫不负有心人终于编写出来了。由此可见要想成为一个优秀的程序员得需要多灵活的思路。还有程序的优化是很重要的。
这个程序优化后
while(ij||i+j7)
cout<<…
我也学到了很多有用的语法知识
1、while语句
while(条件:如果成立继续进行不成立再进行一次)


2、for语句这个会按照自己设定的条件进行循环。
for(i;条件;条件)


3、do-while语句这个跟while语句差不多只不过先不判断条件对错先进行一次后再判断
do


while(条件)
4、运用循环嵌套可以解决多种问题
比如说
1、这个嵌套可以实现数据的多组输入与输出

while(cin>>a>>b>>d)
{
	c=2;
   do
  {
	  e=a%c;
	  f=b%c;
	  g=d%c;
	  c++;
  }while(e!=f||e!=g||f!=g);
  cout<<c-1;

2、循环嵌套还可以解决多个量同时变化的情况
比如说这个裱花的
for(;j<=n;j++)
{
for(int i=1;i<=n-j;i++)
{
cout<<" ";
}
cout<<p;
但是循环语句也有许多弊端比如说容易造成超时,多个循环结构运算时间长容易造成系统卡死。
【2】1、循环语句括号里面的i,j等变量只能在定义i的循环范围里使用出了这个范围就不能使用了,所以要在一开始就定义一个i这样就能全局使用。
2、运用循环语句时难免少不了运用累加的操作,这样有时候不小心容易没给变量赋初值导致最后结果是个随机大量。
3、还有就是以后数组的输入也要靠循环语句来实现不同的变量值对应的不同的值。
4、通过循环和条件控制语句结合可以进行输出最大值或者最小值,再利用后面的数组可以实现从大到小排列。
5、循环语句还可以倒转数据输出,正序输出,正序逐个输出。
【3】反思与总结
1、在学的时候走了不少弯路,刚做完训练二。来到循环一开始什么都没看懂,导致了一两个小时没做出来题,后来看了不少例题,才逐渐学会开始写最基本的循环累加这样的。
2、后来不只是用for语句在还有就是通过条件控制的while语句这样比较方便。
3、在一个就是学会了怎么退出循环,比如说continue执行这个后本次循环跳过进行下一次再者就是break语句执行后直接退出循环,exict(0)语句直接结束程序。
这些就是我这些阶段所收获与所反思的,希望以后能多学一些。

猜你喜欢

转载自blog.csdn.net/ProgreamA/article/details/84899541