C语言循环语句

2024-06-16

C语言循环语句(精选十篇)

C语言循环语句 篇1

1 C语言中的循环语句

C语言中实际提供了四个循环语句,它们分别是goto语句和if语句构成的循环语句、while语句、do-while和for语句。但由于goto语句是一个无条件跳转语句,滥用goto语句将会使程序流程无规律,可读性差,所以结构化程序设计中尽量少使用或者是不使用goto语句,所以不提倡对goto语句和if语句构成的循环。

while循环是一个当型循环,while语句的一般形式为:

while(循环条件表达式)循环体语句;

在程序执行到while循环时,判断循环条件表达式的值,如果值为真,则执行循环体语句,执行完循环体语句后返回去继续判断循环条件,如果为真,继续执行循环体语句,如此反复,直到循环条件为假时才退出循环,到while语句的下一条语句去执行。

do-while循环是一个直到型循环,它的特点是先执行循环体,然后再判断循环条件,它的一般形式为:

当程序执行到do-while语句时,先执行一次循环体语句,然后再判断循环条件表达式的值,表达式值为真,则返回去执行循环体语句,然后再判断循环条件,如此反复,直到循环条件为假时,循环结束。do-while语句构成的循环中,不管循环条件是否满足,其循环体语句至少要被执行一次。

for循环语句是计数型循环语句,它的一般形式为:

for(表达式1;表达式2;表达式3)循环体语句;

for语句是一个结构最清晰的循环语句,它由表达式1、表达式2、表达式3和循环体四个部分组成,表达式1的功能一般是给循环变量赋初值,表达式1在整个循环中只执行一次,表达式2是循环条件表达式,表达式3的功能是修改循环变量的值(增加一个量或者减少一个量),当程序执行到for循环语句时,先执行表达式1,然后判断循环条件,即计算表达式2的值,如果表达式2的值为真,则执行循环体语句,然后执行表达式3,表达式3执行完后,返回去判断表达式2的值,如此反复,形成一个表达式2—循环体语句—表达式3的环,一旦表达式2的值为假时,循环条件被破坏,循环终止,退出for循环,程序转到for语句的下一条语句去执行。

2 循环语句的比较和分析

C语言中的三个循环语句形式各异,从功能上讲它们是等价的,但是由于各个语句各具特色,因此要比较和分析三个语句的结构特点,再结合程序的实际需求确定用哪个语句来实现循环。

2.1 循环语句的比较

从语句的形式来看,while语句和do-while语句结构形式基本一样,由循环条件和循环体构成,而for语句由三个表达式和循环体四部分组成,结构清晰,一目了然。while语句和do-while语句循环变量初始化是在它们之前进行的,而for语句则是在表达式1中实现循环变量初始化的。三个语句中都有循环趋于结束的语句(如i++),保证了循环能够正常结束,在while和do-while语句中,循环趋于结束的语句都包含在循环体内,for语句则是由表达式3来实现的。

从语句的执行流程来看,while语句和for语句执行循环的过程类似,都是先判断循环条件,当循环条件成立时才执行循环体语句。而do-while语句则是先执行一次循环体,然后判断循环条件,再决定是否继续执行循环体语句。

2.2 循环语句的适用性分析

在C语言程序设计中遇到循环问题的时候,应该使用三个循环语句中的哪一个呢?通常情况下,这三个语句是通用的,都能完成循环的功能,比如:求1+2+3+……+100的和,这个问题解决时用哪一个循环语句都是可以的。但三个循环语句各有特点,要高效地解决循环问题,在不同的情况下,应该选择合适的循环语句。

for循环语句主要适用于循环次数已知的情况。比如求100到200直接不能被3整出的数,在这个问题求解时,我们首先知道循环变量的初值是100,终值是200而且每做一次循环循环变量都要加1,可见循环次数是100,这种情况下使用for语句来完成循环肯定是最佳选择。类似的问题还有:求一个等差数列的前n项的和、求n!等。

while语句和do-while语句则适用于循环次数未知,但循环条件确定的情况。比如:使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10-4,在这个问题中,没有显式地给出循环次数,只是提出了精确度,那么这个精度的绝对值小于10-4时,循环结束。这种没有明确循环次数但给出循环条件的问题,在解决时就要考虑用while语句和do-while语句。

与while语句相比do-while语句更适合于先执行循环,后判断循环条件的情况。比如:从键盘输入一个整数,统计该数是几位数。例如,输入12345,输出5,输入-99,输出2,输入0,输出1。在这个问题中循环次数是不确定的,循环次数由输入的整数的位数决定,假设输入的值为m,循环语句为:

用do-while语句,保证循环至少会执行一次,如果输入0,进入循环后,0整除10,还是0,但num的值要加1,当判断条件是m!=0这个条件为假,循环结束,这样就保证了输入0时也能统计出正确的结果1,即从键盘输入的整数位数为1.。

总之,三个循环语句各有特点,在程序设计的过程中,要从实际的问题出发,结合三个语句的特点,选择合适的循环语句,从而提高程序中循环的效率。

3 小结

循环结构是结构化程序设计中的一个重要结构,它也是C语言学习中的重点和难点。本文对C语言中三个循环语句进行了分析和比较,它们在解决问题的时候是等价的,可以相互替换,但在已知循环次数时,通常首选for语句,在循环次数不明确,需要通过其他条件控制循环时,则考虑使用while语句或者do-while语句。总之,在C语言程序设计中合理并恰当地选择循环语句,将会大大提高编程效率和程序执行效率。

参考文献

[1]谭浩强.C程序设计.[M].3版.北京:清华大学出版社,2005.

[2]何钦铭,颜辉.C语言程序设计[M].北京:高等教育出版社,2008.

[3]袁国伟.C语言循环结构中for语句与while语句辨析[J].科技信息,2006(S5):25.

C语言常用语句 篇2

putchar函数(字符输出函数)的作用是向终端输出一个字符。

一般形式为:putchar(c)输出字符变量c的值。

#include

void main()

{

char a,b,c;

a=‟A‟;b=‟B‟;c=‟C‟;

putchar(a);putchar(b);putchar(c);putchar(„n‟);

}

运行结果:ABC2、Getchar函数

getchar函数(字符输入函数)的作用是从终端(系统隐含指定的输入设备)输入一个字符。getchar函数没有参数,一般形式为:getchar()

#include

void main()

{

char c;

c= getchar();

putchar(c);

putchar(„n‟);//换行;

}

运行结果:输出从键盘输入的字符

另外:putchar(getchar());或者 printf(„%c‟, getchar());

3、printf函数

printf函数(格式输入函数),它的作用是向终端(或隐含指定的输出设备)输出若干个任意类型的数据。

printf的一般格式为printf(格式控制,输出列表)

例如:printf(”%d,%cn”,i,c)

4、scanf函数

scanf(格式输入函数)的作用是从终端(系统隐含指定的输入设备)输入若干个任意类型的数据。

一般形式为:scanf(格式控制,地址列表)

1、if语句:

*********************

if(表达式)

语句;

*********************

if(表达式)

语句1;

else

语句2;

*********************

