上周刚刚学完循环,感觉循环很好用,把一些问题简单化了,但同时也是更难理解了,毕竟上天是公平的。我也终于体会到C语言的难度和魅力了。
循环就是在满足一个语句的情况下不断地进行另一个语句的运算或者另一些语句的运算。分为三种:for循环、while循环和do……while循环。
for循环是最简洁的循环表达形式,但它也同时有着局限性,我觉得它只能进行一些较为简单的循环,复杂循环一般我都用while和do……while。while和do……while的区别是while先判断条件再进行循环,而do……while是先进行循环再判断条件,也就是说do……while至少进行一次循环。所以说用哪个要根据具体的题目。
还有循环嵌套,这个才是最难的。循环嵌套是将两个及两个以上的循环合在一起,类似于这样:
for(int i;i<6;i++)
for(int j;j<6;j++)
外面的循环进行一次,里面循环就要运行到结束,然后再进行下一次。说起来简单,但做题的时候却发现很难很难。尤其是做画图形的题目时,循环嵌套很好用,难度也很高,举两个例子:画矩形和粘墙三角形(以下答案均为本人所做,如有异议请及时提出)
画矩形:输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。输出:
@@@@@@@
@ @
@ @
@ @
@ @
@ @
@@@@@@@
答案:#include<cstdio>
using namespace std;
int main()
{
int m,n,p;
char c;
scanf("%d %d %c %d",&m,&n,&c,&p);
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(p==1||i==1||j==1||i==m||j==n) printf("%c",c);
else printf(" ");
}
printf("\n");
}
return 0;
}
这道题较为简单,只要能写出满足条件的点输出@就行。而粘墙三角形就在难度上更高:
输入一些正整数(≤26),编程输出以这些正整数为边长的附着墙而立的字母三角形。类似于这样的:
a a
a ab
aabc
a a
a ab
a abc
a abcd
a abcde
a abcdef
aabcdefg
答案:
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int b[27];
int main()
{
int i,j,l,n,q;
char m='a';
n=(int)m;
for(int h=1;h<27;h++)
{
cin>>b[h];
for(i=1;i<=b[h];i++)
{
for(j=1;j<=b[h]+1;j++)
{
if(j==1)
cout<<"a";
for(q=0;q<b[h];q++)
{
if(j==b[h]+1-q&&i>=q+1)
cout<<(char)(n-q-1+i);
if(i==b[h]-q&&i<b[h]+1-j)
cout<<" ";
}
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
我用了三个循环循环嵌套了起来,因为还有一个abcd的循环,所以这道题比较难但它考的很全面,融合了很多知识在里面。还有敲七也是比较经典吧:输出7和7的倍数,还有包含7的数字。例如(17,27,37...70,71,72,73...)
答案#include <iostream>
using namespace std;
int main()
{
int N,i;
cin>>N;
for (i=1;i<=N;++i)
{
if (i%7==0||i%10==7||(i/10)%10==7||(i/100)%10==7||(i/1000)%10==7)
cout<<i<<endl;
}
return 0;
}
这是一道简单的循环题只用了一次循环,它的难度在if的条件上,这些条件不好找,导致了这道题目还是挺难的。
说到底循环是比较难理解的一种语句,但是很好用,用好了的话可以很巧妙的做出一些题目。我还是很喜欢循环的。
又学了一种语句,感觉C语言的难度上来了,同时也在慢慢的提升着我的兴趣,毕竟也是从小爱玩电脑的人,学这个还是很有兴趣的,希望越来越好吧。