最近我们的C语言课程刚刚结束对循环控制结构的学习。在此对C语言中循环控制结构的知识点进行总结,并发表看法。
循环结构主要分为两种:当型循环结构和直到型循环。当型循环是根据条件决定是否执行循环,直到型循环是先循环再判断,即至少循环一次。C语言中主要是通过for、while、do-while三中循环语句来实现循环的。
一、while语句为当型循环。格式为:
while(循环控制表达式)
{
循环语句
}
当循环控制表达式成立时则执行循环,while便于多组循环输入。对于特殊情况,例如:while(r!=0)等价于while®,即r不等于0时循环;while(!r)为r=0时循环。另外,当输入为有效输入时执行循环的语句为:while(scanf("%d",&x)=1);当输入不是无效输入时,语句为(scanf("%d",&x)=EOF)(ps:EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。为C语言中的一个常量。)对于C++则直接使用while(cin>>a>>b>>…)表示输入为有效输入时执行循环。
二、do-while语句属于直到型循环。格式为:
do
{
循环语句
}while(循环控制表达式)
先执行一次循环再进行判断,若循环条件成立则继续循环,循环体内的语句至少循环执行一次。
三、for语句属于当型循环。格式为:
for(初始化表达式;循环控制表达式;增值表达式)
{
循环语句
}
即循环控制表达式成立时则执行循环,根据增量表达式确定循环几次之后结束循环,一般来说for(…)已经确定了循环执行次数和终止条件。注意三个表达式之间是用分号隔开。
注意:1.循环变量可在循环体中做一般变量使用,这时循环变量变化唯一。
2.和变量赋初值在重复累加之前,作为重复累加的第一条语句。
3.for、while之后无分号。
4.break为跳出循环语句,终止循环。
关于三种循环结构的选择:若循环次数已知,计数控制的循环用for;若循环次数未知,用条件控制的循环用while;循环体至少执行一次的用do-while。也要根据实际情况进行选择,当有多组输入时,一般采用while。对于只有一组输入的了情况,一般用for即可。对于有些题目,不能一下算出来,就需要把所有的情况都罗列出来,这种方法叫暴力法。许多题目不是用一个循环写的,而是在一个循环中在套一个循环,即为循环嵌套结构。举个例子:openjudg中的画矩形问题,题目要求是用输入一个字符,输出一个用该字符组成实心或空心矩形方阵。代码如下:
#include<stdio.h>
using namespace std;
int main()
{
int a,b,n;
char x;
scanf("%d %d %c %d",&a,&b,&x,&n);
if(n==1)
{
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
printf("%c",x);
printf("\n");
}
}
if(n==0)
{
for(int j=1;j<=b;j++)
{
if(j==1||j==b)
{
for(int i=1;i<=a;i++)
printf("%c",x);
printf("\n");
}
else
{
for(int i=1;i<=a;i++)
{
if(i==1||i==a)
printf("%c",x);
else
printf(" ");
}
printf("\n");
}
}
}
return 0;
}
因为输出的是一个二维图形,所以需要两重循环控制,分别控制行数何列数。其中,循环变量i控制的是行数的变化,而j表示的是列数的变化。其他题目类似。
对于循环结构的学习,需要不断的深入理解。首先,要将知识点记住,把结构牢记于心,需要注意各种易错的地方,敲代码时要严格认真。其次,做题时要注意读懂题意,避免掉入陷阱。比如说:int定义的是最多是32位整数,此时若运算时或输出时的数据超出32位,则会出现错误,此时就应该用long long进行定义。再者,我认为所有的程序员都必须具备一定的专业素养,我们应该学会用计算机的思维看代码。当程序编译成功但是输出不正确时,我们需要对代码进行修改调试,这是就需要我们用计算机的思维方式进行修改,通过对代码的阅读,试着让代码在自己的大脑里运行一遍,找出错误的地方,并进行修改。如果无法通过阅读查看来对程序进行调试,可以在不同的位置多加几组输出,看看运行结果是否正确,这样能较快速的找出错误的地方,并进行改正。需要注意的是,提交时需要把多加的输出语句注释掉。