導航:首頁 > 編程語言 > c語言99個常見編程錯誤

c語言99個常見編程錯誤

發布時間:2022-10-20 14:39:56

『壹』 C語言編程錯誤

#include<time.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#defineNUM200
voidinput();
voidrecord();
voidfind();
voidmodify();
intnow_no=0;
structClient
{
charname[20];
intsex;//性別,0表示男,1表示女
intage;
charID_card[20];
intyear;
intmonth;
intdate;
intRoom_ID;
intTel;
intPrice;
charSign[10];
}
Room[NUM];
intmain()
{
intas;
start:printf(" 歡迎使用客房服務系統 ");
do
{
printf(" 1.錄入賓客信息 2.客房數,某一天的客房數的統計 3.查詢賓客信息 x4.修改賓客信息 5.退出 ");
printf(" 選擇功能選項");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
//case1:system("cls");input();break;
//case2:system("cls");record;break;
//case3:system("cls");find;break;
//case4:system("cls");modify;break;
//case5:system("exit");exit(0);
default:system("cls");gotostart;
}

}while(1);
}

『貳』 C語言編程都有哪些常見錯誤呢

1,輸入錯誤,這是很多新手長患的一個錯誤。
2,語法錯誤,由於很多新手對語言的語法不是很熟悉,所以難免會出現很多錯誤。這就要就要多練,只有這樣才能熟悉語法,也就可以避免錯誤了。
3,對要解決的問題分析不夠清晰,在寫語句的時候會發現得不到想要的結果,這就要求在寫程序時注重對問題的分析
以上這三點就是寫程序時最長患的錯誤了,希望你可以努力

『叄』 C語言程序常見的錯誤有哪些

