亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺析C語(yǔ)言程序調(diào)試過(guò)程及編程常見(jiàn)錯(cuò)誤

        2009-10-26 09:35:10袁立敏
        新媒體研究 2009年13期
        關(guān)鍵詞:分號(hào)語(yǔ)法錯(cuò)誤數(shù)組

        王 諾 袁立敏

        [摘要]在討論說(shuō)明C語(yǔ)言程序調(diào)試過(guò)程的基礎(chǔ)上,根據(jù)實(shí)踐,結(jié)合實(shí)例,總結(jié)程序調(diào)試運(yùn)行過(guò)程中常出現(xiàn)的錯(cuò)誤,并依據(jù)C語(yǔ)言的語(yǔ)法格式和編程規(guī)則,對(duì)這些錯(cuò)誤進(jìn)行詳細(xì)的說(shuō)明和糾正,以提高學(xué)習(xí)者的編程效率。

        [關(guān)鍵詞]C語(yǔ)言調(diào)試編譯語(yǔ)法錯(cuò)誤邏輯錯(cuò)誤

        中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0710049-01

        《C語(yǔ)言程序設(shè)計(jì)》作為一門(mén)計(jì)算機(jī)技術(shù)基礎(chǔ)課程,在國(guó)內(nèi)外得到了廣泛應(yīng)用。它功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高。但是由于C語(yǔ)言涉及到的概念比較復(fù)雜,規(guī)則繁多,使用靈活,不少初學(xué)者在學(xué)習(xí)使用時(shí)都感到編輯的程序調(diào)試運(yùn)行時(shí)容易出錯(cuò)。鑒于此,本文在討論說(shuō)明C語(yǔ)言程序調(diào)試過(guò)程的基礎(chǔ)上,結(jié)合實(shí)例總結(jié)了程序調(diào)試運(yùn)行過(guò)程中常出現(xiàn)的錯(cuò)誤,以便給學(xué)習(xí)者以幫助。

        一、C語(yǔ)言程序調(diào)試過(guò)程

        所謂程序調(diào)試是指檢查程序的錯(cuò)誤以及改正程序的錯(cuò)誤。調(diào)試程序一般包括以下四個(gè)階段:1.編寫(xiě)程序并查錯(cuò);2.在C語(yǔ)言的編譯系統(tǒng)(Turbo C或者VC++6.0)中編輯源程序;3.對(duì)程序進(jìn)行編譯鏈接,并及時(shí)發(fā)現(xiàn)程序中存在的錯(cuò)誤;4.最后改正錯(cuò)誤。C語(yǔ)言程序的錯(cuò)誤主要分為兩類:語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤。

        二、C語(yǔ)言編程過(guò)程中常見(jiàn)錯(cuò)誤

        (一)常見(jiàn)語(yǔ)法錯(cuò)誤分析

        1.書(shū)寫(xiě)主函數(shù)時(shí)需要注意的問(wèn)題。

        例:

        main

        { int i,j,z;

        scanf("%d,%d",&i,&j);

        z=i+j;printf("%d",z);

        }

        此程序在編譯時(shí)會(huì)提示:Declaration syntax error。出現(xiàn)此提示說(shuō)明在源文件中,可能是某個(gè)說(shuō)明丟失了某些符號(hào)或輸入了多余的符號(hào)。此程序就是丟失了main函數(shù)后面的“( )”。初學(xué)者比較容易犯這個(gè)錯(cuò)誤。主函數(shù)正確的寫(xiě)法是main( )。

        2.語(yǔ)句后面漏寫(xiě)分號(hào)。

        例: main( )

        {printf(“癶”?

        }

        C語(yǔ)言規(guī)定語(yǔ)句末尾必須有分號(hào)。分號(hào)是C語(yǔ)句不可缺少的一部分。此例中printf(“癶”?語(yǔ)句后面未寫(xiě)分號(hào),會(huì)提示Statement missing ; in function main。我們根據(jù)此提示來(lái)修改程序。這也是初學(xué)者比較容易犯的錯(cuò)誤。

        3.在不該加分號(hào)的地方加了分號(hào)。

        例:

        int a=3,b=2;

        if(a>b);printf("max=%d ",a);

        此程序本意為當(dāng)a>b時(shí)輸出“max=3”的信息。但由于在if(a>b)后加了分號(hào),因此if語(yǔ)句到此結(jié)束。即當(dāng)(a>b)為真時(shí),執(zhí)行一個(gè)空語(yǔ)句,本來(lái)想a≤b時(shí)不輸出上述信息,但現(xiàn)在printf函數(shù)語(yǔ)句并不從屬于if語(yǔ)句,而是與if語(yǔ)句平行的語(yǔ)句,所以,無(wú)論a是否大于b,都會(huì)輸出“max=3”的信息。因此在if、switch、for、while語(yǔ)句中,不要多加分號(hào)。

        4.在調(diào)用庫(kù)函數(shù)時(shí),沒(méi)有寫(xiě)預(yù)編譯命令。

        例:

        main()

        {charc;

        printf("Please input one character: ");

        c=getchar( );/*輸入1個(gè)字符并賦給ch */

        putchar(c);

        }

        調(diào)試程序時(shí),出現(xiàn)錯(cuò)誤提示:Undefined symbol'_getchar' Undefin

        ed symbol'_putchar'。因?yàn)樵谑褂脦?kù)函數(shù)時(shí),要用預(yù)編譯命令#include將有關(guān)的頭文件包括到用戶源文件中。因此,必須在程序的開(kāi)頭加上預(yù)編譯命令:#include “stdio.h”。

        (二)常見(jiàn)邏輯錯(cuò)誤分析

        1.輸入輸出的數(shù)據(jù)的類型與所用格式說(shuō)明符不一致。

        例:

        main()

        { int x;float y;

        scanf("%f,%d",&x,&y);

        printf("%f%d ",x,y);}

        此段程序中x定義為整型,y定義為實(shí)型。而在輸入輸出x,y時(shí)用的格式說(shuō)明符為%f,%d,這顯然與定義不符。程序運(yùn)行時(shí)并不提示語(yǔ)法錯(cuò)誤,但是不能得出正確結(jié)果。因此,輸入、輸出函數(shù)語(yǔ)句分別應(yīng)改為:scanf("%d,%f",&x,&y); printf("%d%f ",x,y);

        2.復(fù)合語(yǔ)句忘記加花括弧。

        例:

        main()

        { int day,x1,x2=1;

        for(day=9;day>0;day--)

        x1=(x2+1)*2;x2=x1;

        printf(“total=%d ”,x1);

        }

        此程序本意是從第二次循環(huán)開(kāi)始,直到for循環(huán)結(jié)束,這個(gè)過(guò)程中每次循環(huán)時(shí),x2變量的值是上次循環(huán)所得出的x1的值,但實(shí)際執(zhí)行時(shí),x2變量的值并沒(méi)有變化,自始至終都是1,這顯然與原意不符。原因就是:for循環(huán)的循環(huán)體語(yǔ)句應(yīng)該是“x1=(x2+1)*2;x2=x1;”組合而成的復(fù)合語(yǔ)句,而不應(yīng)該只是“x1=(x2+1)*2;”。因此正確的程序是:

        main()

        { int day,x1,x2=1;

        for(day=9;day>0;day--)

        {x1=(x2+1)*2;x2=x1;}

        printf(“total=%d ”,x1);

        }

        3.在使用數(shù)組的時(shí)候,出現(xiàn)數(shù)組下標(biāo)越界的情況。也就是把定義的“元素個(gè)數(shù)”誤認(rèn)為是數(shù)組的最大下標(biāo)值。

        例:

        main()

        {int i, s[6]; printf("input 6 umbers: ");

        for(i=0;i<6;i++)scanf("%d",&s[i]);

        printf("%d",s[6]);

        }

        此程序本意是輸出數(shù)組s中最后一個(gè)元素的值,但是輸出的結(jié)果是個(gè)不確定的值。因?yàn)镃語(yǔ)言規(guī)定,定義時(shí),數(shù)組名后面的方括號(hào)內(nèi)的數(shù)字表示的是數(shù)組的元素個(gè)數(shù),而數(shù)組的下標(biāo)從0開(kāi)始,因此數(shù)組s的元素為s[0]、s[1]、s[2]、s[3]、s[4]、s[5],所以此程序中的數(shù)組元素s[6]是不存在的。

        所以要想輸出數(shù)組s的最后一個(gè)元素,應(yīng)書(shū)寫(xiě)為:printf(“?”?s[5]);

        4.混淆break語(yǔ)句和continue語(yǔ)句的作用。

        例:將100~200之間不能被3整除的數(shù)輸出。

        main()

        {int n;

        for(n=100;n<=200;n++)

        {if (n%3==0)break;

        printf(“%d”,n);}}

        該程序能夠運(yùn)行,輸出的結(jié)果是:100 101,這顯然不是正確結(jié)果。程序運(yùn)行時(shí)當(dāng)遇到能被3整除的數(shù)102時(shí),循環(huán)結(jié)束,而本意是結(jié)束本次循環(huán)。學(xué)習(xí)者要牢記break語(yǔ)句是結(jié)束整個(gè)循環(huán),而continue語(yǔ)句才是結(jié)束本次循環(huán)。所以正確的程序是:

        main()

        {int n;

        for(n=100;n<=200;n++)

        {if (n%3==0) continue;

        printf(“%d”,n);}}

        以上我們通過(guò)實(shí)例,列舉了C語(yǔ)言學(xué)習(xí)者經(jīng)常易犯的一些語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤,并根據(jù)C語(yǔ)言的語(yǔ)法格式和編程規(guī)則對(duì)出現(xiàn)錯(cuò)誤的原因進(jìn)行了分析,同時(shí)給出糾正后的程序。希望本文對(duì)C語(yǔ)言的學(xué)習(xí)者有所幫助,學(xué)習(xí)者在編程時(shí)應(yīng)嚴(yán)格按照C語(yǔ)言語(yǔ)法規(guī)則編輯調(diào)試源程序,在實(shí)踐中提高自己編寫(xiě)程序的能力。

        參考文獻(xiàn):

        [1]田淑清,全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)教程-C語(yǔ)言程序設(shè)計(jì)(2008年版),北京:高等教育出版社,2007年8月.

        [2]徐新愛(ài),C語(yǔ)言的變量剖析[J].電腦開(kāi)發(fā)與應(yīng)用,第20卷第6期.

        [3]譚浩強(qiáng),C語(yǔ)言程序設(shè)計(jì)[M].第2版,北京:清華大學(xué)出版社,2000年.

        猜你喜歡
        分號(hào)語(yǔ)法錯(cuò)誤數(shù)組
        談?wù)劮痔?hào)的用法
        JAVA稀疏矩陣算法
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        漢語(yǔ)負(fù)遷移對(duì)英語(yǔ)寫(xiě)作的影響及啟示
        科技資訊(2016年25期)2016-12-27 10:55:46
        高中英語(yǔ)寫(xiě)作中的語(yǔ)法錯(cuò)誤分析
        青春歲月(2016年22期)2016-12-23 10:59:20
        春之懷古
        高中英語(yǔ)寫(xiě)作錯(cuò)誤分析個(gè)案研究
        尋找勾股數(shù)組的歷程
        風(fēng)度翩翩的分號(hào)
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        亚洲精品视频中文字幕| 国产艳妇av在线出轨| 亚洲一级无码AV毛片久久| 久久熟女少妇一区二区三区 | 久久天堂综合亚洲伊人hd妓女| 丰满人妻被中出中文字幕| 999精品免费视频观看| 日韩亚洲精选一区二区三区 | 国产青榴视频在线观看| 久久精品岛国av一区二区无码| 成年女人片免费视频播放A| 国产三级不卡视频在线观看| 欧美日韩一区二区三区在线观看视频| 中国一 片免费观看| 久久99精品这里精品动漫6| 国产3p一区二区三区精品| 国产av无码国产av毛片| 国产精品香蕉在线观看| 色婷婷一区二区三区四区| 日本最新一区二区三区在线| 国产日产综合| 久久精品无码一区二区三区蜜费| av成人资源在线播放| 麻豆91蜜桃传媒在线观看| 激情偷乱人成视频在线观看| 香蕉国产人午夜视频在线观看| 免费看黄片视频在线观看| 国产区精品一区二区不卡中文| 八戒网站免费观看视频| 亚洲啪啪AⅤ一区二区三区| 亚洲天堂久久午夜福利| 天堂8在线天堂资源bt| 亚洲日韩一区二区一无码| 日韩视频午夜在线观看| 久久精品国产亚洲av果冻传媒| 亚洲不卡中文字幕无码| 国产日韩亚洲中文字幕| 白白在线视频免费观看嘛| a级毛片100部免费看| 人妻无码人妻有码不卡| 亚洲一区二区国产一区|