if(表达式1)语句1;

else if(表达式2)语句2;

else if(表达式3)语句3;

else if(表达式m)语句m;

else 语句n

*********************

If语句的嵌套

if(表达式)

if(表达式)语句1

else语句2

else

if(表达式)语句3

else语句

42、switch语句

switch(表达式)

{

case 常量表达式1:

语句1

case常量表达式2:

语句2

case常量表达式n:

语句n

default :

语句n+1

}

3、goto语句

goto语句为无条件转向语句,一般格式为:goto语句标号;

goto label_1;

求1至100的累加和;

#include

void main()

{

int i,sum=0;

i=1;

loop:for(i<=100)

{

sum=sum+I;

i++;

goto loop;

}

printf(“%dn”,sum);

}

4、while语句

while语句用来实现“当型”循环结构。一般形式如下:

while(表达式)语句当表达式非0值时,执行while语句中的内嵌套语句,先判断后执行。求1至100的累加和;

#include

void main()

{

int i,sum=0;

i=100;

while(i)

{

sum=sum+i;

i--;

}

printf(“%dn”,sum)

}

#include

void main()

{

int i,sum=0;

i=1;

while(i<=100)

{

sum=sum+i;

i++;

}

printf(“%dn”,sum)

}

5、do… while 语句

do… while 语句 先执行循环体,然后判断循环条件是否成立。

一般形式为:

do

循环体语句

while(表达式)

求1至100的累加和;

#include

void main()

{

int i,sum=0;

i=1;

do

{

sum=sum+i;

i++;

}

while(i<=100)

printf(“%n“)

}

6、for语句

for语句不仅可以用于循环次数已经确定的循环,而且可以用于循环次数不确定的循环而只给出循环结束条件。

for(表达式1;表达式2;表达式3)语句

它的执行过程如下:

(1)、先求解表达式1。

(2)、求解表达式2,若其值为真(值非0),则执行for循环中指定的内嵌语句,然后执行下面的(3)。若表达式2为假(值为0),则结束循环,转到第(5)步。

(3)、求解表达式3。

(4)、转回上面第(2)步继续执行。

(5)、循环结束,执行for语句下面的一个语句。

For循环的一种应用:

for(循环变量赋初值;循环条件;循环变量增值)语句

求1至100的累加和;

#include

void main()

{

int i,sum=0;

for(i=1;i<=100;i++)

{

sum=sum+i;

printf(“%n”,sum)

}

}

7、break语句

break语句可以是流程跳出switch结构,继续执行switch下面的语句。break语句也可以用来从循环体内跳出循环体,提前结束循环,接着执行循环体下面的语句。

break语句的一般形式为:break;

说明:break语句不能用于循环语句和switch语句之外的任何其他语句。

#include

void main()

{

int i,sum=0;

for(i=1;i<=100;i++)

{

sum=sum+i;

if(sum>300)break;

printf(“%n”,sum)}

}

C语言循环语句 篇3

【关键词】C语言;循环结构;微课

当今,信息化高速发展,数字技术正在影响和改变着我们生活中的各个领域,其中也包括教学模式的改变。微课作为数字时代的一种新型课程表现形式,以其主题明确、短小精悍、交互效果好等优点,在各个学科的教学中正被积极地推广和应用。在我院的C语言课程教学中,微课设计被应用于很多较难理解的知识点讲解中,经过实践发现教学效果良好。本文以应用C语言循环结构解决等差数列求和问题作为微课主要内容,对微课设计进行研究与探索。

一、微课的介绍

1.微课的定义。

微课是以视频为主要载体,记录教师在课堂内外教育教学过程中围绕某个知识点(重点难点疑点)或技能点的教学环节开展的精彩教与学活动全过程,具有目标明确、针对性强和教学时间短的特点。

2.微课的组成。

(1)围绕某个知识点或技能点的教学视频和微课设计脚本;

(2)微课教学相关的教学设计方案和教学课件;

(3)微课相关素材、练习题、测试题、教学反思等辅助性教学资源。

3.微课的主要特点。

(1)教学时间较短:时长一般为8—10分钟。

(2)教学内容较少:主要是突出课堂教学中某个知识点,内容十分精简。

(3)资源容量较小:学生可以在线观看视频学习,也可查看相应教学资料。

(4)主题突出:一个微课就只包含一个主题任务,内容明确。

(5)自主学习为主:学生可以使用微课完成自主的、一对一的学习。

二、应用C语言循环结构解决等差数列求和问题微课设计

1.微课名称:应用C语言循环结构解决等差数列求和问题。

2.所属专业:软件技术专业。

3.所属年级:高职一年级。

4.所属课程:C语言。

5.知识点。

(1)掌握while循环语句的格式和执行过程;

(2)学会分析循环结构程序的设计思路;

(3)熟练应用while循环语句来编写程序。

6.技能点:能够通过while循环语句编写程序来解决实际问题。

7.教学类型:讲授型。

8.设计思路。

(1)微课设计目标:通过微课交代出课程的基本知识点(包括理论部分与实践部分)、课程的整个教学环节以及所实现的具体任务。

(2)教学情境设计:在现实生活中,我们会遇到很多需要重复操作的事情。比如,在数学课中曾经接触过的等差数列求和问题。因为等差数列中的数据都是有规律的,而且加法的计算也是重复的,所以完全可以用循环程序来帮助我们完成这个看似复杂的计算。

(3)微课基本思路:在微课设计中,通过教学情境的引入,向学生交代本次课的主要内容是用循环结构程序来解决等差数列求和问题,学生首先聆听教师讲解有关循环结构的相关知识点,教师做好相关的技术指导,之后教师将学生带入到具体任务的实现过程中,包括本次课中主要学习的while循环结构的特点、语法格式、流程图和执行过程,再根据等差数列的特点分析出用程序解决该问题的设计思路和所需变量,然后结合while循环的语法格式将循环语句书写出来。在具体编程设计工作之前要将整个程序的流程分析清楚,再动手写出具体程序,这样才能避免问题的产生,还能够培养学生良好的程序设计书写习惯。学生在分组完成具体任务后要进行讨论,能够总结出while循环应用于实际问题中的设计思路和分析方法,之后能够举一反三合理解决其它问题。本次课程结束前,要求各项目组对项目成果进行演示和阐述,并进行评分。最后总结归纳本次课的主要内容。

9.教学过程。

(1)片头(20秒以内)

通过画面展示“微课”名称 、“微课”所支持的课程名称、“微课”教学内容简介、“微课”主讲教师简介。可以添加适当的背景音乐。

(2)正文(8分钟)

① 画面1:通过课件展示教学情境,引入具体研究任务。(30秒)

具体展示内容:各位同学,在现实生活中,我们会遇到很多需要重复操作的事情。比如,在数学课中曾经接触过的等差数列求和问题。因为等差数列中的数据都是有规律的,而且加法的计算也是重复的,所以完全可以用循环程序来帮助我们完成这个看似复杂的计算。

② 画面2:讲解循环结构的特点、while循环的语法格式和执行过程。(220秒)