/..com/question/186344584.html>
1.書寫標識符時,忽略了大小寫字母的區別。
main()
{
int a=5;
printf("%d",A);
}
編譯程序把a和A認為是兩個不同的變數名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。
2.忽略了變數的類型,進行了不合法的運算。
main()
{
float a,b;
printf("%d",a%b);
}
%是求余運算,得到a/b的整余數。整型變數a和b可以進行求余運算,而實型變數則不允許進行「求余」運算。
3.將字元常量與字元串常量混淆。
char c;
c="a";
在這里就混淆了字元常量與字元串常量,字元常量是由一對單引號括起來的單個字元,字元串常量是一對雙引號括起來的字元序列。C規定以「\」作字元串結束標志,它是由系統自動加上的,所以字元串「a」實際上包含兩個字元:『a'和『\',而把它賦給一個字元變數是不行的。
4.忽略了「=」與「==」的區別。
在許多高級語言中,用「=」符號作為關系運算符「等於」。如在BASIC程序中可以寫
if (a=3) then …
但C語言中,「=」是賦值運算符,「==」是關系運算符。如:
if (a==3) a=b;
前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由於習慣問題,初學者往往會犯這樣的錯誤。
5.忘記加分號。
分號是C語句中不可缺少的一部分,語句末尾必須有分號。
a=1
b=2
編譯時,編譯程序在「a=1」後面沒發現分號,就把下一行「b=2」也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。
{ z=x+y;
t=z/100;
printf("%f",t);
}
對於復合語句來說,最後一個語句中最後的分號不能忽略不寫(這是和PASCAL不同的)。
6.多加分號。
對於一個復合語句,如:
{ z=x+y;
t=z/100;
printf("%f",t);
};
復合語句的花括弧後不應再加分號,否則將會畫蛇添足。
又如:
if (a%3==0);
I++;
本是如果3整除a,則I加1。但由於if (a%3==0)後多加了分號,則if語句到此結束,程序將執行I++語句,不論3是否整除a,I都將自動加1。
再如:
for (I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先後輸入5個數,每輸入一個數後再將它輸出。由於for()後多加了一個分號,使循環體變為空語句,此時只能輸入一個數並輸出它。
7.輸入變數時忘記加地址運算符「&」。
int a,b;
scanf("%d%d",a,b);
這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。「&a」指a在內存中的地址。
8.輸入數據的方式與要求不符。①scanf("%d%d",&a,&b);
輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:
3,4
輸入數據時,在兩個數據之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。
②scanf("%d,%d",&a,&b);
C規定:如果在「格式控制」字元串中除了格式說明以外還有其它字元,則在輸入數據時應輸入與這些字元相同的字元。下面輸入是合法的:
3,4
此時不用逗號而用空格或其它字元是不對的。
3 4 3:4
又如:
scanf("a=%d,b=%d",&a,&b);
輸入應如以下形式:
a=3,b=4
9.輸入字元的格式與要求不一致。
在用「%c」格式輸入字元時,「空格字元」和「轉義字元」都作為有效字元輸入。
scanf("%c%c%c",&c1,&c2,&c3);
如輸入a b c
字元「a」送給c1,字元「 」送給c2,字元「b」送給c3,因為%c只要求讀入一個字元,後面不需要用空格作為兩個字元的間隔。
10.輸入輸出的數據類型與所用格式說明符不一致。
例如,a已定義為整型,b定義為實型
a=3;b=4.5;
printf("%f%d\n",a,b);
編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注意。

『肆』 在C語言中,計算機程序通常有哪幾種錯誤

1、系統錯誤:這是指程序沒有語法錯誤和邏輯錯誤,但程序的正常運行依賴於某些外部條件的存在,如果這些外部條件缺失,則程序將不能運行。

2、語法錯誤:這是指程序中含有不符合語法規定的語句,例如關鍵字或符號書寫錯誤(將printf寫成print、將數組元素引用寫成a(2)等)、使用了未定義的變數、括弧不配對等。

3、邏輯錯誤:這是指程序中沒有語法錯誤,可以通過編譯、連接生成可執行程序,但程序運行的結果與預期不相符的錯誤。

(4)c語言99個常見編程錯誤擴展閱讀:

C語言程序的特點

1、採用結構化的控制語句,是完全模塊化和結構化的語言。

2、數據類型豐富,具有現代語言的各種數據結構

3、語法限制不太嚴格,程序設計自由度大,同時也意味著容錯性差。

4、允許直接訪問屋裡內存,能進行位操作,能實現匯編語言的大部分功能,可直接對硬體進行操作,兼有高級和低級語言的特點。

5、目標代碼質量高,程序執行效率高(比匯編程序生成的目標代碼低10%-20%)

6、允許在編譯之前使用預處理命令,提高編程效率。

7、以內存使用為核心。

8、C語言程序是由函數構成的。一個源程序不論有多少個文件組成,包含多少個函數,都有且一個 main 函數,及主函數。一個程序總是從 main 函數開始執行,而不論 main 函數在程序什麼位置,程序的執行也結束於主函數,其他函數通過函數調用被執行。

9、函數都要有類型說明,放在函數名前,如 void 表示空類型,沒有返回值。

10、函數體內語句一般按四大功能順次排列,即首先對變數與函數做聲明 ——>變數賦初值 ——>數據計算與處理 ——>輸出結果。

『伍』 大神求幫助!!c語言編程錯誤

#defineIRLEDRB4
voidEmit_Carrier_Nx600(INT8U,N)//(INT8U,N)是不是多了逗號?
{
INT8Ui,j=N*50;
for(i=0;i<j;i++)
{
_delay_us(12);
IRLED=~IRLED;
}
}
voidEmit_D12(INT16U,D12)//逗號??
{
Emit_carrier_Nx600(4);
IRLED=0;
_delay_us600(1);
for(INT16Ui=0x0001;i<0x1000;i<<=1)//不知道你的編譯器支不支持在這里定義變數i//一般都放在開頭吧
{
if(D12&i)Emit_carrier_Nx600(2);
else
Emir_Carrier_Nx600(1);

IRLED=0;

_delay_us(600);
}
}

『陸』 作為C語言初學者,經常遇見哪些語法錯誤

這里常見會見到一些同學經常犯這種錯誤,scanf(「...」, 參數1, 參數2, ...);其中參數輸入是指針類型,所以示例中需要b需要取地址,為什麼char a[100]不用取地址呢?因為char a[100]可以看做指針,只需要把a的首地址寫入即可。
C語言常見語法錯誤

跟一些同學說了一下,他彷彿又有點明白了。然而他又說怎麼又是有錯誤的,我明明按照你的要求參數寫入時指針類型。那同學還特意地指出程序裡面說:我申請了一個結構體指d,填入的「d->b」參數不是指針嗎?聽到他這樣說,有問題當然要糾正啦!語重心長地對他說,大哥!你認真看一下,d->b應該是int類型,而不是指針類型吧?他聽了好像不怎麼明白,我就舉了一個例子,結構體好像是一個容器,容器裡面存放著類型變數,而通過結構體容器找裡面的內容是比如找的是結構體成員b,那b的類型是int型,具體怎麼找用d->b找到b變數,那d->b是什麼類型呢?當然是d結構體所指向與b的int類型。
C語言常見語法錯誤

這一句沒語法錯誤,卻是最多初學者這樣去寫的,他們就會說,為什麼我輸入一個數字後按回車怎麼沒反應的呢?咋一看程序才發現多了一個」\n」,具體原理是這樣的,當你程序是scanf(「%d」, &i)輸入數字後回車是可以輸入的,但是變成scanf(「%d\n」, &i);時候就需要回車兩次,因為\n需要格式化輸入。
C語言常見語法錯誤

頭文件寫錯也是很多人犯的,比如卻後綴『.h』,系統頭文件需要使用<>括住,而自定義頭文件使用」 」,在linux C裡面<>和」 」還是有區別的。

正確寫法是:

#include <stdio.h>

#include <string.h>

#include 「func.h」
C語言常見語法錯誤

這里混淆了字元常量與字元串常量,字元常量是使用單引號括起來的單字元,字元串常量才是使用雙引號,正確寫法是char c = 『a』;或者char *c = 「a」;
C語言常見語法錯誤

這里也是很多初學者犯的錯誤,忽略『=』和『==』的區別。在C語言中『=』是賦值運算符,『==』是關系運算符,顯然這里做的是i是否等於0的判斷,這里應該改成if(i == 0) i++;
C語言常見語法錯誤

這里的問題也是初學者犯得非常多的錯誤,不加分號或多加分號。很多學生都會問,我看了幾次程序,確定沒什麼問題的啦!還是對著你的示常式序敲的,不可能錯的。認真地幫他看了一下,原來都是少加分號和多加分號了。int i = 0; 需要加分號,而if(i == 0)和for循環後面不需要加分號,因為如果加了分號,if語句就失去判斷的作用而for就會失去循環的作用。因為『;』代表的是結束。
C語言常見語法錯誤

還有一些格式上的錯誤、關鍵詞寫不完整、區分大小寫。正確應該是scanf(「%d%d%d」, a, b, c);
C語言常見語法錯誤

總結一下,學習嵌入式編程特別是在C語言上要學會如何找錯誤,一般有錯誤都是在編譯輸出終端裡面找,會提示那一行出錯或者錯的是什麼編譯器都會大概告訴你,學會找出問題所在再去解決它才是我們真正需要的。

『柒』 C語言編程問題中的錯誤

b為0,如2/0絕對會錯的,對吧
那就是scanf函數的問題了,這是個危險的函數,scanf("%d,%d",&a,&b);這樣用會出錯,換成

scanf(「%d」,&a),scanf(「%d」,&b);
哦,原來試這樣子,n=a%b;賦值的問題,=優先順序比%高,所以出問題

『捌』 C語言編程時 都有什麼樣的錯誤提示

Ambiguous operators need parentheses
不明確的運算,需要用括弧括起來

Ambiguous symbol 'xxx'
不明確的符號

Argument list syntax error
參數表語法錯誤

Array bounds missing
丟失數組界限符

Array size too large
數組尺寸太大

Bad character in parameters
參數中有不適當的字元

Bad file name format in include directive
包含命令中文件名格式不正確

Bad ifdef directive syntax
編譯預處理ifdef有語法錯誤

Bad ifndef directive syntax
編譯預處理ifndef有語法錯誤

Bad undef directive syntax
編譯預處理undef有語法錯誤

Call of non-function
調用未定義的函數

Call to function with no prototype
調用函數時沒有函數的說明

Cannot modify a const object
不允許修改常量對象

Case outside of switch
Case 出現在 switch 之外

Case statement missing
漏掉了 Case 語句

Case syntax error
Case 語法錯誤

Case outside of switch
Case 出現在 switch 之外

Case statement missing
漏掉了 Case 語句

Case syntax error
Case 語法錯誤

Code has no effect
代碼不可能執行到

Compound statement missing }
復合語句漏掉了"}"

