摘要:C語言是中職校計算機專業(yè)的必修課,也是一門核心課程。C語言中循環(huán)結構程序設計,是C程序設計教學中的重點與難點。本文主要重點研究了循環(huán)結構程序重點及難點,包括重點分析與難點突破;運用實例探討如何分析循環(huán)結構程序的方法,以及運用實例講解編寫循環(huán)結構程序的方法。
關鍵詞:C語言;循環(huán)結構;學習
一、牢記C語言循環(huán)結構的內容
循環(huán)結構程序設計所涉及的知識點為三種類型的循環(huán)。即:while循環(huán)、do…while循環(huán)和for循環(huán)。這三個語句是循環(huán)結構程序的重點內容。
(一)while循環(huán)語句
1.while循環(huán)的一般形式
while(表達式)
循環(huán)體
2.學習while循環(huán)語句的重點
循環(huán)如果超過一條語句,應該用“{}”括起來,構成復合語句,否則循環(huán)體是while后的第一個分號前的那一條語句。
3.循環(huán)體結構程序四要素
(1)循環(huán)初始化
給循環(huán)變量賦初始值。
(2)循環(huán)條件
一般情況下是條件表達式、邏輯表達式或數值。
(3)循環(huán)體
需要反復執(zhí)行的、處理問題的程序段。
(4)循環(huán)控制變量的調整
控制循環(huán)的條件。
(二)do …while循環(huán)語句
1. do…while循環(huán)語句形式
do
循環(huán)體
while(表達式)。
2. do…while 語句注意要點
要能區(qū)分do…while語句和while語句的不同。前者先執(zhí)行循環(huán)體,后判斷循環(huán)條件,后者是先判斷后執(zhí)行循環(huán)體。
(三)for循環(huán)語句
1.一般形式
for(表達式1;表達式2;表達式3)
循環(huán)體
2. for循環(huán)語句要點
表達式1是初始值,表達式2是控制條件,表達式3是循環(huán)變量的修改部分。
C循環(huán)結構程序中的break語句與continue語句是循環(huán)結構程序教學中的難點。
break語句是終止當前所在循環(huán),continue語句是暫停本次循環(huán),轉而繼續(xù)執(zhí)行下次循環(huán)。
二、熟悉C語言循環(huán)結構的分類方法
(一)按名稱可分為while循環(huán)、do…while循環(huán)和for循環(huán)。
(二)按是否嵌套可分為單重循環(huán)與多重循環(huán)。
三、學會分析C語言循環(huán)結構程序流程
(一)在for循環(huán)中包含break,continue語句程序段
執(zhí)行以下語句后的x值為__,y的值為___。
for(y=1,x=1;y<=50;y++)
{
if(x>=10)break;
if(x%2==1)
{x+=5;
continue;
}
x-=3;
}
依循環(huán)次數,程序流程分析:
第1次循環(huán),因為初始值y=1,y<=50成立,x>=10不成立,x%2==1為真,執(zhí)行語句x+=5;x=6;執(zhí)行continue語句,轉向首行執(zhí)行y++;y=2,y<=50為真,程序進入第2次循環(huán)。
第2次循環(huán),因為x=6,(x>=10)為假,(x%2= =1)為假;執(zhí)行x-=3;x=3;執(zhí)行y++;y=3;(y<=50)為真,程序進入第3次循環(huán)。
第3次循環(huán),因為x=3,(x>=10)為假,(x%2==1)為真,執(zhí)行x+=5;x=8;執(zhí)行continue;語句,返回首行,執(zhí)行y++;y=4;(y<=50)為真,程序進入第4次循環(huán)。
第4次循環(huán),因為x=8,(x>=10)為假,(x%2==1)為假,執(zhí)行語句x-=3;x=5;
返回首行for語句y++;y=5,y<=50為真;程序進入第5次循環(huán)。
第5次循環(huán),因為x=5,(x>=10)為假,(x%2==1)為真,執(zhí)行x+=5;x=10;執(zhí)行continue;行后,返回首行,執(zhí)行y++; y=6,y<=50為真;程序進入第6次循環(huán)。
第6次循環(huán),(x>=10)為真,執(zhí)行break語句,跳出循環(huán),此時x=10,
y=6。
此程序為for循環(huán)程序 ,總循環(huán)次數為6次,展示了for循環(huán)語句中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;
}
流程分析:
本程序為雙重循環(huán),外循環(huán)是while循環(huán)語句,內循環(huán)是for循環(huán)語句。
外循環(huán)執(zhí)行前,i=0,a=0。
外循環(huán)第1次:
i=0,i<20,進入外循環(huán),進入內循環(huán)。因為i=0,(i%10==0)為真,所以執(zhí)行break;語句。跳出for循環(huán)(內循環(huán))。執(zhí)行i+=11;i=11;a+=i;a=11;返回外循環(huán),因為i=11,i<20,外循環(huán)進入第2次循環(huán)。
外循環(huán)第2 次:
在for循環(huán)第1次循環(huán),(i=11,i%10==0)為假,執(zhí)行else后語句i--;即i=10,for循環(huán)第2次循環(huán),i=10,(i%10==0)為真,執(zhí)行break;語句,跳出本次for循環(huán),執(zhí)行i+=11;i=21。執(zhí)行a+=i;a=a+i=11+21=32。
此時,i=21,i<20不成立,故外循環(huán)終止。雙重循環(huán)終止,輸出32。
程序盤點:
本程序為雙重循環(huán),程序中包含break語句,外循環(huán)執(zhí)行2次,內循環(huán)共循環(huán)3次。
以上兩個例子分別列舉了單重循環(huán)、多重循環(huán),并使用了break語句和continue語句來控制程序的流程。通過對程序的詳細分析,詳解了循環(huán)結構程序的執(zhí)行過程和分析方法。
四、積極探究C語言循環(huán)結構程序編程實踐方法
(一)學會使用算法:編寫程序前先設計好程序的算法
算法是編寫程序的靈魂,一個編程問題的算法設計好了,那么編程過程就可以按照算法,按部就班地完成。所以編寫比較復雜的程序,使用流算法來設計算法是非常必要和可行的手段。
實踐操作:求1!+2!+3!+……+10!的和,并輸出計算結果。
根據編程任務,編寫流程如下 :
程序的功能主要通過內循環(huán)的循環(huán)體來實現,用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;
}
(二)一題多解,開闊思路
實踐操作:使用循環(huán)語句編寫一段程序生成下面的輸出。
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為底,前一個數是指數,后一個數是指數函數的值。
算法二:
巧用自增運算符來設置循環(huán)程序。
#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;
}
分析可以發(fā)現兩種算法的各自特色,第一種方法使用函數,編寫程序較容易;第二種方法沒有使用函數,技巧性和思維能力考查要求比較高。
以上2個編程例子,第一個例子介紹了編寫循環(huán)結構程序的方法與過程,利用流程圖作為工具,來輔助編程, 就會讓編程具有了目標和方向,編程變得有規(guī)可循。第二個例子,主要強調了在C循環(huán)結構編程時,要嘗試多種算法來編寫程序,通過不同算法進行比較,優(yōu)化編程策略,開闊了編程的視野,讓學生在算法設計上會具有更加靈活選擇路徑。
五、結束語
本文主要講述了C循環(huán)結構程序所需掌握的內容,學會如何分類,熟練掌握單重循環(huán)、多重循環(huán),while循環(huán)、do…while循環(huán)和for循環(huán)重點內容,并能靈活使用break語句和continue語句來控制程序的流程的語法規(guī)則。
通過讀C循環(huán)結構程序,寫出結果的三個案例,詳細分析,講解了循環(huán)結構程序的具體執(zhí)行過程和細節(jié)處理技巧,讓學生對讀程序過程有了具體的認識,逐步建立了讀循環(huán)結構程序的解題思路。
通過C循環(huán)程序編程實踐第一個案例,要求學生能夠學會使用算法來輔助編寫程序的方法技巧,有了算法在編程時就具有了“靈魂”。通過第二個C循環(huán)編程實踐,開拓了學生的編程算法視野,能用多種算法分析問題,解決問題,提高了學生的編程素養(yǎng),培養(yǎng)了學生全面學習的核心素養(yǎng)。了解了循環(huán)結構程序的內容和種類,通過分析程序結構和程序執(zhí)行過程,
經過不斷地思考、實踐和循序漸進學習過程, C語言學習者會逐步掌握循環(huán)結構程序的使用技巧,從而為學好C語言程序設計打下堅實的基礎。
作者單位:白宗輝? ? 江蘇省車輻中等專業(yè)學校
參? 考? 文? 獻
[1]李紅衛(wèi).C程序設計與訓練[M].大連理工大學出版社,2018.
[2]譚浩強.《C程序設計》第五版[M].清化大學出版社,2017.
[3]黃婷.淺談《C語言程序設計》實踐教學[J].北京電力高等??茖W校學報:社會科學版,2010,27(10):434-435.
[4]盧玲,劉恒洋.以計算思維為導引的程序設計實驗教學模式研究[J].福建電腦,2012,28(5):164-166.
[5]馮玉芬,馮寧.C程序設計教學方法研究[J].教育探索, 2009(12):62-63.