具体技术指导内容:学生首先聆听教师讲解有关循环结构的相关知识点,教师做好相关的技术指导,之后教师将学生带入到具体任务的实现过程中,包括本次课中主要学习的while循环结构的特点、语法格式、流程图和执行过程。

③ 画面3:分析等差数列求和问题中所使用的变量、设计流程,并进行程序编写。(300秒)

具体操练内容:向学生交代本次课的主要内容是用循环结构程序来解决等差数列求和问题,再根据等差数列的特点分析出用程序解决该问题的设计思路和所需变量,然后结合while循环的语法格式将循环语句书写出来。在具体编程设计工作之前要将整个程序的流程分析清楚,再动手写出具体程序,这样才能避免问题的产生,还能够培养学生良好的程序设计书写习惯。

(3)小结(20秒)

通过画面展示总结本微课重点。

(4)片尾(10秒)

通过画面展示“微课”制作者信息、 相关“微课”信息、“微课”应用信息和必要的内容注解。

三、结语

本微课在C语言教学中已经应用,并取得了较好的教学效果,学生通过微课的学习对C语言循环结构的理解更加深刻了。张一春教授认为,对于老师而言,最关键的是要从学生的角度去制作微课,而不是在教师的角度去制作,要体现以学生为本的教学思想。因此,在今后的微课设计中,我们还要不断地探索,真正使微课成为学生自主学习的重要资源。

参考文献:

[1]张一春.微课建设研究与思考[J].中国教育网络,2013,10.

[2]孟祥增,刘瑞梅,王广新.微课设计与制作的理论与实践[J].远程教育杂志,2014,6.

C语言中循环语句的应用分析 篇4

在众多程序设计语言中, C语言有其独特之处。它作为一种高级程序设计语言, 具备灵活性、通用性和方便性等特点。C语言有while、do while和for语句三种循环结构语句。前两个称为条件循环, 即根据条件来决定是否继续循环;后一个称为计数循环, 即根据设定的执行次数来执行循环。

2.3种循环语句的规则

2.1 While语句

While语句是通过判断循环控制条件是否满足来决定是否继续循环的, 它的一般形式为:

While (表达式)

循环体语句

执行流程:

(1) 计算表达式;

(2) 如果表达式的值为非零, 执行语句;

(3) 返回第一步, 重新计算表达式;

(4) 如果表达式的值为零, 则结束循环。

如果表达式的值一开始就为0, 则语句一次也不会被执行。

2.2 Do-While语句

Do-While语句的特点是先执行循环体中的语句, 在通过判断表达式的值决定是否继续循环, 它的一般形式是:

Do

循环体语句

While (表达式) ;

执行流程: (1) 执行语句; (2) 计算表达式; (3) 表达式的值为非零返回第1步; (4) 表达式的值为零, 结束循环。

语句至少执行一次。

3. 循环语句的应用分析

循环语句在学习、生活中有广泛的应用。下面, 我们通过几个例子来看看循环语句的重要作用。

3.1 例如一位老师要为多个学生的成绩来评定等级。

分析:可以用循环结构控制多个学生的分数处理, 输入的分数小于0, 循环结束。而对于每个学生的分数需用选择结构完成评级。程序如下:

3.2 用循环语句来解决数学问题也是一个不错的选择。

例如:用数值积分法求函数f (x) =1/ (1+x) 在x=1到x=10之间的积分的近似值。

分析:对于函数积分, 可以把积分段分成n份, 每一份看成是一个近似的面积为f (x) *dx的矩形 (dx= (10-1) /n) , 把所有n份矩形面积相加, 即为积分的近似值。这个问题的关键是n的取值不能确定。这里用循环法求n。设n的初值为10, 每次加一, 当相邻两次n值算得的积分值相差不超过10-7时, 认为已经取到了合适的n值。程序如下:

3.3 在现今网络飞速发展的时代, 网络安全成为人们关注的焦点, 甚至可以用循环语句来解决电文加密的问题。

例如:已知电文加密规律为:将字母变成其后面的第4个字母, 其他的保持不变。如如, a-e, W-A。

分析:输入字符ch, 如果ch是字母, 则进行加密处理ch+=4;判断加密后ch是否超出字母的范围, 如果超出, 则ch-=26;循环控制条件用ch!=’n’。程序如下:

4. 总结

由上面几个在学习、生活中的实例, 我们可以看出, C语言的循环语句能帮助你解决很多实际问题。当然, 在具体某个问题上, 大家需要根据不同的情况, 选择比较适合的循环语句, 结合C语言的其他功能, 编写出简单、易懂和具有实际意义的程序来。

摘要:目前, 在很多高校, C语言都被列为程序设计的入门语言, 也是很多计算机专业学生学好《数据结构》、《c++程序设计》等专业课的前提条件。而循环语句又是C语言学习中的一个重点与难点。根据本人的体会, 浅谈一下C语言循环语句在学习、生活中的一些应用。

关键词:while语句,dowhile语句,for语句

参考文献

[1]杨路明.C语言程序设计教程.-2版.北京邮电大学出版社, 2005

C语言输入输出函数及控制流程语句 篇5

1.1标准输入输出函数

1.1.1 格式化输入输出函数

Turbo C2.0 标准库提供了两个控制台格式化输入、输出函数printf( ) 和 scanf, 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。 printf()函数用来向标准输出设备(屏 幕)写数据; scanf() 函数用来从标准输入 设备(键盘)上读数据。下面详细介绍这两个函数的用法。

一、printf()函数

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出 信息。在编写程序 时经常会用到此函数。printf()函数的调用格式为:

printf(“<格式化字符串>”, <参量表>);

其中格式化字符串包括两部分内容: 一部分是正常字符,这些字符将按原 样输出; 另一部分是格式化规定字符, 以“%”开始, 后跟一个或几个规定字符, 用来确定输出内容格式。

参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出 参数个数一样多, 各参数之间用“,”分开, 且顺序一一对应,否则将会出现意想 不到的错误。

1. 格式化规定符

Turbo C2.0提供的格式化规定符如下:

━━━━━━━━━━━━━━━━━━━━━━━━━━

符号作用

──────────────────────────

%d十进制有符号整数

%u十进制无符号整数

%f浮点数

%s字符串

%c单个字符

%p指针的值

%e指数形式的浮点数

%x, %X无符号以十六进制表示的整数

%0无符号以八进制表示的整数

%g自动选择合适的表示法

━━━━━━━━━━━━━━━━━━━━━━━━━━

说明:

(1). 可以在“%”和字母之间插进数字表示最大场宽,

例如:%3d表示输出3位整型数, 不够3位右对齐。

%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,

小数点占一位, 不够9位右对齐。

%8s表示输出8个字符的字符串, 不够8个字符右对齐。

如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。

但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;

若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。

另外, 若想在输出值前加一些0, 就应在场宽项前加个0。

例如:%04d表示在输出一个小于4位的数值时, 将在前面补0使其总宽度

为4位。

如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,

小数点 前的数字代表最小宽度。

例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9,则

第9个字符以后 的内容将被删除。

(2). 可以在“%”和字母之间加小写字母l, 表示输出的是长型数。

例如:%ld表示输出long整数

