999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C語言程序設計的常見錯誤分析

2009-04-29 00:00:00高雅俠,鄒海榮
電腦知識與技術 2009年35期

摘要:近年來,C語言不僅為計算機專業工作者使用,而且為廣大計算機應用人員所喜愛和使用。在利用C語言開發應用程序時,由于C語言具有靈活的程序設計風格,語法限制不太嚴格,程序設計自由度大等特點。這就給許多初學C語言的人員造成了許多困難,為了能夠快速找出并改正程序中的錯誤;該文通過對C語言程序設計中常見的錯誤問題進行分析與研究。給出了一些可供參考的實例及解決方法,為學習C語言程序設計的用戶提供方便。

關鍵詞: C語言;常見錯誤;程序調試;實例

中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2009)35-9969-02

Analysis of Common Error Based on C Programming Language

GAO Ya-xia1, ZOU Hai-rong2

(1.Shaanxi Commercial School, Hanzhong 723000, China; 2.Shaanxi Institute Of Technology, Hanzhong 723000, China)

Abstract: In recent years, not only the computer professionals use C language, but also the majority of staff computer applications favorite and use. In the use of C language application development, due to C language has a flexible programming style, grammar constraints are less stringent and program design large degree of freedom and so on. This C language to a number of beginner and causing a number of difficulties, in order to be able to quickly identify and correct errors in the program; this paper, the C language program design issues common mistakes analysis and research. Gives some examples and reference solutions, in order to learn C language program designed users to provide with convenient.

Key words: C Language; common errors; debugging program; example

C語言是在國內外廣泛流行、使用的一種計算機高級程序設計語言。它的主要特點是:概念簡潔、數據類型豐富、表達能力強,運算符多且使用方便靈活。與其它程序設計語言相比較,具有靈活的編程風格,語法限制不太嚴格,程序設計自由度大(例如:一個語句可以采用多種方式,分多行撰寫;對數組下標越界不做檢查;整型、字符型和邏輯型的數據可以通用等)。這就給程序設計人員留下“靈活的余地”,但是由于這個靈活往往給程序調試,尤其對初學C語言的人來說,經常會出一些連自己都不知道錯在哪里的實例??粗绣e的程序,不知該如何進行修改。通過在C語言的教學與研究過程中,分析了一些關于C語言程序設計時容易犯的錯誤實例,提供給學習C語言的同學及相關人員參考。

1 C語言常見錯誤實例與分析

實例1.Printf語句中“控制字符串”部分分寫在不同的行。

例如:main()

{ printf(“* * * * *”\

Very good!\

* * * * * \);}

該程序的目的是為了顯示這樣的結果: * * * * *

Very good!

* * * * *

但程序運行后卻出現錯誤信息:“Unterminated string or character constant in function main”,對上述錯誤,只要在程序第二行、第三行的最后分別加上“\\” 即可得到正確的結果,也就是說printf語句中的“控制字符串”部分分寫在不同的行時加“\\”連接。

實例2. 忽略了“=”與“==”的區別。

在許多高級語言中,用“=”符號作為關系運算符“等于”。如在BASIC程序中可以寫if (m=10) then …,但C語言中,“=”是賦值運算符,“==”是關系運算符。

例如:if (m==10) m=n;

前者是進行比較,m是否和10相等,后者表示如果m和10相等,把n值賦給m。由于習慣問題,初學者往往很容易犯這樣的錯誤。

實例3.定義變量的位置不正確。

例如:#include

main()

