• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    對比法在C語言教學(xué)實踐中的一點體會

    2020-05-22 10:33:47楊儀代祥光張先休吳鴻娟朱丙麗
    成長 2020年2期
    關(guān)鍵詞:教學(xué)實踐

    楊儀 代祥光 張先休 吳鴻娟 朱丙麗

    摘 要:本文通過求素數(shù)和文件讀寫等兩個實例展示了對比法在C語言教學(xué)中的應(yīng)用。通過簡單實例幫助學(xué)生理解編程思想,提高學(xué)生的動手實踐能力。

    關(guān)鍵詞:C語言;對比法;教學(xué)實踐

    1 引言

    C語言是目前大多數(shù)高校開設(shè)的程序設(shè)計入門課程,且通常在大一學(xué)年開設(shè)。由于C語言基礎(chǔ)語法知識繁瑣,涉及到數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)等眾多學(xué)科,對大一新生來講,比較抽象復(fù)雜。如何讓學(xué)生對C語言學(xué)習(xí)不產(chǎn)生畏難情緒,是擺在任課教師面前的一道難題[1-4]。C語言是一門實踐性很強的學(xué)科,單純采用PPT授課容易讓學(xué)生對程序語言學(xué)習(xí)失去興趣,教師在課堂上講解運行程序演示,讓學(xué)生在電腦上操作實踐,分析對比各種不同的算法,體會C語言程序的精妙之處,能夠提高學(xué)生的編程能力和激發(fā)學(xué)生的學(xué)習(xí)熱情。

    2 同一問題采用不同算法實現(xiàn)

    求素數(shù)是C語言中的一個經(jīng)典數(shù)學(xué)例題[5-6],實現(xiàn)它的算法有多種,通過不同算法的比較,讓學(xué)生能夠體會實現(xiàn)同一問題可以采用多種算法,各種算法各有優(yōu)劣,加深對問題的理解。

    2.1 用定義法求素數(shù)

    用定義法求素數(shù),首先要知道素數(shù)的定義。素數(shù)是大于1的自然數(shù),除了1和它本身外沒有其它數(shù)能被素數(shù)整除。用定義法求3到100之間的素數(shù),實現(xiàn)程序如下:

    #include

    int main()

    { unsigned int? i,? j,? flag;? ? ? /* 用flag作標志*/

    for (i=3;i<=100;i++)? /*外層循環(huán)判斷3到100之間的自然數(shù)哪些為素數(shù)*/

    {? flag=1; ? ? ? ? ? ? /* 首先默認這些數(shù)都是素數(shù) */

    for(j=2;j

    if(i%j= =0)? ? ? ? /*能整除,不是素數(shù),標志設(shè)為0 */

    { flag=0; break;? ? ? ? /* 內(nèi)循環(huán)結(jié)束 */

    }

    if(flag= =1)? ? ? ? ? ? ?/* 若flag為1,i是素數(shù) */

    { printf("%4d, ",i);? } ? ? ? ? /* 輸出素數(shù)? */

    }

    return 0;

    }

    以上程序是利用定義法求素數(shù),優(yōu)點是簡單明了,好理解。缺點是需要循環(huán)的次數(shù)很多,存在一部分不必要的循環(huán)次數(shù)??梢钥s小內(nèi)層循環(huán)控制變量j的取值范圍,即控制變量j取值從2到i/2即可。內(nèi)層循環(huán)代碼修改為:

    for(j=2;j<=(i/2);j++) ? ? /*內(nèi)層循環(huán)控制變量j取值從2到i/2*/

    這個程序相比用定義法求素數(shù)有了一定的改進,循環(huán)的次數(shù)是定義法求素數(shù)循環(huán)次數(shù)的一半,但是循環(huán)次數(shù)還不是最少的。相比于定義法,用根號法求素數(shù)的算法循環(huán)次數(shù)更少。

    2.2 用根號法求素數(shù)

    for(j=2;j<=sqrt(i);j++) ? /*內(nèi)層循環(huán)控制變量j取值從2到*/

    用根號法求素數(shù)比用定義法和基于定義法改進的求素數(shù)的算法循環(huán)次數(shù)要少,是目前比較常用的求素數(shù)的算法。除了這兩種方法,求素數(shù)還有埃氏法、歐氏法等等。這些都可以根據(jù)學(xué)生的接受能力選擇其中兩種或多種方法作對比講解。

    3 同一問題的不同實現(xiàn)形式

    3.1 將源文件內(nèi)容反序?qū)懭肽康奈募?/p>

    以下程序?qū)崿F(xiàn)的功能是,打開一源文件將其中內(nèi)容復(fù)制到字符數(shù)組buf中,再將buf數(shù)組中的字符反序?qū)懭胍荒康奈募?/p>

    //讀出文件sfile.txt中的內(nèi)容,反序?qū)懭肓硪粋€文件dfile.txt中

    #include

    #define BUFF 100

    int main ( )

    { FILE? *sfp , *dfp; int? i=0; char? buf[BUFF];

    if ((sfp=fopen("sfile.txt","r" ))==NULL)? ?/* 打開源文件 */

    {

    printf("源文件無法打開?。躰" ) ;? exit(1) ;

    }

    if? ((dfp=fopen("dfile.txt","w" ))==NULL)? /* 打開目的文件 */

    {

    printf ("目標文件無法打開?。躰 ");? exit(1) ;

    }

    while? (!feof(sfp))? ? ? ? ? ? ? ?/* 判斷是否文件尾,不是則循環(huán) */

    { buf[i++]=fgetc(sfp);? ? ? /* 讀出數(shù)據(jù)送緩沖區(qū) */

    }

    while (- -i>=0) fputc(buf[i],dfp);? ? ?/* 反序?qū)懭肽康奈募?*/

    fclose(sfp); fclose(dfp); return 0;

    }

    這個程序?qū)崿F(xiàn)了將源文件的內(nèi)容讀出然后最終寫入目的文件,但是目的文件中的字符順序和源文件中相比是相反的,例如在源文件sfile.txt中輸入“hello”保存,程序運行后則dfile.txt中字符串為“olleh”。這是教材例題,但實際中更需要源文件和目的文件內(nèi)容一致,這個時候就可以引導(dǎo)學(xué)生思考,怎樣改寫這個程序?qū)⒃次募械膬?nèi)容按順序?qū)懭氲侥康奈募?。有了前面反序?qū)懭氲某绦?,學(xué)生就比較容易通過修改前面反序?qū)懭氲某绦驅(qū)崿F(xiàn)順序?qū)懭搿?/p>

    3.2 將源文件內(nèi)容順序?qū)懭肽康奈募?/p>

    只需要將反序?qū)懭氲某绦蛳旅孢@一行代碼

    while (- - i>=0) fputc(buf[i],dfp);? ? ?/* 反序?qū)懭肽康奈募?*/

    改為

    int j=0;

    while (j

    程序的修改比較簡單,只需要另外定義一個局部變量j,讓j取值從0開始,j小于buf數(shù)組中存放的字符數(shù)i,也就是源文件的字符數(shù),這樣就變成將buf數(shù)組中字符順序?qū)懭肽康奈募缭谠次募file.txt中輸入“hello”保存,程序運行后則dfile.txt中字符串為“hello”。

    總結(jié) 作者在C語言整個教學(xué)過程中都貫穿了這個對比教學(xué)法,通過簡單實例的對比,降低了教學(xué)難度,大部分學(xué)生對所解決的問題有了更深層次的理解,學(xué)生在學(xué)習(xí)的過程中學(xué)會了舉一反三,達到了良好的教學(xué)效果。

    參考文獻:

    [1] 樊新華,郭曉宇,陳洪軍,et al.基于案例的C程序設(shè)計實驗教學(xué)的探索[J]. 現(xiàn)代計算機(專業(yè)版),2019,638(02):79-83.

    [2] 程艷.《C語言程序設(shè)計》教學(xué)中“類比”法的運用[J].職教論壇, 2003(18).

    [3] 崔孝鳳.C語言用戶自定義函數(shù)案例教學(xué)設(shè)計[J].電腦知識與技術(shù),2019,15(09):142-143.

    [4] 黃文鈞.“聯(lián)系”與“類比”在《C++/C語言程序設(shè)計》教學(xué)中的應(yīng)用[J].廣西民族大學(xué)學(xué)報:自然科學(xué)版,2012,17(2):95-97.

    [5] 楊路明.C語言程序設(shè)計教程(第四版) [M]. 北京郵電大學(xué)出版社, 2018.

    [6] 譚浩強. C程序設(shè)計(第四版)[M].清華大學(xué)出版社,2010.

    猜你喜歡
    教學(xué)實踐
    財務(wù)業(yè)務(wù)一體化課程教學(xué)的改革分析與實踐應(yīng)用
    小學(xué)數(shù)學(xué)體驗性學(xué)習(xí)的教學(xué)實踐
    低年級衛(wèi)生習(xí)慣的培養(yǎng)
    基于三維軟件和云班課APP的機械設(shè)計課程教學(xué)實踐
    職業(yè)(2016年10期)2016-10-20 22:23:49
    中職職業(yè)生涯規(guī)劃課程的教學(xué)反思
    職業(yè)(2016年10期)2016-10-20 21:59:29
    試論類比推理在高等數(shù)學(xué)教學(xué)實踐中的應(yīng)用
    《單片機原理與應(yīng)用》課程教學(xué)改革與實踐
    科技視界(2016年22期)2016-10-18 16:51:33
    中職計算機應(yīng)用課程教學(xué)改革與反思
    科技視界(2016年21期)2016-10-17 18:57:24
    淺論高中化學(xué)生活化教學(xué)的實踐與思考
    考試周刊(2016年79期)2016-10-13 23:10:24
    淺談初中物理實驗教學(xué)與學(xué)生創(chuàng)新能力的培養(yǎng)
    考試周刊(2016年79期)2016-10-13 23:09:42
    威信县| 抚顺市| 肥城市| 海口市| 策勒县| 定远县| 林周县| 新河县| 福建省| 康乐县| 通榆县| 沙坪坝区| 峡江县| 苗栗市| 永寿县| 长治县| 德安县| 马尔康县| 中宁县| 正宁县| 泾源县| 楚雄市| 灵山县| 通山县| 甘洛县| 女性| 健康| 通许县| 永吉县| 灵寿县| 甘德县| 永寿县| 南雄市| 昌吉市| 武冈市| 乌兰察布市| 凌源市| 濮阳县| 宜君县| 凤台县| 富川|