%lf表示输出double浮点数

(3). 可以控制输出左对齐或右对齐, 即在“%”和字母之间加入一个“-” 号可

说明输出为左对齐, 否则为右对齐。

例如:%-7d表示输出7位整数左对齐

%-10s 表示输出10个字符左对齐

2. 一些特殊规定字符

━━━━━━━━━━━━━━━━━━━━━━━━━━

字符作用

C语言循环结构教学浅析 篇6

《C语言程序设计》作为高校计算机及其相近专业的一门必修课程, 是学习后续主干课程数据结构、操作系统等课程的基础, 大部分高校都把该课程作为入门的程序设计类课程进行讲授, 由此可见《C语言程序设计》课程在计算机及其相近专业教学中占有十分重要的地位。近几年由于高校连续扩招, 特别是对高职类院校来说, 招生压力的影响导致了入学生源质量的下降, 使教学过程受到很大的影响, 教师常常抱怨学生“听不懂”, “学不会”, 这其中应该有两方面的原因, 一方面是由于学生的入学基础相对薄弱, 理解能力不够所造成, 另一方面也与教师自身教学方法不当有关, 在教学中过分突出理论知识讲解, 不能做到因材施教。针对高职学生的入学实际情况, 在教学中采用典型实例分析, 循序渐进引导, 启发式教学, 收到了较好的教学效果。

2 循环基本概念引入及教学内容设计

如果一个计算过程, 要重复一系列的计算步骤若干次, 每次计算步骤完全相同, 则这种算法过程称为循环过程。循环结构的特点是可以减少源程序重复书写的工作量, 用来描述重复执行某段算法的问题, 这是程序设计中最能发挥计算机特长的程序结构。循环结构是建立在顺序结构的程序基础之上, 为了使学生更容易理解循环结构, 以顺序结构设计为例进行引入, 可以举一个简单的例子, 如下:

例1:打印10个1。程序分析, 使用顺序结构设计该程序, 需要写10行printf ("%d", 1) ;语句, 如果打印100个或更多的1, 如何办?如果利用顺序结构设计这个程序将需要书写更多的printf ("%d", 1) ;语句, 可以启发学生, 该程序语句printf ("%d", 1) ;是不是一个被重复执行的过程。反复执行10次或者更多次, 符合循环结构算法的特点。通过该例子可以引入要授课的内容———循环结构。

2.1 循环结构程序的设计方法

如何设计刚才的程序, 需要首先了解循环结构的语法, 在C语言中, 循环结构有3种:while语句、do…while语句和for语句, 根据执行过程的不同, 可以将这3种语句分为两类:当型循环和直到型循环, 其中while语句和for语句可以归为当型循环结构, do…while语句为直到型循环结构, 两类循环的具体执行过程如图1所示。这两类循环一个最大的区别在于直到型循环要无条件执行一次循环体才判断条件真假, 决定是否继续循环。它们的循环思想其实是一致的, 只是表现形式不同[1], 3种循环可以相互转换, 只要掌握了其中一种循环, 可以轻松地掌握另外两种循环语句, 因此以while结构为例进行分析, while语句语法如下:

while (循环条件表达式)

{

需要执行的循环语句体;

}

根据图1 (a) 可以容易地掌握while语句的执行过程:首先判断循环条件表达式的真假, 为真时执行语句体, 然后继续判断循环条件表达式的真假, 为真时继续执行语句体, 直到循环条件表达式的值为假, 循环结束。

不管一个循环结构有多复杂, 都可以从以下3个方面来分析:循环的初始状态、循环的终止条件、循环体语句[2];把它叫做要素1, 要素2和要素3, 可以通过构造循环3要素来设计循环程序。

例1程序的实现关键在于循环的次数问题, 这里需要解决两个问题, 即设计要素1与要素2。这里需要引入一个控制循环次数的变量i, 该变量的初值可以设置为i=1, 也即要素1, 在循环过程中i不超过100, 即结束条件为i<=100, 即要素2。通过分析, 学生编写出如下程序:

通过运行, 学生发现循环的次数并不是100次, 而是无限次执行, 这时, 教师可以进一步启发学生分析程序的执行过程, 发现在程序的执行过程中i的值没有变化, 故①条件始终保持真, 找到问题后, 提示学生如何才能够使i的值随循环语句②的执行发生变化。学生通过启发可以写出语句③i=i+1;语句③是放到②前面还是后面?学生通过分析后, 理解了语句③应放到语句②后面。例1程序的流程图如图2所示。

例2:编写程序1+2+…+100。程序分析:这是一个求和问题, 变量需要被相加100次, 即循环次数为100, 该问题也可以利用循环求解, 首先需要定义循环变量i和累加和变量sum, 可以容易地确定要素1为i=1, sum=0;要素2为i<=100;关键是确定要素3, 即循环体变量i被反复相加了100次, 即第一次加1结果为sum=sum+1, 第二次加2结果为sum=sum+2, 以此类推, 第100次相加结果为sum=sum+100, 即循环体语句可以写为sum=sum+i;通过分析, 可以写出如下程序 (流程图如图3所示) 。

对这个问题, 可以进一步引导, 编写类似的求解问题, 如1+3+5+…+99, 2+4+…+100, 99+97+…+1, 100+98+…+2等。

2.2 循环使用需要注意的问题

通过上面的分析, 学生基本能够设计一个简单的循环程序了, 也了解了while循环结构设计的方法, 在设计循环结构程序时, 还需要注意一些细节问题, 否则会出错。下面通过程序进行分析, 例3:求1+1/2+1/3+…+1/100的和。程序分析:这个例子与例2类似, 学生模仿后编写出如下程序代码:

但调试结果为1。显然, 运行结果是错误的, 说明程序有问题, 引导学生分析1/i的结果是什么?学生通过前面的学习, 知道其结果为整型值0, 找到了原因, 将其改为sum=sum+1.0/i;那么和是一个什么类型的值?为浮点型数即sum可以定义为double, 通过引导学生将其修改为正确的程序。可以继续举例让学生求10!, 编程总结累加与累乘的区别。

3 结语

循环结构在程序设计中使用频率之广, 是其他两种结构 (顺序与选择) 无法相比的, 也是程序设计中较难的部分, 在课堂教学中教师必须站在初学者的角度, 循序渐进进行教学, 还需要合理引导、启发学生, 让学生积极主动参与教学。另外, 由于C语言程序的实践性较强, 还需要通过实践环节的训练, 上机验证, 找出发生错误的原因, 进行归纳总结、举一反三, 这样才会收到良好的教学与学习效果。

参考文献

[1]赵卫绩, 刘井莲, 樊守芳.实例教学法在C语言循环结构教学中的应用[J].通化师范学院学报, 2012, (2) :58-60.

C语言循环结构教学方法探讨 篇7

1 当前C语言循环结构课堂教学中的问题

1.1 思维方式的跳跃

