C语言中循环结构程序学习探究
2022-05-30白宗辉
摘要:C语言是中职校计算机专业的必修课,也是一门核心课程。C语言中循环结构程序设计,是C程序设计教学中的重点与难点。本文主要重点研究了循环结构程序重点及难点,包括重点分析与难点突破;运用实例探讨如何分析循环结构程序的方法,以及运用实例讲解编写循环结构程序的方法。
关键词:C语言;循环结构;学习
一、牢记C语言循环结构的内容
循环结构程序设计所涉及的知识点为三种类型的循环。即:while循环、do…while循环和for循环。这三个语句是循环结构程序的重点内容。
(一)while循环语句
1.while循环的一般形式
while(表达式)
循环体
2.学习while循环语句的重点
循环如果超过一条语句,应该用“{}”括起来,构成复合语句,否则循环体是while后的第一个分号前的那一条语句。
3.循环体结构程序四要素
(1)循环初始化
给循环变量赋初始值。
(2)循环条件
一般情况下是条件表达式、逻辑表达式或数值。
(3)循环体
需要反复执行的、处理问题的程序段。
(4)循环控制变量的调整
控制循环的条件。
(二)do …while循环语句
1. do…while循环语句形式
do
循环体
while(表达式)。
2. do…while 语句注意要点
要能区分do…while语句和while语句的不同。前者先执行循环体,后判断循环条件,后者是先判断后执行循环体。
(三)for循环语句
1.一般形式
for(表达式1;表达式2;表达式3)
循环体
2. for循环语句要点
表达式1是初始值,表达式2是控制条件,表达式3是循环变量的修改部分。
C循环结构程序中的break语句与continue语句是循环结构程序教学中的难点。
break语句是终止当前所在循环,continue语句是暂停本次循环,转而继续执行下次循环。
二、熟悉C语言循环结构的分类方法
(一)按名稱可分为while循环、do…while循环和for循环。
(二)按是否嵌套可分为单重循环与多重循环。
三、学会分析C语言循环结构程序流程
(一)在for循环中包含break,continue语句程序段
执行以下语句后的x值为__,y的值为___。
for(y=1,x=1;y<=50;y++)
{
if(x>=10)break;
if(x%2==1)
{x+=5;
continue;
}
x-=3;
}
依循环次数,程序流程分析:
第1次循环,因为初始值y=1,y<=50成立,x>=10不成立,x%2==1为真,执行语句x+=5;x=6;执行continue语句,转向首行执行y++;y=2,y<=50为真,程序进入第2次循环。
第2次循环,因为x=6,(x>=10)为假,(x%2= =1)为假;执行x-=3;x=3;执行y++;y=3;(y<=50)为真,程序进入第3次循环。
第3次循环,因为x=3,(x>=10)为假,(x%2==1)为真,执行x+=5;x=8;执行continue;语句,返回首行,执行y++;y=4;(y<=50)为真,程序进入第4次循环。
第4次循环,因为x=8,(x>=10)为假,(x%2==1)为假,执行语句x-=3;x=5;
返回首行for语句y++;y=5,y<=50为真;程序进入第5次循环。
第5次循环,因为x=5,(x>=10)为假,(x%2==1)为真,执行x+=5;x=10;执行continue;行后,返回首行,执行y++; y=6,y<=50为真;程序进入第6次循环。
第6次循环,(x>=10)为真,执行break语句,跳出循环,此时x=10,
y=6。
此程序为for循环程序 ,总循环次数为6次,展示了for循环语句中continue语句和break语句的用法特点。
(二)读程序,写出输出结果
#include
int main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if(i%10==0)break;
else i--;
}
i+=11;a+=i;
}
printf("%d\n",a);
return 0;
}
流程分析:
本程序为双重循环,外循环是while循环语句,内循环是for循环语句。
外循环执行前,i=0,a=0。
外循环第1次:
i=0,i<20,进入外循环,进入内循环。因为i=0,(i%10==0)为真,所以执行break;语句。跳出for循环(内循环)。执行i+=11;i=11;a+=i;a=11;返回外循环,因为i=11,i<20,外循环进入第2次循环。
外循环第2 次:
在for循环第1次循环,(i=11,i%10==0)为假,执行else后语句i--;即i=10,for循环第2次循环,i=10,(i%10==0)为真,执行break;语句,跳出本次for循环,执行i+=11;i=21。执行a+=i;a=a+i=11+21=32。
此时,i=21,i<20不成立,故外循环终止。双重循环终止,输出32。
程序盘点:
本程序为双重循环,程序中包含break语句,外循环执行2次,内循环共循环3次。
以上两个例子分别列举了单重循环、多重循环,并使用了break语句和continue语句来控制程序的流程。通过对程序的详细分析,详解了循环结构程序的执行过程和分析方法。
四、积极探究C语言循环结构程序编程实践方法
(一)学会使用算法:编写程序前先设计好程序的算法
算法是编写程序的灵魂,一个编程问题的算法设计好了,那么编程过程就可以按照算法,按部就班地完成。所以编写比较复杂的程序,使用流算法来设计算法是非常必要和可行的手段。
实践操作:求1!+2!+3!+……+10!的和,并输出计算结果。
根据编程任务,编写流程如下 :
程序的功能主要通过内循环的循环体来实现,用fact*=语句作为累乘器来求阶乘,用s+=fact作为累加器来求阶乘的和。
根据流程图,编写程序如下:
#include
int main()
{
int i,j,fact,s=0;
for(i=1;i<=10;i++)
{
fact=1;
for(j=1;j<=i;j++)
fact*=j;
s+=fact;
}
printf("%d",s);
return 0;
}
(二)一题多解,开阔思路
实践操作:使用循环语句编写一段程序生成下面的输出。
0 1
1 2
2 4
3 8
4 16
5 32
6 64
算法一:
分析可知,输出各行的第1列数是一个等差数列,首项是0,等差是1,共7项可用自增运算符来表示。各行第2项数组成一个指数函数,指数是2,指数是各行第一个数,故可使用数学函数pow()函数来求,所以在程序中需要使用一个#include
程序如下:
#include
#include
int main()
{
int i,m;
for(i=0;i<=6;i++)
{
m=pow(2,i);
printf("%d %d\n",i,m);
}
return 0;
}
满足一个通项,即以2为底,前一个数是指数,后一个数是指数函数的值。
算法二:
巧用自增运算符来设置循环程序。
#include
int main()
{
int i,a,f;
a=0;
f=1;
for(i=1;i<=7;i++){
printf("%d %d",a++,f);
f*=2;
printf("\n");
}
return 0;
}
分析可以發现两种算法的各自特色,第一种方法使用函数,编写程序较容易;第二种方法没有使用函数,技巧性和思维能力考查要求比较高。
以上2个编程例子,第一个例子介绍了编写循环结构程序的方法与过程,利用流程图作为工具,来辅助编程, 就会让编程具有了目标和方向,编程变得有规可循。第二个例子,主要强调了在C循环结构编程时,要尝试多种算法来编写程序,通过不同算法进行比较,优化编程策略,开阔了编程的视野,让学生在算法设计上会具有更加灵活选择路径。
五、结束语
本文主要讲述了C循环结构程序所需掌握的内容,学会如何分类,熟练掌握单重循环、多重循环,while循环、do…while循环和for循环重点内容,并能灵活使用break语句和continue语句来控制程序的流程的语法规则。
通过读C循环结构程序,写出结果的三个案例,详细分析,讲解了循环结构程序的具体执行过程和细节处理技巧,让学生对读程序过程有了具体的认识,逐步建立了读循环结构程序的解题思路。
通过C循环程序编程实践第一个案例,要求学生能够学会使用算法来辅助编写程序的方法技巧,有了算法在编程时就具有了“灵魂”。通过第二个C循环编程实践,开拓了学生的编程算法视野,能用多种算法分析问题,解决问题,提高了学生的编程素养,培养了学生全面学习的核心素养。了解了循环结构程序的内容和种类,通过分析程序结构和程序执行过程,
经过不断地思考、实践和循序渐进学习过程, C语言学习者会逐步掌握循环结构程序的使用技巧,从而为学好C语言程序设计打下坚实的基础。
作者单位:白宗辉 江苏省车辐中等专业学校
参 考 文 献
[1]李红卫.C程序设计与训练[M].大连理工大学出版社,2018.
[2]谭浩强.《C程序设计》第五版[M].清化大学出版社,2017.
[3]黄婷.浅谈《C语言程序设计》实践教学[J].北京电力高等专科学校学报:社会科学版,2010,27(10):434-435.
[4]卢玲,刘恒洋.以计算思维为导引的程序设计实验教学模式研究[J].福建电脑,2012,28(5):164-166.
[5]冯玉芬,冯宁.C程序设计教学方法研究[J].教育探索, 2009(12):62-63.