{ char ch,filename[10];

scanf(“%s”,filename);

FILE *fp;

fp=fopen(filename,“w”);

ch=getchar();

while(ch!=‘#’)

{ fputc(ch,fp);putchar(ch);ch=getchar();}

fclose(fp);}

程序運行后出現錯信息“Improper use of a typedef symbol in function main”,只要把第六行:FILE *fp;放到第四行前,程序通過。原因是:說明部分要放在其他語句之前。

實例4.將字符常量與字符串常量混淆。

char ch;

ch=\"M\";

在這里就混淆了字符常量與字符串常量,字符常量是由一對單引號括起來的單個字符,而字符串常量是一對雙引號括起來的字符序列。C規定以‘\\0’作字符串結束標志,它是由系統自動加上的,所以字符串“M”實際上包含兩個字符:‘M'和‘\\0',而把它賦給一個字符變量是不正確的。

實例5.輸入變量時忘記加地址運算符“”。

int a,b;

scanf(\"%d%d\",a,b);

這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。“a”指a在內存中的地址?!癰”指b在內存中的地址。

實例6.輸入數據的方式與要求不符。

1) scanf(\"%d%d\",x,y);

輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:

1,5

輸入數據時,在兩個數據之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。

2) scanf(\"%d,%d\",x,y);

C規定:如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數據時應輸入與這些字符相同的字符。下面輸入是合法的:

1,5

此時不用逗號而用空格或其它字符是不對的。如下面輸入不合法:

1 5 1:5

又如:scanf(\"a=%d,b=%d\",a,b);輸入應如以下形式:

a=1,b=5

實例7.輸入字符的要求與格式不一致。

在用“%c”格式輸入字符時,“轉義字符”和“空格字符”都作為有效字符輸入。

scanf(\"%c%c%c\",c1,c2,c3);

例如:輸入O K !

則字符“O”送給c1,空格字符“ ”送給c2,字符“K”送給c3,因為%c只要求讀入一個字符,后面不需要用空格作為兩個字符的間隔。

實例8. 同時定義了形參與函數中的局部變量。

int max(x,y)

int x,y,z;

形參應該在函數體外定義,而局部變量應該在函數體內定義。應改為:

int max(x,y)

int x,y;

{int z;

z=x>y?x:y;

return(z);}

實例9. 誤用變量定義數組。

int n;

scanf(\"%d\",n);

int a[n];

數組名后用方括號括起來的是常量表達式,可以包括常量和符號常量。即C不允許對數組的大小作動態定義。

實例10. 被調用的函數未在主函數中進行聲明。

例如:main()

{ int a,b,*p1,*p2;

Scanf(“%d,%d”,a,b);

p1=a;p2=b;

if(a

printf(“5d,%d\”,*p1,*p2); }

void swap(int *p1,int *p2)

{ int *p;

P=*p1;*p1=*p2;*p2=p; }

程序運行后出現錯誤信息:“Type mismatch in redeclaration of ‘swap’”,只要在程序的第二句int a,b;前加一句:void swap();程序運行通過。也就是說:被調用函數的定義出現在主調函數之后(除了函數的值是整型或字符型的),要在main()函數中對被調用函數進行說明,void型函數也不例外。

2 結論

通過上面這些實例的分析,可以看出,由于C語言的開放式編程風格,讓C語言初學者,在進行C語言程序設計時往往會出現一些微妙的、不易覺察的錯誤。C語言作為一門完善的編程語言,具有它的科學性與嚴謹性。因此,只有在充分掌握和熟練運用C語言的基本概念、語法規范及結構的基礎上,才能真正享受到C語言靈活自如的編程風格的魅力,這也是學習一切科學知識的基本方法。

參考文獻:

[1] 譚浩強.C程序設計[M].北京:清華大學出版社,2008:37-242.

[2] 楊路明.C語言程序設計[M].北京:京郵電大學出版社,2006:20-150.

[3] 劉明,夏清國.C程序設計.導教-導學-導考[M].西安:西北工業大學出版社,2004:27-215.

主站蜘蛛池模板: 亚国产欧美在线人成| 国产欧美日韩在线一区| 国产又爽又黄无遮挡免费观看 | 四虎免费视频网站| 狠狠v日韩v欧美v| 亚洲综合网在线观看| 毛片手机在线看| 欧美一区二区自偷自拍视频| 在线观看国产小视频| 国产精品网拍在线| a色毛片免费视频| 久青草国产高清在线视频| 中文字幕亚洲第一| 自拍偷拍欧美| 国产二级毛片| 亚洲人成网7777777国产| 97人妻精品专区久久久久| 五月丁香伊人啪啪手机免费观看| 萌白酱国产一区二区| 99久久成人国产精品免费| A级毛片无码久久精品免费| 亚洲香蕉久久| 久久天天躁狠狠躁夜夜2020一| 日韩精品一区二区三区大桥未久| 26uuu国产精品视频| 四虎AV麻豆| 成年人久久黄色网站| 日韩精品一区二区深田咏美| 亚洲av无码专区久久蜜芽| 台湾AV国片精品女同性| 亚洲天堂精品视频| 欧美日韩北条麻妃一区二区| 亚洲综合精品第一页| 亚洲欧美日本国产综合在线| 国产视频一区二区在线观看 | 重口调教一区二区视频| 日本不卡视频在线| 欧美一级高清免费a| 午夜色综合| h视频在线观看网站| 高清乱码精品福利在线视频| 五月天综合婷婷| 制服无码网站| 亚洲欧美日韩动漫| 99视频精品在线观看| 一级片一区| 69视频国产| 国产精品永久不卡免费视频| 国产丰满大乳无码免费播放| 成人年鲁鲁在线观看视频| 天天干伊人| 99久久精彩视频| 国内精品久久人妻无码大片高| 亚洲人成人无码www| 亚洲二区视频| 国产免费黄| 精品国产网| 国产二级毛片| 区国产精品搜索视频| 国产精品99一区不卡| 国产噜噜在线视频观看| 日韩毛片视频| 无码免费的亚洲视频| 亚洲欧美一级一级a| 天堂成人在线| 日本黄网在线观看| 国产人成乱码视频免费观看| 丁香亚洲综合五月天婷婷| 免费啪啪网址| jizz在线观看| 欧美综合在线观看| 国产精品无码影视久久久久久久| 国产精品任我爽爆在线播放6080| 在线国产资源| 人妻丰满熟妇av五码区| 99国产在线视频| 精品久久高清| 久久久精品国产SM调教网站| 亚洲AV无码久久天堂| 国产精品片在线观看手机版| 国产亚洲精品91| WWW丫丫国产成人精品|