C语言有3种基本结构:顺序结构、选择结构、循环结构。在这3种结构中, 顺序结构和选择结构十分接近人类的日常思维方式, 因而也较容易被理解和掌握。但是循环结构与人类的自然思维却不尽相同。所以若在教学过程中按部就班、照本宣科, 必然出现思维方式跳跃带来的知识掌握的滞后性。机械的记忆语法知识、临摹式的上机调试课本实例使得越来越多的学生对C语言失去兴趣。学生的学习呈现被动状态, 学习积极性不高, 甚至产生排斥心理。因此C语言循环结构课堂教学亟待解决的问题之一就是如何缓冲思维方式的跳跃。能够让学生在轻松自由的认知过程中掌握循环结构的使用, 同时这也是激发学生学习积极性的至关重要的一点。

1.2 教材教法的禁锢

C语言的教材充栋折轴, 其中也不乏有经典教材, 然而这也导致了很多学校与教师认为讲授必选经典教材。但是, 教育教学讲究灵活多变、因材施教。经典教材固然为C语言的教学做出了巨大的贡献, 但是其编写模式与所举实例却不利于引发学生的学习兴趣。目前, 关于C语言循环结构的教学方法及其相关的教学研究等得到了较多的关注, 同时也诞生了不少好的教学方法。其中实例教学法就是其中出色的一种。沿用实例教学法的教材也层出不穷, 教师在讲解循环结构章节中采用实例法也是明智之选。然而, 实例教学法精髓在于精选实例, 如果实例取之不精, 不仅不能发挥其应有的效用, 相反还会给教学带来很大的负面影响, 实例取之不当不仅破坏了知识的系统性, 甚至会使学生成为“实例操作员”, 机械的上机练习, 也会影响课堂的教学效果。如何精选实例是C语言循环结构教学的关键所在, 实例既要经典, 突出重点和难点, 又要与学生的自然思维想吻合, 激发学生的自主动手能力。

2 C语言循环结构“源实例”教学法

2.1 “源实例”提高学生对抽象概念的感观认识, 实例源自生活, 基于观察

循环是什么?其实循环就是“重复操作”, 是为了达到某种目标 (循环条件) , 而反复地执行一组操作 (循环体) , 直到该目标 (或条件) 达成为止。通过循环结构, 程序员可以减少重复书写代码的工作量, 能够充分利用计算机运算速度快的优点解决实际问题。循环同样也是生活实例的语言抽象。例如生活中的某农民对某一农田的四季耕耘, 在20年的耕作权的时间里, 每当春播时节到来, 就会播种, 年年如是。再如, 参加自考的考生, 学习过后, 就可以参加考试, 然后根据考试的结果来决定是否需要继续学习还是重新参加考试, 直到考试通过拿到证书为止。可以将以上2个事件用流程的形式解释, 如图1所示。

诸如此类的“源实例”循环很多, 如银行的密码验证过程, 教师在授课过程中, 经常举一些与实际生活息息相关的事例, 围绕精选出的源于生活的事例, 把学习的过程与具体的事例抽象相融合, 引导学生自己去思考解决方案。整个教学过程以应用为根本出发点, 强调在生活事例中抽象, 在抽象过程中学习应用, 避免枯燥、复杂的理论说教对提高学生综合分析和解决实际问题的能力有极大的帮助。

2.2 “源实例”, 实例源于体验

有了循环的生活提炼以后, 学生还要面临的一个问题是怎么才能在编程过程中自主的选择循环结构程序设计。也就是说, 学生要进一步明确在面临实际问题的时候, 何时需要使用循环。如果只凭教师与教材的一面之词, 学生只是被动接受, 止于模仿, 充分调动学生的自主性才是学习程序设计的根本。在循环结构的前续知识中, 学生已经掌握基本的输出函数printf () , 针对该函数都会有图形输出的趣味练习, 比如输出下实心三角形作为某程序的开始菜单图标。其图形与代码片段如下所示。

教师可以提出, 如果该图形不是3行, 而是50行甚至更多, 该怎么办。学生自然会想到继续重复的使用printf几十次是不明智的一件事。教师要抓好时机的进行“重复”抽象的引导, 这样学生自动会考虑使用循环结构解决。再如, 在C语言循环结构教学之前学生学习if语句和switch语句时, 一般学习实现将学生分数从百分制转换成五分制。在此基础上, 教师可以引导学生思考, 如何完成一个班的学生的分制转换工作?这种基于学生自身体验的需求会极大地调动学生对未知事物探索的积极性, 吸引他们的兴趣, 变被动为主动, 变呆板为灵活, 更容易对所学循环结构举一反三, 做到触类旁通。

“源实例”教学, 首先要求教师在实例选择上多下功夫, 精心设计实例, 从日常生活中容易看到的、用到的、好理解的问题下手, 抓好较为实用的切入点, 抓住学生的眼球是该教学方法的关键。其次, 教师要通过层层引导, 让学生自主动脑, 归纳“重复”行为, 主动地接近循环结构的真谛, 以达到理解和运用循环结构的目标。第三, “源实例”教学要求教师注重利用现代科技手段, 把课堂扩展到学生喜闻乐见的现代化生活平台, 当前的QQ群或微信朋友圈都是不错的平台, 一方面打破课堂的物理局限性, 另一方面在网络的平台下, 更能拉近师生距离, 使学生将生活中随时遇到的可以抽象的各种问题与教师实时交流看法与心得, 更好地提高教学效率。第四, “源实例”教学要求教师在组织教学的过程中将教材融会贯通, 阶梯式难度设置。例如游客足迹记录问题。第一步, 让学生使用循环结合printf () 设计出完成星型界面。第二步, 让学生在上一问题的基础上, 通过设计while (1) 循环, 实现当用户输入Q时该循环退出并输出循环的次数。依次将任务难度增加, 让学生拾级而上, 增强学生编程的自信心。

3 结语

循环结构是C语言课程的重点, 掌握好循环结构一方面为后续的数组、函数、指针等知识的学习夯实基础, 另一方面也可锻炼学生的逻辑思维能力, 提高学生对编程的信心。在循环结构程序设计中使用实例教学法可以凸显课程知识点, 明确教学重难点, 但是以题为例的实例教学法也会给教学带来一定的局限性, 比如知识点的不系统, 课程的枯燥感, 这些都会给学生带来一定的厌学情绪, 不利于知识的学习。本文通过引入“源实例”教学法, 循循善诱, 循环结构变抽象为具体、变枯燥为生动, 让学生在整个教学过程中逐步养成严密的逻辑思维, 提高学生分析问题、处理问题的能力, 教学实践证明该方法对循环结构的教学效果明显。

摘要:循环结构是C语言程序设计课程中的一个重要的结构, 同时也是掌握程序设计的基础与关键。文章在剖析当前C语言循环结构课堂教学问题的基础上, 探讨循环结构的教学方法, 提出一种“源实例”教学法。教学实践证明该方法在激发学生求知欲、提高学生抽象思维能力方面有着较好的效果。

关键词:C语言,循环结构,教学方法

参考文献

[1]唐红杰.C语言循环结构教学探讨[J].软件工程师, 2014 (10) :23-24.

[2]司徒锡康.循环结构的三要素及其他[J].计算机教育, 2007 (12) :48-49.

[3]顾静静.浅谈C言语教学中面临的问题[J].计算机与网络, 2012 (32) :102-103.

