版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
易錯點C語言中易犯的錯誤對初學(xué)C語言的人來說,經(jīng)常會出一些連自己都不知道錯在哪里的錯誤.看著有錯的程序,不知該如何改起,一些C編程時常犯的錯誤,寫給各位學(xué)員以供參考.
****************************************************************************************
1.書寫標(biāo)識符時,忽略了大小寫字母的區(qū)別.
main()
{
inta=5;
printf("%d",A);
}
編譯程序把a和A認為是兩個不同的變量名,而顯示出錯信息.
C認為大寫字母和小寫字母是兩個不同的字符.習(xí)慣上,符號常量
名用大寫,變量名用小寫表示,以增加可讀性.
****************************************************************************************
2.忽略了變量的類型,進行了不合法的運算.
main()
{
floata,b;
printf("%d",a%b);
}
%是求余運算,得到a/b的整余數(shù).整型變量a和b可以進行求余
運算,而實型變量則不允許進行"求余"運算.
****************************************************************************************
3.將字符常量與字符串常量混淆.
charc;
c="a";
在這里就混淆了字符常量與字符串常量,字符常量是由一對單
引號括起來的單個字符,字符串常量是一對雙引號括起來的字符序
列.C規(guī)定以"\"作字符串結(jié)束標(biāo)志,它是由系統(tǒng)自動加上的,所
以字符串"a"實際上包含兩個字符:'a'和'\',而把它賦給一
個字符變量是不行的.
****************************************************************************************
4.忽略了"="與"=="的區(qū)別.
在許多高級語言中,用"="符號作為關(guān)系運算符"等于".
如在BASIC程序中可以寫
if(a=3)then…
但C語言中,"="是賦值運算符,"=="是關(guān)系運算符.如:
if(a==3)a=b;
前者是進行比較,a是否和3相等,后者表示如果a和3相等,把
b值賦給a.由于習(xí)慣問題,初學(xué)者往往會犯這樣的錯誤.
****************************************************************************************
5.忘記加分號.
分號是C語句中不可缺少的一部分,語句末尾必須有分號.
a=1
b=2
編譯時,編譯程序在"a=1"后面沒發(fā)現(xiàn)分號,就把下一行"b
=2"也作為上一行語句的一部分,這就會出現(xiàn)語法錯誤.改錯時,
有時在被指出有錯的一行中未發(fā)現(xiàn)錯誤,就需要看一下上一行是否
漏掉了分號.
{
z=x+y;
t=z/100;
printf("%f",t);
}
對于復(fù)合語句來說,最后一個語句中最后的分號不能忽略不寫
****************************************************************************************
6.多加分號.
對于一個復(fù)合語句,如:
{
z=x+y;
t=z/100;
printf("%f",t);
};
復(fù)合語句的花括號后不應(yīng)再加分號,否則將會畫蛇添足.
又如:
if(a%3==0);
I++;
本是如果3整除a,則I加1.但由于if(a%3==0)后多加了分號
,則if語句到此結(jié)束,程序?qū)?zhí)行I++語句,不論3是否整除a,I都
將自動加1.
再如:
for(I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先后輸入5個數(shù),每輸入一個數(shù)后再將它輸出.由于for
()后多加了一個分號,使循環(huán)體變?yōu)榭照Z句,此時只能輸入一個數(shù)
并輸出它.
****************************************************************************************
7.輸入變量時忘記加地址運算符"&".
inta,b;
scanf("%d%d",a,b);
這是不合法的.Scanf函數(shù)的作用是:
intx,y;
{intz;
z=x>y?x:y;
return(z);
}試題一一、單項選擇題(共30分,每題1分)1.下列不正確的轉(zhuǎn)義字符是A.\\
B.\‘
C.074
D.\02.不是C語言提供的合法關(guān)鍵字是A.switch
B.cher
C.case
D.default3.正確的標(biāo)識符是(
)A.?a
B.a=2
C.a.3
D.a_34.下列字符中屬于鍵盤符號的是A.\
B.\n
C.\t
D.\b.下列數(shù)據(jù)中屬于“字符串常量”的A.ABC
B.“ABC”
C.‘ABC’
D.‘A’6.char型常量在內(nèi)存中存放的是A.ASCII碼
B.BCD碼
C.內(nèi)碼值
D.十進制代碼值7.設(shè)a為5,執(zhí)行下列語句后,b的值不為2的是(
)A.b=a/2
B.b=6-(——a)
C.b=a%2
D.b=a>3?2:28.在以下一組運算符中,優(yōu)先級最高的運算符是(
)A.<=
B.=
C.%
D.&&9.設(shè)整型變量i的值為3,則計算表達式i——i后表達式的值是()A.0
B.1
C.
2
D.表達式出錯10.設(shè)整型變量a,b,c均為2,表達式a+++b+++c++的結(jié)果是(
)A.6
B.9
C.8
D.表達式出錯11.若已定義x和y為double類型,則表達式x=1,y=x+3/2的值是(
)A.1
B.2
C.2.0
D.2.512.設(shè)a=1,b=2,c=3,d=4,則表達式:a<b?a:c<d?a:d的結(jié)果是(
)A.4
B.3
C.2
D.113.設(shè)a為整型變量,不能正確表達數(shù)學(xué)關(guān)系:10<a<15的C語言表達式是()A.10<a<15
B.a==11||a==12||a==13||a==14C.a>10&&a<15
D.?。╝<=10)&&?。╝>=15)14.若有以下定義:chara、intb、floatc、doubled,則表達式a*b+d-c值的類型為()A.float
B.int
C.char
D.double15.表達式“10!=9”的值是(
)A.true
B.非零值
C.0
D.116.循環(huán)語句for(x=0,y=0;(y!=123)||(x<4);x++);的循環(huán)執(zhí)行(
)A.無限次
B.不確定次
C.4次
D.3次17.在C語言中,下列說法中正確的是(
)A.不能使用“dowhile”的循環(huán)B.“dowhile”的循環(huán)必須使用break語句退出循環(huán)C.“dowhile”的循環(huán)中,當(dāng)條件為非0時將結(jié)束循環(huán)D.“dowhile”的循環(huán)中,當(dāng)條件為0時將結(jié)束循環(huán)。18.設(shè)a,b為字符型變量,執(zhí)行scanf(“a=%c,b=%c”,&a,&b)后使a為‘A’,b為‘B’,從鍵盤上的正確輸入是(
)A.‘A’‘B’
B.‘A’,‘B’
C.A=A,B=B
D.a=A,b=B19.設(shè)i,j,k均為int型變量,執(zhí)行完下面的for循環(huán)后,k的值為(
)for(i=0,j=10;i<=j;i++,j——)k=i+j;A.10
B.9
C.8
D.720.設(shè)有定義:chars[12]={“string”};則printf(“%d\n”,strlen(s));的輸出是(
)A.6
B.7
C.11
D.1221.合法的數(shù)組定義是()A.inta[]={“string”};
B.inta[5]={0,1,2,3,4,5};C.chara={“string”};
D.chara[]={0,1,2,3,4,5}22.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()A.將字符串str2復(fù)制到字符串str1中后再將字符串str3連接到字符串str1之后B.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后C.將字符串str1復(fù)制到字符串str2中后再復(fù)制到字符串str3之后D.將字符串str2連接到字符串str1中后再將字符串str1復(fù)制到字符串str3中23.設(shè)有如下定義,則正確的敘述為(
)char
x[]={“abcdefg”};char
y[]={‘a(chǎn)’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’};A.數(shù)組x和數(shù)組y等價
B.數(shù)組x和數(shù)組y的長度相同C.數(shù)組x的長度大于數(shù)組y的長度
D.數(shù)組x的長度小于數(shù)組y的長度24.設(shè)有單精度變量f,其值為13.8.執(zhí)行語句“n=((int)f)%3;”后,n的值是()A.4
B.1
C.4.333333
D.4.625.執(zhí)行語句“f=(3.0,4.0,5.0),(2.0,1.0,0.0);”后,單精度變量f的值是(
)A.3.0
B.5.0
C.2.0
D.0.026.設(shè)a、b均為整型變量,下列表達式中不是賦值表達式的是(
)A.a=3,4,5
B.a=3*2
C.a=a&&b
D.a=b=427.表達式“1?(0?3:2):(10?1:0)”的值為(
)A.3
B.2
C.1
D.028.sizeof(double)的結(jié)果值是(
)A.8
B.4
C.2
D.出錯29.指出下面正確的輸入語句是(
)A.scanf(“a=b=%d”,&a,&b);
B.scanf(“a=%d,b=%f”,&m,&f);C.scanf(“%3c”,c);
D.scanf(“%5.2f,&f);30.若有以下定義和語句,且0<=i<5,則(
)是對數(shù)組元素地址的正確表示inta[]={1,2,3,4,5},*p,i;p=a;A.&(a+i)
B.&p
C.a++
D.&p[i]二、填空(20分,每空1分)1.在內(nèi)存中存儲“A”要占用(
)個字節(jié),存儲‘A’要占用(
)字節(jié)。2.符號常量的定義方法是(
)。3.能表述“20<x<30或x<-100”的C語言表達式是(
)。4.結(jié)構(gòu)化程序設(shè)計方法規(guī)定程序或程序段的結(jié)構(gòu)有三種:順序結(jié)構(gòu)、(
)和(
)。5.C語言共提供了三種用于實現(xiàn)循環(huán)結(jié)構(gòu)的流程控制語句,它們是(
)、(
)和(
)。6.若在程序中用到“putchar”,應(yīng)在程序開頭寫上包含命令(
),若在程序中用到“strlen()”函數(shù)時,應(yīng)在程序開頭寫上包含命令(
)。7.設(shè)有定義語句“staticinta[3][4]={{1},{2},{3}}”,則a[1][1]值為(
),a[2][1]的值為(
)。8.“*”稱為(
)運算符,“&”稱為(
)運算符。9.賦值表達式和賦值語句的區(qū)別在于有無(
)號。10.用{}把一些語句括起來稱為(
)語句11.設(shè)a=12、b=24、c=36,對于“scanf(”a=%d,b=%d,c=%d“,&a,&b,&c);”,輸入形式應(yīng)為(
)12.表達式“sqrt(s*(s-a)*(s-b)*(s-c));”對應(yīng)的數(shù)學(xué)式子為(
)13.C語言編繹系統(tǒng)在判斷一個量是否為“真”時,以0代表“假”,以(
)代表“真”三、讀程序(30分)1.main(){inta=10,b=4,c=3;if(a<b)a=b;if(a<c)a=c;printf(“%d,%d,%d”,a,b,c);}2.main(){int
y=9;for(;y>0;y——)if(y%3==0){printf(“%d”,——y);continue;}3.main(){intx,y;for(y=1,x=1;y<=50;y++){if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;
}printf(“%d”,y)4.main(){staticinta[][3]={9,7,5,3,1,2,4,6,8};inti,j,s1=0,s2=0;i,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if(i==j)s1=s1+a[i][j];if(i+j==2)s2=s2+a[i][j];}printf(“%d\n%d\n”,s1,s2);}5.main(){staticchara[]={‘*’,‘*’,‘*’,‘*’,‘*’};inti,j,k;for(i=0;i<5;i++){printf(“\n”);for(j=0;j<i;j++)printf(“%c”,‘
’);for(k=0;k<5;k++)printf(“%c”,a[k]);
}
}6.intfac(intn){staticintf=1;f=f*n;return(f);}main(){inti;for(i=1;i<=5;i++)printf(“%d!=%d\n”,i,fac(i));}四、編寫程序(20分)1.編一個程序,輸入X的值,按下列公式計算并輸出Y的值2.編程序按下列公式計算e的值(精度為1e-6)e=1+1/1!+1/2!+1/3!+……1/n!
參考答案:一、單項選擇題(共30分,每題1分)1.C
2.B
3.D
4.A
5.B
6.A
7.C
8.C
9.A
10.A
11.C
12.D
13.A
14.D
15.D
16.C
17.D
18.D
19.A
20.B
21.D
22.A
23.C
24.B
25.D
26.D
27.B
28.A
29.B
30.C;}二、填空(20分,每空1分)1.2,12.#define
符號常量
常量3.(x>20&&x<30)||x<-1004.分支結(jié)構(gòu),循環(huán)結(jié)果5.while
do
for6.#include
“stdio.h”
#include
“string.h”7.a[1][1]=0,a[2][1]=08.*指針運算符,
&地址運算符9.分號;10.復(fù)合語句11.a=12,b=24,c=3613.非0三、讀程序(30分)1.結(jié)果:10,4,32.結(jié)果:8523.64.18105.*****6.5!=120四、編寫程序(20分1.Main(){intx,y;scanf(“%d”,&x);if(x<=1)y=x;(x<=1)y=x;elseif(x>1&&x<10)y=2*x-1;elsey=3*x-11;printf
(“x=%d,y=%d\n”,x,y);}bsp;
}2.Main(){floatE;intn;s=0;E=1;試題二一、單項選擇題(每小題2分,共50分)1、一個C程序的執(zhí)行是從___A__。A、本程序的main函數(shù)開始,到main函數(shù)結(jié)束B、本程序的main函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束C、本程序文件的第一個函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束D、本程序文件的第一個函數(shù)開始,到本程序main函數(shù)結(jié)束2、C語言程序的基本單位是___C___。A、程序行B、語句C、函數(shù)D、字符3、請選出可用作C語言用戶標(biāo)識符的一組標(biāo)識符___B___。A、voidB、a3_b3C、ForD、2adefine_123-abcDOWORDIFasesizeof4、假定x和y為double型,則表達式(x=2,y=x+5/2)的值是__C__。A、4.500000B、4C、4.000000D、2.0000005、下列可以正確表示字符型常量的是___D__。A、297B、"a"C、"\n"D、'\t'6、在C語言中,要求運算數(shù)必須是整型的運算符是__D__。A、/B、++C、*=D、%7、C語言中,復(fù)合語句的構(gòu)成是將一系列語句置于__C__。A、begin與end之間B、方框號“[]”之間C、花括號“{}”之間D、圓括號“()”之間8、有如下程序段,對應(yīng)正確的數(shù)據(jù)輸入是___A___。floatx,y;scanf(”%f%f”,&x,&y);printf(”a=%f,b=%f”,x,y);A、2.04<回車>B、2.04,5.67<回車>5.67<回車>C、A=2.04,B=5.67<回車>D、2.045.67<回車>9、以下程序段的輸出結(jié)果是___D__。inta=5678;printf(”%2d\n”,a);A、提示出錯、無結(jié)果B、56C、78D、567810、已知:charch='A';則下列表達式的值是__B__。ch=(ch>='A'&&ch<='Z')?(ch+32):ch;A、AB、aC、ZD、z11、下列描述,正確的是___B__。A、表達式3.91%5是合法的B、用b=89作為while循環(huán)的條件是合法的C、逗號表達式是沒有值和類型的D、字符型變量和int型變量的操作完全不同12、閱讀以下程序:main(){intx;scanf("%d",&x);if(x--<5)printf("%d",x);elseprintf("%d",x++);}程序運行后,如果從鍵盤上輸人5,則輸出結(jié)果是__B__。A、3B、4C、5D、613、下列程序的運行結(jié)果是___C__。#include”stdio.h”main(){intk;k=3;switch(k){case1:printf(”%d\n”,k++);case2:printf(”%d\n”,k++);case3:printf(”%d\n”,k++);case4:printf(”%d\n”,k++);break;default:printf(”Full!\n”);}}A、3B、4C、3D、44414、設(shè)a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=1,則邏輯表達式(m==a<b)&&(n==c<d)的值為__A__。A、0B、1C、2D、315、設(shè)x、y和temp均為longint型變量,則以下語句:{temp=x;x=y;y=temp;}的功能是__D__。A、把x和y按從大到小排列B、把x和y按從小到大排列C、無確定結(jié)果D、交換變量x和變量y的值16、以下程序的輸出結(jié)果是___A__。main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}A、4B、6C、5D、10117、執(zhí)行以下程序后輸出的結(jié)果是___D__。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}A、-1B、1C、8D、018、執(zhí)行以下程序后輸出的結(jié)果是___B__。main(){inti,j,w=0;for(i=4;i;i--)for(j=1;j<=2;j++)w=w+i*j;w=i*j;printf("%d\n",w);}A、4B、0C、1D、3019、以下程序運行后,輸出結(jié)果是__C__。main(){intn[5]={3,3,3},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf("%d\n",n[k]);}A、4B、9C、3D、不確定的值20、以下程序的輸出結(jié)果是__A__。f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n",f(a));}A、7B、7C、7D、78910791113721、設(shè)C程序如下:#defineABC(x)x*x#include"stdio.h"main(){inta=3,b;b=ABC(a+1);printf("b=%d",b);}上述程序運行輸出的結(jié)果是__D_。A、b=4B、b=a+1C、b=16D、b=722、以下程序的輸出結(jié)果是__B__。main(){inti,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf("%d%d%d",a[1],a[6],a[9]);}A、169B、941C、961D、35723、若定義:floatx=3.14159,*p=&x;則printf("%f\n",*p++);的輸出結(jié)果為__C__。A、無確定值B、x的地址C、3.14159D、4.1415924、以下程序的輸出結(jié)果是___B__main(){charb[]="Language";char*p=b;printf("%c",*(b+2));p=p+7;printf("%c\n",*p++);}A、27B、neC、agD、nu25、下列程序的輸出結(jié)果是___A__。#include"stdio.h"main(){inta[]={1,2,3,4,5,6,7,8,9,0},i,s,*p;p=a;s=0;for(i=0;i<=9;i++)s+=*p++;printf("%d\n",s);}A、45B、44C、0D、9二、判斷題(每小題1分,共10分)1.語句int*point;中的point是指針變量名。(T)2.主函數(shù)和其它函數(shù)之間可以相互調(diào)用。(F)3.puts()和gets()函數(shù)只能輸入或輸出一個字符。(F)4.可以對字符型數(shù)組元素進行整體輸入、輸出。(T)5.do-while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替。(F)6.在一個函數(shù)內(nèi)的復(fù)合語句中定義的變量可以在本函數(shù)范圍內(nèi)有效。(F)7.函數(shù)必須有返回值,否則不能使用函數(shù)。(F)8.for(;;);語句相當(dāng)于while(1);語句。(T)9.C程序的執(zhí)行總是從第一個定義的函數(shù)開始。(F)10.C語言中的關(guān)鍵字專門用作語言的特定成分,而不能作為一般標(biāo)識符使用。(T)三、程序填空題(每空2分,共10分)1、下面程序完成判斷某一個數(shù)m是否為素數(shù),如果是則輸出"misaprime!",否則就輸出"misnotaprime!",請選擇填空。main(){inti,m;scanf("m=%d",&m);for(i=2;i<m;i++){if(m%i==
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年債務(wù)轉(zhuǎn)移與債權(quán)收購合同模板3篇
- 2024年信息技術(shù)企業(yè)增資股權(quán)轉(zhuǎn)讓協(xié)議3篇
- 微分電路課程設(shè)計
- 用matlab 做時鐘的課程設(shè)計
- 愛護書籍主題課程設(shè)計
- 物流課程設(shè)計模板
- 玉雕課程設(shè)計目的
- 福建福州咖啡課程設(shè)計
- 電子羅盤課程設(shè)計報告
- 點陣取模課程設(shè)計
- 食材配送服務(wù)方案投標(biāo)方案(技術(shù)方案)
- 年產(chǎn)15000噸硫酸鋁項目環(huán)評報告表
- 2024年一級注冊建筑師理論考試題庫ab卷
- 試驗檢測方案
- 小學(xué)數(shù)學(xué)班級學(xué)情分析報告
- IMCA船舶隱患排查表
- 2024年軟件開發(fā)調(diào)試合同樣本(二篇)
- 地理月考分析及改進措施初中生
- 鄉(xiāng)村籃球比賽預(yù)案設(shè)計
- 博物館保安服務(wù)投標(biāo)方案(技術(shù)方案)
- 陜西省幼兒教師通識性知識大賽考試題庫(含答案)
評論
0/150
提交評論