Conflicting type modifiers
不明確的類型說明符

Constant expression required
要求常量表達式

Constant out of range in comparison
在比較中常量超出范圍

Conversion may lose significant digits
轉換時會掉失有意義的數字

Conversion of near pointer not allowed
不允許轉換返指針

Could not find file 'xxx'
找不到xxx文件

Declaration missing ;
說明缺少分號";"

Declaration syntax error
說明中出現語法錯誤

Default outside of switch
default出現在switch語句之外

Define directive needs an identifier
定義編譯預處理需要標識符

Division by zero
用零作除數

Do statement must have while
do-while語句中缺少while部分

Enum syntax error
枚舉類型語法錯誤

Enumeration constant syntax error
枚舉常數語法錯誤

Error directive: xxx
錯誤的編譯預處理命令

Error writing output file
寫輸出文件錯誤

Expression syntax error
表達式語法錯誤

Extra parameter in call
調用時出現多餘錯誤

File name too long
文件名太長

Function call missing )
函數調用缺少右括弧

Function definition out of place
函數定義位置錯誤

Function should return a value
函數返回一個值

Goto statement missing label
goto 語句沒有標號

Hexadecimal or octal constant too large
16進制或8進制常數太大

Illegal character 'x'
非法字 x

Illegal initialization
非法的初始化