[4]王鸿磊, 张雪松.程序设计基础教与学新模式[J].计算机教育, 2006 (11) :132-133.

[5]刘冬晖, 刘智涛.案例教学法在C语言教学中的研究与实践[J].计算机时代, 2005 (11) :100-102.

C语言循环语句 篇8

关键词:全国计算机等级考试,二级C语言,上机操作,switch语句的说明

1 上机操作题

1.1 填空题

1.2 改错题

1.3 编程题

2 上机操作题答案

2.1 填空题

(1) N (2) N-1 (3) 0

2.2 改错题

(1) s=s+ (double) (n+1) /n; (2) return t;

2.3 编程题

3 知识点详析

switch语句的说明:

(1) switch、case、default、break均是关键词, 格式中大括号括起来的部分称为switch语句体。switch语句体中可以没有break语句和default语句。

(2) switch语句的括号中的表达式的值必须是整型或者字符型, 不能为实型。case后面的表达式可以是求得整型量和字符型量的常量表达式, 但常量表达式中不能含有变量。

(3) 执行过程中如果遇到break语句, 则跳出switch语句。case只作为一个入口, 如果执行完某一个case或者default语句块后没有遇到break, 则继续顺序往下执行, 直到遇到break语句或者switch语句体末位为止。

(4) 每一个switch语句中default最多只能有一个, 通常出现在switch的最后部分, 但也可以出现在case之间或所有case之前。

(5) 在case后的各常量表达式的值不能相同, 否则会出现错误。在case后, 允许有多个语句, 可以不用{}括起来。

参考文献

[1]路瑾铭.全国计算机等级考试过关宝典系列——教程 (二级C语言) .2011 (9)

浅析C语言中for循环的应用 篇9

C语言是一种结构化的高级语言。顺序、选择、循环是结构化程序设计的三种基本结构;所以在C语言学习中, 掌握这三种结构是学好程序设计的基础。而循环结构是这三者中最复杂的一种结构, 几乎所有的程序都离不开循环结构。循环, 顾名思义, 是程序中有许多需要重复进行的操作, 它们的处理方法相同, 只是每次处理的数据可能发生变化。在程序中使用循环结构可以减少源程序重复书写的工作量, 用来描述重复执行某段算法的问题, 这是程序设计中最能发挥计算机特长的程序结构。在C语言中, 循环结构主要是由while、do-while和for语句实现的, 其中for语句的使用最为灵活, 也最为普遍。它不仅可以用于循环次数已经确定的情况, 而且可以用于循环次数不确定, 只给出循环结束条件的情况。for循环语句的用法对于有程序设计经验的学习者来说轻而易举, 但是对于那些没有经验的初学者来说, 难度却不小。下面我们就从初学者的角度来探讨如何灵活的运用For语句来实现各种循环。

1 for语句的一般格式

一般格式为:

for (表达式1;表达式2;表达式3)

循环体

程序对于该语句的执行过程可以分解为:

1) 先计算“表达式1”, 在此语句中, “表达式1”只执行一次, 故常用于为某些变量赋初始值。

2) 计算“表达式2”。在此语句中, “表达式2”作为循环条件判断, 判断进入循环还是退出循环。如果其值不为0, 则转到步骤3进入循环;如果其值为0, 则转到步骤4退出循环。

3) 先执行循环体中的语句, 执行完后再计算“表达式3”, 然后再返回步骤2。

4) 终止循环, 执行for循环语句后面的第一条语句。

可用流程图表示for语句的执行过程如图1所示。

因此, 我们也可以用最简单、最易理解的形式表达for语句:

for (变量赋初值;循环条件;循环变量增值) 循环体

在for语句使用过程中, 一般要注意以下几点:

1) 要正确设置循环控制变量的初值和指定循环的条件, 在语句中应改变循环控制变量的值, 使循环条件逐渐趋向于不满足, 结束循环, 以避免出现“死循环”。

例:要求编程实现1+2+3+……+100。

程序段为:

在此例中, i的初始值为1, 在第一次条件判断中, 满足循环条件i<=100, 进入执行循环体, 执行完循环体后计算i++, i变量的值变成2, 还是满足循环条件i<=100, 继续进入执行循环体, 由此类推, 直到i的值大于100退出循环。在此例中, 如若i++改成i--, 则循环条件永远都满足i<=100, 无法退出循环, 就会陷入“死循环”。

2) 语句中的三个表达式可以部分省略, 也可以全部省略, 但分号不可省略。但在实际使用过程中, 除非循环体中有能够退出循环的其它方式, 否则不能省略表达式2。省略了表达式2, 相当于“无限循环” (即循环条件总是为真) , 即:

for (表达式1;;表达式3) 循环体

完全等价于:

for (表达式1;1;表达式3) 循环体

此时循环条件总是为真, 程序出现了“死循环”, 当出现这种情况时, 就需要在for语句的循环体中设置使循环趋于结束的语句 (即循环变量值的改变) , 以结束循环。

例:要求编程实现1+2+3+…+100。

程序段为:

此时循环体中设置一条判断循环是否继续的语句:if (i>100) , 若该语句为真, 就退出循环。

3) 循环体指定for循环结构进行的操作。可以是一条语句, 也可以是用花括号括起来的多条语句。即如果循环体中的语句多于一条, 一定要用花括号括起来, 否则系统默认为循环体只有第一条语句。

例:要求编程序求s=1!+2!+3!+...+20!的和程序段为:

若此循环体中未加上花括号, 系统将默认循环体只有jc=jc*i, 最后求得的sum结果将会只是最后一项20!的值, 而并没有将1!--20!进行循环累加。

2 for语句在实际例子中的使用

1) 古印度国王要褒奖他的聪明能干的宰相达依尔 (国际象棋的发明者) , 问他要什么, 达依尔回答:“陛下只要在棋盘的第一个格子中放一粒麦子, 在第二个格子中放2粒麦子, 在第三个格子中放4粒麦子, 以后每个格子中的麦子都是前一格的2倍, 如此放满64格, 我就心满意足了。”国王想, 这不难办到, 但是一袋麦子很快用完了, 一仓库的也用完了, 全印度的麦子还远远不够, 请计算所需麦子的体积。 (1立方米的麦子约为1.42*108粒)

我们通过分析可知, 放麦子的规律是固定的, 每个格子中的麦子都是前一格的2倍。类似需要重复进行的操作可用循环结构解决, 利用for循环编写该程序为:

在该程序中, 循环体主要由两部分所组成, 一部分用于计算当前的麦子总数, 用sum=sum+x表示, 另一部分用来计算下一个格子中的麦子个数, 用x=2*x表示。分别输出了每一个格子中的麦子个数及最终所需的麦子总的体积。

运行后结果如图2。

2) 打印出如图3的九九乘法表。

分析此例可知, 一个九九乘法表需由若干行所组成, 同时, 每行又需由若干列所组成。因此, 可以简单概括为完成一件工作, 需要进行重复的操作, 并且每个操作本身又需要进行重复的操作来完成, 这样的问题通常可使用循环嵌套来解决。对于循环嵌套, 很多学习者总是觉得摸不着头脑, 其实, 我们可以把该问题进行分解, 简单化。