Illegal octal digit
非法的8進制數字

Illegal pointer subtraction
非法的指針相減

Illegal structure operation
非法的結構體操作

Illegal use of pointer
指針使用非法

Improper use of a typedef symbol
類型符號定義使用不恰當

In-line assembly not allowed
不允許使用行間匯編

Incompatible storage class
存儲類別不相容

Incompatible type conversion
不相容的類型轉換

Incorrect number format
錯誤的數據格式

Incorrect use of default
default使用不正確

Invalid indirection
無效的間接運算

Invalid pointer addition
指針相加無效

Irrecible expression tree
無法執行的表達式運算

Lvalur required
需要邏輯值(0或非0值)

Macro argument syntax error
宏參數語法錯誤

Macro expansion too long
宏的擴展以後太長

Mismatched number of parameters in definition
定義中參數個數不匹配

Misplaced break
此處不應出現break語句

Misplaced continue
此處不應出現continue語句

Misplaced decimal point
此處不應出現小數點

Misplaced elif directive
此處不應出現編譯預處理elif

Misplaced else
此處不應出現else

Misplaced else directive
此處不應出現編譯預處理 else

Misplaced endif directive
此處不應出現編譯預處理 endif

Must be addressable
必須是可以編址的

Must take address of memory location
必須存儲定位的地址

No declaration for function 'xxx'
沒有函數 xxx 的說明

No stack
缺少堆棧

No type information
沒有類型信息

Non-portable pointer assignment
不可移動的指針(地址常數)賦值

Non-portable pointer comparison
不可移動的指針(地址常數)比較

Non-portable pointer conversion
不可移動的指針(地址常數)轉換

Not a valid expression format type
不合法的表達式格式

Not an allowed type
不允許使用的類型

Numeric constant too large
數值常數太大

Out of memory
內存不夠用

Parameter 'xxx' is never used
參數 xxx 沒有用到

Pointer required on left side of ->
-> 符號的左邊必須是指針

Possible use of 'xxx' before definition
在定義之前就使用了 xxx(警告)

Possibly incorrect assignment
賦值可能不正確

Redefinition of 'xxx' is not identical
xxx 的兩次定義不一致

Register allocation failure
寄存器定址失敗

Repeat count needs an lvalue
重復計數需要邏輯值

Size of structure or array not known
結構體或數組的大小不確定

Statement missing ;
語句後缺少";"

Structure or union syntax error
結構體或聯合體語法錯誤

Structure size too large
結構體的尺寸太大

Subscripting missing ]
下標缺少右方括弧

Superfluous &with function or array
函數或數組中有多餘的"&"

Suspicious pointer conversion
可疑的指針轉換

Symbol limit exceeded
符號超限

Too few parameters in call
函數調用時的實參少於函數的參數

Too many error or warning messages
錯誤或警告信息太多

Too much auto memory in function
函數中用到的局部存儲太多

Too much global data defined in file
文件中全局數據太多

Too consecutive dots
兩個連續的句點

Type mismatch in parameter xxx
參數xxx類型不匹配

Type mismatch in redeclaration of 'xxx'
xxx 重定義時的類型不匹配

Unable to create output file 'xxx'
無法建立輸出文件 xxx

Unable to open include file 'xxx'
無法打開被包容的文件 xxx

Bit field too large
位欄位太長

Unable to open input file 'xxx'
無法打開輸入文件 xxx

Undefined label 'xxx'
沒有定義的標號 xxx

Undefined structure 'xxx'
沒有定義的結構 xxx

Undefined symbol 'xxx'
沒有定義的符號 xxx

Unexpected end of file in comment started on line xxx
從 xxx 行開始的註解尚未結束,文件不能結束

Unexpected end of file in conditional started on line xxx
從 xxx 行開始的條件語句尚未結束,文件不能結束

Unknown assembler instruction
未知的匯編結構

Unknown option
未知的操作

Unknown preprocessor directive: 'xxx'
不認識的預處理命令 xxx

Unreachable code
無法到達的代碼

Unterminated string or character constant
字元串缺少引號

User break
用戶強行中斷了程序

Void functions may not return a value
void 類型的函數不應有返回值

Wrong number off arguments
調用函數時參數數目錯

'xxx' not an argument
xxx 不是參數

'xxx' not part of structure
xxx 不是結構體的一部分

xxx statement missing (
xxx 語句缺少左括弧

xxx statement missing )
xxx 語句缺少右括弧

xxx statement missing ;
xxx 語句缺少分號

'xxx' declared but never used
說明了 xxx ,但沒有使用

'xxx' is assigned a value which is never used
給 xxx 賦了值,但未用過

Zero length structure
結構體的長度為零

『玖』 關於C語言編程時的錯誤

我已經測試了,主要是語法錯誤。在VC++6.0中編譯階段就能得到錯誤信息。要保證代碼正確性,首先代碼格式要良好,這樣才容易找出錯誤。
{a[0].score=a[2].score;j=2;}};這句最後的};是多餘的。
還有一個邏輯問題。學生姓名是字元串類型,最後一句輸出時你卻用%c,顯然應當用%s,並且將a[j].name[20]修改為a[j].name
最後一個建議:最後一句輸出也加上\n

『拾』 C語言的錯誤有哪幾類詳細點

C語言常見錯誤小結

C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查並不象其它高級語言那麼嚴格,這就給編程人員留下「靈活的餘地」,但還是由於這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經常會出一些連自己都不知道錯在哪裡的錯誤。看著有錯的程序,不知該如何改起,本人通過對C的學習,積累了一些C編程時常犯的錯誤,寫給各位學員以供參考。

1.書寫標識符時,忽略了大小寫字母的區別。main(){ int a=5;
printf("%d",A);}編譯程序把a和A認為是兩個不同的變數名,而顯示出錯信息。C認為大寫母
和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。

2.忽略了變數的類型,進行了不合法的運算。main(){float a,b; printf("%d",a%b);}%是求余運算,得到a/b的整余數。整型變數a和b可以進行求余運算,而實型變數則不允許進行「求余」運算。

3.將字元常量與字元串常量混淆。char c;c="a";在這里就混淆了字元常量與字元串常量,字元常量是由一對單引號括起來的單個字元,字元串常量是一對雙引號括起來的字元序列。C規定以「\」作字元串結束標志,它是由系統自動加上的,所以字元串「a」實際上包含兩個字元:『a'和『\',而把它賦給一個字元變數是不行的。

4.忽略了「=」與「==」的區別。在許多高級語言中,用「=」符號作為關系運算符「等於」。如在BASIC程序中
可以寫if (a=3) then …但C語言中,「=」是賦值運算符,「==」是關系運算符。如:if (a==3) a=b;前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由於習慣問題,初學者往往會犯這樣的錯誤。

5.忘記加分號。分號是C語句中不可缺少的一部分,語句末尾必須有分號。a=1b=2編譯時,編譯程序在「a=1」後面沒發現分號,就把下一行「b=2」也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。{ z=x+y;t=z/100;printf("%f",t);}對於復合語句來說,最後一個語句中最後的分號不能忽略不寫(這是和PASCAL不同的)。

6.多加分號。對於一個復合語句,如:{ z=x+y;t=z/100;printf("%f",t);};復合語句的花括弧後不應再加分號,否則將會畫蛇添足。又如:if (a%3==0);I++;本是如果3整除a,則I加1。但由於if (a%3==0)後多加了分號,則if語句到此結束,程序將執行I++語句,不論3是否整除a,I都將自動加1。再如:for (I=0;I<5;I++);{scanf("%d",&x);printf("%d",x);}本意是先後輸入5個數,每輸入一個數後再將它輸出。由於for()後多加了一個分號,使循環體變為空語句,此時只能輸入一個數並輸出它。
7.輸入變數時忘記加地址運算符「&」。int a,b;scanf("%d%d",a,b);
這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。「&a」指a在內存中的地址。