我们已知for语句的一般格式为:

for (表达式1;表达式2;表达式3)

循环体

这里的循环体可以是一条或多条语句, 那么如果循环体本身也是一个循环语句, 即在循环语句中嵌套循环语句, 也就构成了循环嵌套。我们在理解过程中, 可以把内层循环简单地看成是外层循环的循环体, 这样理解起来就简单多了。

我们用以下的程序来实现:

在该程序中, i变量主要用于控制打印的行, j变量主要用于控制每一行中需打印的列数, 同时作为被乘数和乘数来计算出最后的结果。在循环嵌套使用中, 要始终记住一句话:外层变化慢, 内层变化快。因为内层for语句是外层for语句的循环体, 换句话说, 当外层循环变量i=1时, 内层循环变量j要从1变化到i, 当i=2时, j也要从1变到i, 同理当i=3, i=4, i=5, i=6, i=7, i=8直到i=9时, j的值都依次从1变化到i, 最终输出一个九九乘法表。

3) 百钱买百鸡问题:鸡翁一值钱五, 鸡母一值钱三, 鸡雏三值钱一, 百钱买百鸡, 问鸡翁、鸡母、鸡雏各几何?

这是中国古代数学家张丘建在他的《算经》中提出的著名的“百钱买百鸡问题”。这是一个属于不定方程问题, 假设公鸡买x只, 母鸡买y只, 小鸡买z只, 则根据题意可得以下方程组:

同时, x, y, z的值应该满足以下条件:

0<=x<=19, 且x是整数 (因为一只公鸡5元, 故公鸡只数不可能超过19)

0<=y<=33, 且y是整数 (因为一只公鸡3元, 故公鸡只数不可能超过33)

0<=z<=100, 且z是3的倍数的整数。

因此, 利用枚举算法, 根据分析可写出如下程序:

在该程序中, 利用对鸡翁、鸡母、鸡雏的可能只数进行逐一测试, 直到全部可能只数都测试完毕。但是, 我们通过对循环次数的判断, 可知, 对于最外层x循环, 共要执行20次循环;中间y循环, 共要执行34次;内层z循环, 共要执行101次, 故在该程序中, 系统共要做20*34*101=68680次的判断是否满足百钱买百鸡的条件, 虽然计算机的运行速度很快, 但是, 这并不是一个高效的算法, 我们可以对此进行优化。

利用百鸡的条件, 我们可知, 一旦确定了鸡翁x只、鸡母y只, 鸡雏的只数就可以直接用100-x-y表示, 故该程序不必用三重循环, 只需二重循环即可解决, 程序修改如下:

通过对修改后的程序进行分析, 可知故在该程序中, 系统只需做20*34=680次的判断。但是这是不是就是最优算法呢, 笔者认为, 还可以对该程序继续改进, 在以上的分析中, 我们都是以100钱最多可买的鸡翁、鸡母只数来确定循环次数的, 但其实在外层x循环已知情况下, 剩下买鸡母及鸡雏的钱就不是100钱, 而是100-5*x钱, 故可以再对以上程序做进一步优化:

在该程序中, 循环次数应为19* ( (100-5*x) /3) , 随着x的值越来越大, 所需执行的循环次数将越来越少, 这样写出来的程序才更简洁, 效率也更高。程序的执行效率是编程中时刻需要考虑的问题, 也是程序设计中的基本要求。我们从学习之初就要打下良好的基础, 编制完一道程序以后, 检验一下, 是否还有可优化的地方, 这对以后进一步高级编程的学习都是必要的。

3 结束语

在计算机高度普及的今天, 计算机技术已经深深地改变了我们的生活, 掌握计算机知识, 提高计算机应用水平, 是我们当前无法回避的责任;C语言是一种优秀的应用广泛的程序设计语言, 它既可以编写操作系统软件也可以编写应用软件;希望读者能通过本文初步了解C语言的特点, 培养学习程序设计的兴趣, 增强学好程序设计语言的信心。

参考文献

[1]谭浩强.C程序设计[M].北京:清华大学出版社, 2005.

[2]何钦铭, 颜晖.C语言程序设计[M].北京:高等教育出版社, 2008.

C语言循环语句 篇10

C语言是当前许多高校针对计算机专业或非计算机专业开设的程序设计入门课程, 它不仅有着广泛的应用领域, 也被各类计算机等级考试列为重点考试科目之一。其教学目标在于使学生通过该课程的学习, 逐步掌握程序设计的思想和方法, 进而具备计算机应用能力以及问题的求解和探索创新能力。然而, 从目前的教学情况来看, 学生普遍感到C语言课程难学、面对实际问题时不知如何转换编程思想。C语言中的循环结构, 却正是学生形成并掌握编程思想和方法的关键环节。

作为面向过程的结构化程序设计语言, C语言具有顺序、选择、循环三种基本结构, 其中循环结构是重点亦是难点的内容。说它重要, 是因为它既是顺序和选择结构教学内容的深入, 又是后续章节教学的基础。例如数组的引用就是以循环为基础, 利用单层循环可以解决一维数组的引用, 利用循环嵌套可以解决二维数组的引用[1]。说它难, 是因为与顺序和选择结构不同, 循环结构在现实生活中并没有非常直观类似的情境。因此初学者往往会对于“什么是循环”、“何时需要使用循环结构”和“如何使用循环结构”感到十分困惑。本文就是以解答好这三个重要问题为目标, 通过精心选择的教学案例和灵活有效的教学方法来帮助学生牢固地掌握循环结构, 为其后续章节的学习打下坚实的基础。

2. 传统的教学方式存在的问题

在C语言的各类教材中, 对于循环这一章的介绍通常都是先从循环的定义入手, 给出循环的理论概念并比较循环的两种基本结构:“当型”循环 (先判断条件, 再执行循环体) 和“直到型”循环 (先执行一次循环体, 再判断条件) ;接着列举出C语言中实现循环的4类基本语句:while语句, do…while语句、for语句与goto语句, 说明它们的语法规则和执行顺序;然后进一步引出循环嵌套并给出一些循环的应用示例。这种传统的教材编写模式固然对于知识的传授更具系统性和逻辑性, 然而却不利于引发学生的学习兴趣。而教师往往也是按照教材的章节安排按部就班地进行讲解, 先花大量的时间系统地讲授各循环语句的语法规则、执行过程, 然后再举出相应的示例。这就使得学生在一种毫无感性认识的前提下枯燥地学习相应的理论知识点, 造成理解消化困难、兴趣缺失, 对于给出的示例也只是“知其然而不知其所以然”, 并没有从根本上弄清楚什么是循环, 为什么要使用循环, 以及循环结构的真正意义, 也就更加谈不上对循环结构灵活运用、举一反三。

3. 选取合适的教学案例, 运用有效的教学方法, 回答好循环结构的三个问题

针对传统教学方式存在的问题, 笔者认为, 在教学安排上, 可以改变传统的先讲理论后举实例的做法, 直接采用案例驱动来回答好循环结构的三个重要问题。首先, 可以通过选择一些贴近生活的比喻来引入循环的思想, 使学生了解什么是循环;然后再通过列举一些生动有趣的实例来说明为什么要使用循环, 使学生明确循环的意义;最后通过设计一些具有连贯性的、由浅入深的案例来加深对循环语句的理解和应用, 使学生掌握如何使用循环结构。

3.1 什么是循环?——了解循环的概念

对于这个问题的解答, 可以通过实际生活中“吃饭”[2]与“考试”的例子来引入循环的思想, 如下图1所示。从这两个例子可以看出:“循环”其实就是“重复”, 是为了达到某种目标 (循环条件) , 而反复地执行某些动作 (循环体) , 直到目标达成为止。同时, 虽然这两个例子都是循环, 但细节处仍有不同。“吃饭”是典型的“当型循环”, 即先判断是否饥饿来决定是否执行吃饭的动作, 是“先判断后循环”, 其循环体 (吃饭) 有可能一次都不执行。而“考试”是典型的“直到型循环”, 即必须先通过学习才能参加考试, 并根据考试的结果来决定是否需要继续学习和重新参加考试, 是“先循环后判断”, 循环体 (学习和参加考试) 至少执行一次。

由此, 便回答了“什么是循环”的问题, 并比较了两种循环结构的特点, 也引出了“循环条件”和“循环体”等概念。

3.2 何时需要使用循环?——明确循环的意义

了解循环的概念之后, 学生还需要进一步明确在面对实际问题时, “何时需要使用循环?”即明确循环结构的实用性。对此, 教师可以选择一些带有趣味性的实例来加以说明, 如经典的“百钱买百鸡”问题[3]。在教学过程中教师可以设置情境, 在将题意说明清楚后让学生先通过手工演算的方式来进行求解, 以激发学生的兴趣。学生在分析讨论的过程中会发现, 对于这个看似简单的问题, 通过列举方程式却无法轻易得到答案。因为根据已知的条件, 这个三元一次问题中只能列举出两个方程式, 运算条件不够充分。然而, 使用最笨拙的“穷举法”却能够很好地解决这个问题, 即将所有可能满足条件的值都一一进行尝试, 虽然运算时间长, 却必然能够最终得到正确答案。此时教师便可以向学生说明, 实际上“穷举法”就是一种基于循环结构的解题方法。对比于前面得出的循环概念可知, “将所有可能满足条件的值都一一进行尝试, 直到得到最终解答”, 此命题里其实已经隐含了循环结构的“循环条件”与“循环体”。其循环条件就是“尝试完所有可能的值”, 循环体就是“判断是否满足百钱买到百鸡”。

循环结构除了可以实现值的穷举, 还可应用在一些需要重复计算的问题求解上。如求解“一球从10000米高的地方自由落下, 每次落地后反跳回原高度的一半, 再落下, 问当它第58次落地时, 共经过了多少米?”;或是求解“棋盘上的麦粒”问题 (国王问发明了国际象棋的宰相需要什么奖励, 宰相说:“请陛下您在棋盘的第一格里放1粒麦子, 第二格里放2粒, 第三格里放4粒, 以后每一格的麦子都是前一格的两倍。这样把棋盘上的64个小格摆满, 就把这些麦粒赏给我吧!”) 里国王需要给出多少的麦粒?这些问题不但生动有趣还具有一定的现实意义, 在吸引学生注意力的同时能够促使学生开动脑筋, 并在各种运算方法的比较中体会出循环结构的方便性与实用性。

3.3 如何使用循环?——掌握循环的应用

明解了循环结构的意义, 对于如何使用循环结构来解决实际问题还不能急功近利。应当先选择一些难度较小的基础性例题, 来具体地讲解循环语句, 然后在此基础上设计一些循序渐进、由浅入深的案例来加深对循环语句的理解和应用。

例如, 可先以求解“1+2+3+…+n=?”这样的简单问题为例, 鼓励学生找出其中隐含表示的“循环条件”和“循环体”。通过分析学生会发现, 这个问题其实质是在重复地做“加法”运算, 先加值1, 再加值2, 直到n为止。因此, 可判断出循环体为“相加运算”, 循环条件为“到n为止”。进一步分析循环体, 会发现, 相加的值在不断的增1, 因此循环体又可以进一步细分为两个动作“加上当前值”和“当前值增1”, 这两个动作使用复合语句便可以同时放入循环体。

分析出循环结构中的关键要素“循环条件”和“循环体”之后, 此时教师便可具体讲授C语言中的几类循环语句的一般形式和执行过程了。goto语句由于能够实现无条件的跳转, 因此通常不提倡使用。教师可以先从简单的while语句入手, 说明在其语句中循环条件与循环体分别放置的位置, 并现场进行编程演示, 使学生直观地感受到用循环语句解决实际问题的步骤。接着, 教师可对比介绍do…while语句, 可提醒学生由于其执行过程与while语句有区别, 因此有一些细节需要注意:一是要考虑到给定的n值小于1的情况, 所以相加的第一个“当前值”应取值为0;二是要留意do…while语句本身末尾所带有的分号, 并不是一个空语句。最后, 教师可引出for循环语句, 它实际是对while语句的一种变形, 只是形式更加灵活。可以通过将初始化语句以及循环体内的语句放置于for循环的不同的位置, 使学生在对比中体会for语句的执行顺序。

在学生理解了C语言中的循环语句之后, 教师可再设计一些具有连贯性的、由浅入深的案例来巩固其对循环结构的掌握。例如, 要求打印出如下图2中所示的各个图形。其中图形a要求打印出一个n行n列的星号矩阵, 可简单地运用循环嵌套加以实现;图形b是在图形a的基础上增加了难度性, 虽仍是一个n行n列的矩阵, 但需要打印出不同的数值;图形c则是在图形b的基础上进一步地变形, 不仅需要打印数值, 而且需要分奇数行和偶数行来考虑所打印数值的规律;图形d则不仅需要分析归纳出所打印的数值与给定的n值之间的规律, 还需要总结出打印的列数与行数之间的关系。

在教学过程中, 教师可以运用“举一反三法”来对这些经典问题进行变换, 将教学知识点融入于不断变换的问题情境中, 使学生在问题探究中掌握知识和方法, 学以致用。或是鼓励学生运用“归纳法”来找出问题内在的规律, 将特殊问题归纳到一般性的问题。

4. 结束语

循环结构是C语言学习的重点, 掌握好循环结构的使用不仅能为后续的数组、函数、指针章节的学习奠定扎实的基础, 也能使学生建立编程的自信心。在教学的过程中, 教师若能事先选择好生动有趣的案例, 事中运用灵活多变的教学方法, 事后进行及时有效的总结, 解答好学生心中的疑惑, 定能取得很好的教学效果。

参考文献

[1]赵俊峰.《C语言程序设计》中“循环结构”教学探析[J].忻州师范学院学报, 2008, 24:74-76.

[2]薛慧芳.《C语言程序设计》循环结构的教学探讨[J].网络财富, 2010, 10:175-176.

上一篇:无线频谱下一篇:乳液共聚