8.輸入數據的方式與要求不符。①scanf("%d%d",&a,&b);輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:3,4�輸入數據時,在兩個數據之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。②scanf("%d,%d",&a,&b);C規定:如果在「格式控制」字元串中除了格式說明以外還有其它字元,則在輸入數據時應輸入與這些字元相同的字元。下面輸入是合法的:3,4�此時不用逗號而用空格或其它字元是不對的。3 4� 3:4�又如:scanf("a=%d,b=%d",&a,&b);輸入應如以下形式:a=3,b=4�
9.輸入字元的格式與要求不一致。在用「%c」格式輸入字元時,「空格字元」和「轉義字元」都作為有效字元輸入。scanf("%c%c%c",&c1,&c2,&c3);如輸入a b c�字元「a」送給c1,字元「 」送給c2,字元「b」送給c3,因為%c只要求讀入一個字元,後面不需要用空格作為兩個字元的間隔。

10.輸入輸出的數據類型與所用格式說明符不一致。例如,a已定義為整型,b定義為實型a=3;b=4.5;printf("%f%d\n",a,b);編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注意。

11.輸入數據時,企圖規定精度。scanf("%7.2f",&a);這樣做是不合法的,輸入數據時不能規定精度。

12.switch語句中漏寫break語句。例如:根據考試成績的等級列印出百分制數段。switch(grade){ case 'A':printf("85~100\n");case 'B':printf("70~84\n");case 'C':printf("60~69\n");case 'D':printf("<60\n");default:printf("error\n");由於漏寫了break語句,case只起標號的作用,而不起判斷作用。因此,當grade值為A時,printf函數在執行完第一個語句後接著執行第二、三、四、五個printf函數語句。正確寫法應在每個分支後再加上「break;」。例如case 'A':printf("85~100\n");break;

13.忽視了while和do-while語句在細節上的區別。(1)main(){int a=0,I;scanf("%d",&I);while(I<=10){a=a+I;I++;}printf("%d",a);}(2)main(){int a=0,I;scanf("%d",&I);do{a=a+I;I++;}while(I<=10);printf("%d",a);}可以看到,當輸入I的值小於或等於10時,二者得到的結果相同。而當I>10時,二者結果就不同了。因為while循環是先判斷後執行,而do-while循環是先執行後判斷。對於大於10的數while循環一次也不執行循環體,而do-while語句則要執行一次循環體。

14.定義數組時誤用變數。int n;
scanf("%d",&n);int a[n];數組名後用方括弧括起來的是常量表達式,可以包括常量和符號常量。即C不允許對數組的大小作動態定義。
15.在定義數組時,將定義的「元素個數」誤認為是可使的最大下標值。main(){static int a[10]={1,2,3,4,5,6,7,8,9,10};printf("%d",a[10]);}C語言規定:定義時用a[10],表示a數組有10個元素。其下標值由0開始,所以數組元素a[10]是不存在的。
16.初始化數組時,未使用靜態存儲。int a[3]={0,1,2};這樣初始化數組是不對的。C語言規定只有靜態存儲(static)數組和外部存儲(exterm)數組才能初始化。應改為:static int a[3]={0,1,2};17.在不應加地址運算符&的位置加了地址運算符。
scanf("%s",&str);C語言編譯系統對數組名的處理是:數組名代表該數組的起始地址,且scanf函數中的輸入項是字元數組名,不必要再加地址符&。應改為:scanf("%s",str);18.同時定義了形參和函數中的局部變數。int max(x,y)int x,y,z;{z=x>y?x:y;return(z);}形參應該在函數體外定義,而局部變數應該在函數體內定義。應改為:int max(x,y)int x,y;{int z;z=x>y?x:y;return(z);}

閱讀全文

與c語言99個常見編程錯誤相關的資料

熱點內容
部隊抗洪搶險命令範文 瀏覽:884
歐姆龍plc編程軟體使用教程 瀏覽:590
ai文件pdf 瀏覽:909
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:654
王者程序員都有誰 瀏覽:76
給牛換腳掌解壓 瀏覽:387
圍棋有多少種演算法 瀏覽:602
unity資源包在哪個文件夾 瀏覽:704
阿里雲伺服器遠程鏈接不成功 瀏覽:482
文件系統pdf 瀏覽:766
原神安卓區服什麼意思 瀏覽:37
貝殼app怎麼線上發布 瀏覽:159
如何挑選安卓系統機頂盒 瀏覽:54
安卓快充使用有什麼注意事項 瀏覽:909
黑馬程序員的雲計算網課 瀏覽:948