C語言程序設(shè)計(jì)試題集及答案_第1頁
C語言程序設(shè)計(jì)試題集及答案_第2頁
C語言程序設(shè)計(jì)試題集及答案_第3頁
C語言程序設(shè)計(jì)試題集及答案_第4頁
C語言程序設(shè)計(jì)試題集及答案_第5頁
已閱讀5頁,還剩139頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單項(xiàng)選擇題第002頁閱讀程序題第018頁程序填空題第039頁編寫程序題第070頁一、單項(xiàng)選擇題導(dǎo)讀:單項(xiàng)選擇題要求從給出的四個(gè)備選答案中,選出一個(gè)最符合題意的答案。本類習(xí)題主要檢查對C語言基本概念的掌握情況,讀者可根據(jù)學(xué)習(xí)進(jìn)度選做部分習(xí)題。在完成習(xí)題的過程中,不但要選出正確的答案,而且要清楚不正確的選項(xiàng)錯(cuò)在何處,以加深對概念的理解。對于掌握不準(zhǔn)的問題,應(yīng)該通過上機(jī)實(shí)驗(yàn)來檢驗(yàn)?!?.1】以下不正確的C語言標(biāo)識(shí)符是_。A) int B) a_1_2 C) ab1exe D) _x【1.2】以下是正確的C語言標(biāo)識(shí)符是_。A) #define B) _123 C) %d D) n【1.3】下列四組字符

2、串中都可以用作語言程序標(biāo)識(shí)符的一組是 。 A) print B) iam C) Pxq D) str_l _3d one_half My->book Cpp oodbs tart$it line# pow aBc 3pai His.age while【1.4】下面各選項(xiàng)組中,均是C語言關(guān)鍵字的組是 。A) auto,enum,include B) switch,typedef,continueC) signed,union,scanf D) if,struct,type【1.5】下列不屬于C語言關(guān)鍵字的是 。 A) default B) register C) enum D) exter

3、nal【1.6】C語言程序從main()函數(shù)開始執(zhí)行,所以這個(gè)函數(shù)要寫在_。A) 程序文件的開始 B) 程序文件的最后C) 它所調(diào)用的函數(shù)的前面 D) 程序文件的任何位置【1.7】下列關(guān)于C語言的敘述錯(cuò)誤的是_A) 大寫字母和小寫字母的意義相同B) 不同類型的變量可以在一個(gè)表達(dá)式中C) 在賦值表達(dá)式中等號(hào)(=)左邊的變量和右邊的值可以是不同類型 D) 同一個(gè)運(yùn)算符號(hào)在不同的場合可以有不同的含義【1.8】在C語言中,錯(cuò)誤的int類型的常數(shù)是 。A) 32768 (超過了范圍) B) 0C) 037D) 0xAF【1.9】執(zhí)行語句 printf("%x",-1);屏幕顯示_。A

4、) -1 B) 1 C) ffff D) ffff【1.10】已知 long i=32768;執(zhí)行語句printf("%d",i);屏幕顯示_。A) -1 B) -32768 C) 1 D) 32768【1.11】已知 long i=65539;執(zhí)行語句printf("%d",i);屏幕顯示_。A) 65539 B) -3 C) 3 D) 程序不能執(zhí)行【1.12】在語言中,整數(shù)-8在內(nèi)存中的存儲(chǔ)形式是 。A) 1111 1111 1111 1000 B) 1000 0000 0000 1000C) 0000 0000 0000 1000 D) 1111

5、1111 1111 0111【1.13】語言中字符型(char)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是_。A) 原碼 B) 補(bǔ)碼 C) 反碼 D) ASCII碼【1.14】將字符g賦給字符變量c,正確的表達(dá)式是 。A) c=147 B) c="147" C) c='147' D) c='0147'【1.15】下列轉(zhuǎn)義字符中錯(cuò)誤的一個(gè)是_。A) '000' B) '0014' C) 'x111' D) '2'【1.16】將空格符賦給字符變量c,正確的賦值語句是_。A) c='0'

6、 B) c=NULL C) c=0 D) c=32【1.17】已知:char a='70'則變量a中 。A) 包含1個(gè)字符 B) 包含2個(gè)字符 C) 包含3個(gè)字符 D) 說明非法【1.18】字符串""EOFn=-61""的長度是_。A) 8 B) 9 C) 14 D) 非法字符串【1.19】字符串""的長度是_。A) 0 B) 1 C) 2 D) 非法字符串【1.20】已知:char a;int b;float c;double d;執(zhí)行語句"c=a+b+c+d;"后,變量c的數(shù)據(jù)類型是 。A) i

7、nt B) char C) float D) double【1.21】溫度華氏和攝氏的關(guān)系是: C=-(F-32)。已知:float C,F;由華氏求攝氏的正確的賦值表達(dá)式是_。A) C=5/9(F-32) B) C=5*(F-32)/9 C) C=5/9*(F-32) D) 三個(gè)表達(dá)式都正確【1.22】逗號(hào)表達(dá)式"(a=3*5,a*4),a+15"的值是_。A) 15 B) 60 C) 30 D) 不確定【1.23】如果int a=1,b=2,c=3,d=4;則條件表達(dá)式"a<b?a:c<d?c:d"的值是_。A) 1 B) 2 C) 3

8、D) 4【1.24】為求出s=10!的值,則變量s的類型應(yīng)當(dāng)為 。A) int B) unsiged C) long D) 以上三種類型均可【1.25】已知int i=10;表達(dá)式"20-0<=i<=9"的值是_。A) 0 B) 1 C) 19 D) 20【1.26】已知int x=1,y;執(zhí)行下述語句后變量x的值是_。y=+x>5&&+x<10;A) 1 B)2 C) 3 D) 4【1.27】為判斷字符變量c的值不是數(shù)字也不是字母時(shí),應(yīng)采用下述表達(dá)式_。A) c<=48|c>=57&&c<=65|c

9、>=90&&c<=97|c>=122B) !(c<=48|c>=57&&c<=65|c>=90&&c<=97|c>=122)C) c>=48&&c<=57|c>=65&&c<=90|c>=97&&c<=122D) !(c>=48&&c<=57|c>=65&&c<=90|c>=97&&c<=122)【1.28】已知 int a32

10、=3,2,1;則表達(dá)式"a00/a01/a02"的值是_。A) 0.166667 B) 1 C) 0 D) 錯(cuò)誤的表達(dá)式【1.29】已知 int x=1,y=1,z=1;表達(dá)式"x+y+z+"的值是_。A) 3 B) 4 C) 5 D) 表達(dá)式錯(cuò)誤【1.30】用十進(jìn)制表示表達(dá)式"12|012"(位或)的值是_。12是1100,012是101012|012就是1100|1010=1110換成十進(jìn)制是14第一個(gè):十進(jìn)制轉(zhuǎn)二進(jìn)制 第二個(gè):八進(jìn)制轉(zhuǎn)二進(jìn)制A) 1 B) 0 C) 12 D) 14【1.31】已知以下程序段:int a=3,b=

11、4;a=ab;0011 0100 0111b=ba;0100 0011 0111 0100a=ab;則執(zhí)行以上語句后a和b的值分別是_。A) a=3,b=4 B) a=4,b=3 C) a=4,b=4 D) a=3,b=3【1.32】在位運(yùn)算中,操作數(shù)每右移一位,其結(jié)果相當(dāng)于_。A) 操作數(shù)乘以2 B) 操作數(shù)除以2 C) 操作數(shù)除以16 D) 操作數(shù)乘以16【1.33】已知 char a=222;執(zhí)行語句a=a&052;后,變量a的值是_。A) 222 B) 10 C) 244 D) 254【1.34】已知二進(jìn)制數(shù)a是00101101,如果想通過整型變量b與a做異或運(yùn)算,使變量a的高

12、4位取反,低4位不變,則二進(jìn)制數(shù)b的值應(yīng)是_。A) 11110000 B) 00001111 C) 11111111 D) 00000000【1.35】已知 int a=15,執(zhí)行語句a=a<<2以后,變量a的值是_。A) 20 B) 40 C) 60 D) 80【1.36】已知int x=5,y=5,z=5;執(zhí)行語句x%=y+z;后,x的值是_。A) 0 B) 1 C) 5 D) 6【1.37】使用語句scanf("x=%f,y=%f",&x,&y);輸入變量x、y的值(代表空格),正確的輸入是_。A) 1.25,2.4 B) 1.252.4

13、C) x=1.25,y=2.4 D) x=1.25y=2.4【1.38】下列循環(huán)語句中有語法錯(cuò)誤的是_。A) while(x=y) 5; B) while(0) ;C) do 2;while(x=b); D) do x+ while(x=10);【1.39】已知int x=(1,2,3,4);變量x的值是_。A) 1 B) 2 C) 3 D) 4【1.40】表達(dá)式sizeof(double)是 。A) 函數(shù)調(diào)用 B) double型表達(dá)式 C) int型表達(dá)式 D) 非法表達(dá)式【1.41】執(zhí)行語句printf("2:%d,",printf("1:%d,"

14、,scanf("%d",&x);以后的輸出結(jié)果是_。A) 2:1,1:1, B) 1:1,2:1, C) 2:4,1:1 D) 1:1,2:4,【1.42】已知:int x,y;double z;則以下語句中錯(cuò)誤的函數(shù)調(diào)用是 。A) scanf ("%d,%lx,%le",&x,&y,&z);B) scanf ("%2d*%d%lf",&x,&y,&z);C) scanf ("%x%*d%o",&x,&y); D) scanf ("%

15、x%o%6.2f",&x,&y,&z);【1.43】與條件表達(dá)式"(n)?(c+):(c-)"中的表達(dá)式(n)等價(jià)的表達(dá)式是_。A) (n=0) B) (n=1) C) (n!=0) D) (n!=1)【1.44】已知int i=1,j=0;執(zhí)行下面語句后j的值是_。while(i)switch(i) case 1: i+=1;j+;break;case 2: i+=2;j+;break;case j3: i+=3;+;break;default: i-;j+;break;A) 1 B) 2 C) 3 D) 死循環(huán)【1.45】求取滿足式 1

16、2+22+32+ +n2 1000的n,正確的語句是_。A) for(i=1,s=0;(s=s+i*i)<=1000;n=i+) ; B) for(i=1,s=0;(s=s+i*i)<=1000;n=+i) ;C) for(i=1,s=0;(s=s+i*+i)<=1000;n=i) ; D) for(i=1,s=0;(s=s+i*i+)<=1000;n=i) ;【1.46】下面的for語句 。for(x=0,y=10;(y>0)&&(x<4);x+,y- ) ;A) 是無限循環(huán) B) 循環(huán)次數(shù)不定 C) 循環(huán)執(zhí)行4次 D) 循環(huán)執(zhí)行3次【1.

17、47】已知int i=1; 執(zhí)行語句while (i+<4) ;后,變量i的值為_。A) 3 B) 4 C) 5 D) 6【1.48】已知int x=12,y=3;執(zhí)行下述程序后,變量x的值是_。do x/=y-;while(x>y);A) 1 B) 2 C) 3 D) 程序運(yùn)行有錯(cuò)誤【1.49】已知 char a20="Beijing","shanghai","tianjin","chongqing"語句printf("%c",a30);的輸出是_。A) <空格> B)

18、 n C) 不定 D) 數(shù)組定義有誤【1.50】若用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,則實(shí)際上傳遞給形參的是 。A) 數(shù)組首地址 B) 數(shù)組的第一個(gè)元素值C) 數(shù)組中全部元素的值 D) 數(shù)組元素的個(gè)數(shù)【1.51】對二維數(shù)組的正確說明是_。A) int a=1,2,3,4,5,6; B) int a2=1,2,3,4,5,6;C) int a3=1,2,3,4,5,6; D) int a2,3=1,2,3,4,5,6;【1.52】對字符數(shù)組s賦值,不合法的一個(gè)是_。A) char s="Beijing" B) char s20="beijing"C) char

19、s20;s="Beijing" D) char s20='B','e','i','j','i','n','g'【1.53】對字符數(shù)組str賦初值,str不能作為字符串使用的一個(gè)是_。A) char str="shanghai"B) char str="shanghai" C) char str9='s','h','a','n','g','

20、h','a','i'D) char str8= 's','h','a','n','g','h','a','i'/××××××××××××××××××××××××××

21、5;×××××××××××××/【1.54】對函數(shù)形參的說明有錯(cuò)誤的是_。A) int a(float x,int n) B) int a(float *x,int n)C) int a(float x10,int n) D) int a(float x,int n)【1.55】如果一個(gè)變量在整個(gè)程序運(yùn)行期間都存在,但是僅在說明它的函數(shù)內(nèi)是可見的,這個(gè)變量的存儲(chǔ)類型應(yīng)該被說明為_。A) 靜態(tài)變量 B) 動(dòng)態(tài)變量 C) 外部變量 D) 內(nèi)部變量【1.56】在一個(gè)C源程

22、序文件中,若要定義一個(gè)只允許在該源文件中所有函數(shù)使用的變量,則該變量需要使用的存儲(chǔ)類別是 。A) extern B) register C) auto D) static【1.57】在C語言中,函數(shù)的數(shù)據(jù)類型是指_。A) 函數(shù)返回值的數(shù)據(jù)類型 B) 函數(shù)形參的數(shù)據(jù)類型C) 調(diào)用該函數(shù)時(shí)的實(shí)參的數(shù)據(jù)類型 D) 任意指定的數(shù)據(jù)類型【1.58】已知如下定義的函數(shù):fun1(a) printf("n%d",a);則該函數(shù)的數(shù)據(jù)類型是_。A) 與參數(shù)a的類型相同 B) void型C) 沒有返回值 D) 無法確定【1.59】定義一個(gè)函數(shù)實(shí)現(xiàn)交換x和y的值,并將結(jié)果正確返回。能夠?qū)崿F(xiàn)此功

23、能的是_。A) swapa(int x,int y) B) swapb(int *x,int *y) int temp; int temp;temp=x;x=y;y=temp; temp=x;x=y;y=temp; C) swapc(int *x,int *y) D) swapd(int *x,int *y) int temp; int *temp;temp=*x;*x=*y;*y=temp; temp=x;x=y;y=temp; 【1.60】求一個(gè)角的正弦函數(shù)值的平方。能夠?qū)崿F(xiàn)此功能的函數(shù)是_。A) sqofsina(x) float x; return(sin(x)*sin(x);B) d

24、ouble sqofsinb(x)float x; return(sin(double)x)*sin(double)x);C) double sqofsinc(x) return(sin(x)*sin(x);D) sqofsind(x)float x; return(double(sin(x)*sin(x);【1.61】一個(gè)函數(shù)內(nèi)有數(shù)據(jù)類型說明語句如下:double x,y,z(10);關(guān)于此語句的解釋,下面說法正確的是_。A) z是一個(gè)數(shù)組,它有10個(gè)元素。B) z是一個(gè)函數(shù),小括號(hào)內(nèi)的10是它的實(shí)參的值。C) z是一個(gè)變量,小括號(hào)內(nèi)的10是它的初值。D) 語句中有錯(cuò)誤。【1.62】已知函數(shù)

25、定義如下:float fun1(int x,int y) float z;z=(float)x/y;return(z);主調(diào)函數(shù)中有int a=1,b=0;可以正確調(diào)用此函數(shù)的語句是_。A) printf("%f",fun1(a,b); B) printf("%f",fun1(&a,&b);C) printf("%f",fun1(*a,*b); D) 調(diào)用時(shí)發(fā)生錯(cuò)誤【1.63】下面函數(shù)的功能是_。a(s1,s2)char s1,s2; while(s2+=s1+) ;A) 字符串比較 B) 字符串復(fù)制 C) 字符串連接

26、 D) 字符串反向【1.64】在下列結(jié)論中,只有一個(gè)是錯(cuò)誤的,它是 。A) 語言允許函數(shù)的遞歸調(diào)用B) 語言中的continue語句,可以通過改變程序的結(jié)構(gòu)而省略C) 有些遞歸程序是不能用非遞歸算法實(shí)現(xiàn)的 D) C語言中不允許在函數(shù)中再定義函數(shù)【1.65】已知:int a, *y=&a;則下列函數(shù)調(diào)用中錯(cuò)誤的是 。A) scanf("%d", &a); B) scanf("%d", y);C) printf("%d", a); D) printf("%d", y);【1.66】說明語句"i

27、nt (*p)( );"的含義是 。A) p是一個(gè)指向一維數(shù)組的指針變量B) p是指針變量,指向一個(gè)整型數(shù)據(jù)C) p是一個(gè)指向函數(shù)的指針,該函數(shù)的返回值是一個(gè)整型D) 以上都不對【1.67】設(shè)有說明int (*p)4;其中的標(biāo)識(shí)符p是 。A) 4個(gè)指向整型變量的指針變量B) 指向4個(gè)整型變量的函數(shù)指針C) 一個(gè)指向具有4個(gè)整型元素的一維數(shù)組的指針D) 具有4個(gè)指向整型變量的指針元素的一維指針數(shù)組【1.68】已知:char s10, *p=s,則在下列語句中,錯(cuò)誤的語句是 。A) p=s+5; B) s=p+s; C) s2=p4; D) *p=s0;【1.69】已知:char s10

28、0;int i;則引用數(shù)組元素的錯(cuò)誤的形式是 。A) si+10 B) *(s+i) C) *(i+s) D) *(s+)+i)【1.70】已知:char s6, *ps=s;則正確的賦值語句是 。 A) s="12345" B) *s="12345" C) ps="12345" D) *ps="12345"【1.71】已知:char a310="BeiJing","ShangHai","TianJin", *pa=a;不能正確顯示字符串"Sha

29、ngHai"的語句是 。A) printf("%s",a+1); B) printf("%s",*(a+1);C) printf("%s",*a+1); D) printf("%s",&a10);【1.72】已知:int a43=1,2,3,4,5,6,7,8,9,10,11,12;int (*ptr)3=a,*p=a0;則以下能夠正確表示數(shù)組元素a12的表達(dá)式是 。A) *(*(a+1)+2) B) *(*(p+5) C) (*ptr+1)+2 D) *(ptr+1)2)【1.73】已知:int

30、 a =1,2,3,4,5,6,7,8,9,10,11,12,*p=a;則值為3的表達(dá)式是 。A) p+=2,*(p+) B) p+=2,*+p C) p+=2,*p+ D) p+=2,+*p【1.74】已知:int a=1,2,3,4, y, *p=a;則執(zhí)行語句y = (*+p)-;之后, 數(shù)組a各元素的值變?yōu)開。A) 0,1,3,4 B) 1,1,3,4 C) 1,2,2,4 D) 1,2,3,3變量y的值是_。A) 1 B) 2 C) 3 D) 4 【1.75】已知:int a =1,3,5,7, y *p= a;為使變量y的值為3,下列語句正確的是_。A) y=+*p+; B) y=

31、+(*p+); C) y=(+*p)+; D) y=(*+p)+;【1.76】已知:int x = 1,3,5,7,9,11 ,*ptr=x;則能夠正確引用數(shù)組元素的語句是 。A) x B) *(ptr-) C) x6 D) *(-ptr)【1.77】函數(shù)的功能是交換變量x和y中的值,且通過正確調(diào)用返回交換的結(jié)果。能正確執(zhí)行此功能的函數(shù)是 。A) funa (int *x, int *y) B) funb (int x, int y) int *p; int t;p=x;*x=*y;*y=*p; t=x;x=y;y=t; C) func (int *x, int *y) D) func (in

32、t *x, int *y) *x=*y;*y=*x; *x=*x+*y;*y=*x-*y;*x=*x-*y; 【1.78】有定義如下:struct sk int a;float b;data ,*p;如果 p=&data;則對于結(jié)構(gòu)變量data的成員a的正確引用是_?!?.79】已知:struct st int n;struct st *next;static struct st a3=1,&a1,3,&a2,5,&a0,*p;如果下述語句的顯示是2,則對p的賦值是_。printf("%d",+(p->next->n);A) p=

33、&a0; B) p=&a1; C) p=&a2; D) p=&a3;【1.80】已知:struct person char name10;int age;class10="LiMing",29,"ZhangHong",21,"WangFang",22;下述表達(dá)式中,值為72的一個(gè)是_。A) class0->age + class1->age+ class2->ageB) 5 C) 5D) clase->name5【1.81】已知:st

34、ruct int i;char c;float a;test;則sizeof(test)的值是 。A) 4 B) 5 C) 6 D) 7【1.82】已知:union int i;char c;float a;test;則sizeof(test)的值是 。A) 4 B) 5 C) 6 D) 7【1.83】已知:union u_type int i;char ch;float a;temp;現(xiàn)在執(zhí)行"temp.i=266;printf("%d",temp.ch)"的結(jié)果是 。A) 266 B) 256 C) 10 D) 1【1.84】若有以下程序段:stru

35、ct dent int n;int *m;int a=1,b=2,c=3;struct dent s3 = 101,&a,102,&b,103,&c ;struct dent *p=s;則以下表達(dá)式中值為2的是 。A) (p+)->m B) *(p+)->m C) (*p).m D) *(+p)->m【1.85】若有以下說明語句,則對結(jié)構(gòu)變量pup中sex域的正確引用是 。struct pupil char name20;int sex;pup,*p;p=&pup;A) p.pup.sex B) p->pup.sex C) (*p).pu

36、p.sex D) (*p).sex【1.86】以下對結(jié)構(gòu)變量stul中成員age的非法引用是 。struct student int age;int num;stu1,*p;p=&stu1;A) stu1.age B) student.age C) p->age D) (*p).age【1.87】若有以下定義和語句:union data int i;char c;float f;a;int n;則以下語句正確的是 。A) a=5; B) a=2,'a',1.2; C) printf("%dn",a); D) n=a;【1.88】已知:struc

37、t sk int a;int age;date,*p;如果要使指針p指向data中的成員a,正確的賦值語句是_。A) p = (struct sk *)&data.a; B) p = (struct sk *)data.a;C) p = &data.a; D) *p = data.a;【1.89】已知 enum week sun,mon,tue,wed,thu,fri,satday;則正確的賦值語句是_。A) sun=0; C) san=day; D) sun=mon; D) day=sun;【1.90】已知 enum color red,yellow=2,blue,white

38、,blackren;執(zhí)行下述語句的輸出結(jié)果是_。printf("%d",ren=white);A) 0 B) 1 C) 3 D) 4【1.91】已知 enum namezhao=1,qian,sun,liman;執(zhí)行下述程序段后的輸出是_。man=0;switch(man) case 0: printf("Peoplen");case 1: printf("Mann");case 2: printf("Womann");default: printf("Errorn");A) People B)

39、 Man C) Woman D)Error【1.92】下述關(guān)于枚舉類型名的定義中,正確的是_。A) enem a= one,two,three ; B) enem a one=9,two=-1,three ;C) enem a="one","two","three" D) enem a "one","two","three"【1.93】語言中標(biāo)準(zhǔn)輸入文件stdin是指 。 A) 鍵盤 B) 顯示器 C) 鼠標(biāo) D) 硬盤【1.94】要打開一個(gè)已存在的非空文件"fil

40、e"用于修改,選擇正確的語句。A) fp=fopen("file", "r"); B) fp=fopen("file", "a+");C) fp=fopen("file", "w"); D) fp=fopen('file", "r+");【1.95】當(dāng)順利執(zhí)行了文件關(guān)閉操作時(shí),fclose函數(shù)的返回值是 。A) -1 B) TRUE C) 0 D) 1 【1.96】fscanf函數(shù)的正確調(diào)用形式是 。A) fscanf (文件指

41、針, 格式字符串, 輸出列表);B) fscanf (格式字符串, 輸出列表, 文件指針);C) fscanf (格式字符串, 文件指針, 輸出列表);D) fscanf (文件指針, 格式字符串, 輸入列表);【1.97】使用fgetc函數(shù),則打開文件的方式必須是 。A) 只寫 B) 追加 C) 讀或讀/寫 D) 參考答案B和C都正確【1.98】已知宏定義#define N 3#define Y(n) (N+1)*n)執(zhí)行語句z=2*(N+Y(5+1);后,變量z的值是_。A) 42 B) 48 C) 52 D) 出錯(cuò)【1.99】已知宏定義 #define SQ(x) x*x,執(zhí)行語句pri

42、ntf("%d",10/SQ(3);后的輸出結(jié)果是_。A) 1 B) 3 C) 9 D) 10【1.100】已知宏定義如下:#define PR printf#define NL "n"#define D "%d"#define D1 DNL若程序中的語句是 PR(D1,a);經(jīng)預(yù)處理后展開為_。A) printf(%dn,a); B) printf("%dn",a);C) printf("%d""n",a); D) 原語句錯(cuò)誤【單項(xiàng)選擇題參考答案】【1.1】答案: A注釋:

43、int是C語言的關(guān)鍵字【1.2】答案: B【1.3】答案:A【1.4】答案:B注釋:include是預(yù)處理命令;scanf是函數(shù)名;type不是C語言的關(guān)鍵字?!?.5】答案:D【1.6】答案:D【1.7】答案:A【1.8】答案:A注釋:int型表示整數(shù)的范圍是-3276832767?!?.9】答案:D注釋:整型常量-1在計(jì)算機(jī)中表示為補(bǔ)碼1111 1111 1111 1111,用十六進(jìn)制顯示這個(gè)數(shù)時(shí),最左邊的1不會(huì)被解釋為符號(hào)位,而是與右邊其它位共同轉(zhuǎn)換為十六進(jìn)制數(shù)?!?.10】答案:B注釋:長整型數(shù)32768在計(jì)算機(jī)內(nèi)的表示是1000 0000 0000 0000,以一般整型進(jìn)行輸出時(shí),此

44、數(shù)恰是-32768的補(bǔ)碼。【1.11】答案:C注釋:長整型數(shù)65539在計(jì)算機(jī)內(nèi)的表示是0001 0000 0000 0000 0011,以一般整型進(jìn)行輸出時(shí),僅將右側(cè)16位二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。【1.12】答案:A注釋:C語言中,int型的負(fù)數(shù)是采用補(bǔ)碼表示的?!?.13】答案:D【1.14】答案:C注釋:變量c是字符型,可用字符常量為它賦值。字符常量必須用單引號(hào)括起來,所以B是錯(cuò)誤的;在單引號(hào)或雙引號(hào)內(nèi)的反斜線''用于表示轉(zhuǎn)義字符,A選項(xiàng)在無引號(hào)時(shí)使用反斜線是錯(cuò)誤的;C選項(xiàng)單引號(hào)內(nèi)出現(xiàn)反斜線表示它與后面的數(shù)字組成一個(gè)轉(zhuǎn)義字符;單引號(hào)只允許括起一個(gè)字符,D選項(xiàng)在單引號(hào)內(nèi)出現(xiàn)

45、4個(gè)字符,是錯(cuò)誤的?!?.15】答案:C【1.16】答案:D注釋:空字符和空格符是不同的兩個(gè)字符,空格符的ASCII碼值是32,空字符的ASCII值是0。【1.17】答案:A【1.18】答案:B【1.19】答案:A【1.20】答案:C【1.21】答案:B注釋:單純從C語言語法來說,選項(xiàng)B、C都是正確的,但是選項(xiàng)C中第一個(gè)運(yùn)算的兩個(gè)對象都是整型常數(shù),其結(jié)果也是整型數(shù)0,最后的運(yùn)算結(jié)果也就是0了?!?.22】答案:C【1.23】答案:A注釋:將條件表達(dá)式增加一個(gè)括號(hào),此式變?yōu)閍<b?a:(c<d?c:d),它的運(yùn)算順序就清楚了。由于條件運(yùn)算符的結(jié)合性是從右向左,所以括號(hào)可以省略。它的運(yùn)

46、算順序是先算出右邊的條件表達(dá)式"c<d?c:d"的值,然后求條件表達(dá)式a<b?a:3的值?!?.24】答案:C【1.25】答案:B【1.26】答案:B注釋:當(dāng)通過一個(gè)運(yùn)算對象即可決定邏輯運(yùn)算&&的結(jié)果時(shí),則對另一個(gè)運(yùn)算對象不做處理?!?.27】答案:D 【1.28】答案:B注釋:數(shù)組元素在內(nèi)存中按行排列,此數(shù)組的前3個(gè)元素的值分別是3、2、1,表達(dá)式中雖然數(shù)組下標(biāo)的寫法似乎每行有3個(gè)元素,和定義時(shí)的3行2列不一致,但是C語言引用數(shù)組元素時(shí)是根據(jù)數(shù)組的首地址和給出的下標(biāo)進(jìn)行運(yùn)算決定元素的地址。題中表達(dá)式引用了數(shù)組前3個(gè)元素?!?.29】答案: A【

47、1.30】答案:D【1.31】答案:B【1.32】答案:B【1.33】答案:B【1.34】答案:A【1.35】答案:C【1.36】答案:C【1.37】答案:C【1.38】答案:D【1.39】答案:D【1.40】答案:C1.41】答案:D注釋:scanf函數(shù)返回值是輸入數(shù)據(jù)的個(gè)數(shù),printf函數(shù)的返回值是輸出的字符個(gè)數(shù)?!?.42】答案:D【1.43】答案:C注釋:在C語言中, 經(jīng)常用一個(gè)變量來作為邏輯表達(dá)式,其含義就是:當(dāng)變量的值不為0時(shí)關(guān)系成立?!?.44】答案:D注釋:break語句僅可跳出switch語句,不會(huì)跳出while循環(huán),這是一個(gè)死循環(huán)?!?.45】答案:A 【1.46】答案:

48、C【1.47】答案:C 【1.48】答案:D注釋:當(dāng)除數(shù)y為0時(shí),程序發(fā)生溢出錯(cuò)誤?!?.49】答案:C【1.50】答案:A【1.51】答案:C【1.52】答案:C注釋:答案C的賦值號(hào)左側(cè)是數(shù)組s的首地址,是一個(gè)常量,賦值號(hào)右側(cè)是一個(gè)字符串常量,不可能將一個(gè)字符串常量賦給一個(gè)地址常量。【1.53】答案:D注釋:D選項(xiàng)缺少字符串結(jié)束標(biāo)志?!?.54】答案:C注釋:此處函數(shù)形參是一個(gè)指針變量,接受實(shí)參的地址,而不是一個(gè)數(shù)組。【1.55】答案:A【1.56】答案:D注釋:這里首先要明確一些基本概念。在C語言中,程序與文件是不同的概念,一個(gè)程序可以由一個(gè)文件組成,也可以由多個(gè)文件組成;一個(gè)文件中又可以

49、包含多個(gè)函數(shù);函數(shù)是構(gòu)成C程序的基本單位。變量的作用域因變量的存儲(chǔ)類型不同而不同。auto和register類型的變量的作用域是說明變量的當(dāng)前函數(shù);外部變量的作用域是整個(gè)程序,即外部變量的作用域可以跨越多個(gè)文件;內(nèi)部靜態(tài)變量(定義在一個(gè)函數(shù)內(nèi)部的static型的變量)的作用域是當(dāng)前函數(shù),外部靜態(tài)變量(定義在函數(shù)外面的static型的變量)的作用域是當(dāng)前文件,即可以跨越同一文件中的不同函數(shù)。【1.57】答案:A【1.58】答案:A注釋:它和參數(shù)a一樣,數(shù)據(jù)類型說明被省略,按照C語言的規(guī)定,在這種情況下,表示它們是int型?!?.59】答案:C注釋:函數(shù)swapa是值傳遞,函數(shù)的執(zhí)行結(jié)果不能返回;

50、函數(shù)swapb中變量temp不是指針變量,所以它不能接受地址量,用指針變量x為它賦值是不對的;函數(shù)swap中雖然指針變量交換了地址,即它們的指向的目標(biāo)變量進(jìn)行了交換,但是目標(biāo)變量并沒有行值的交換?!?.60】答案:B【1.61】答案:D【1.62】答案:D注釋:主調(diào)函數(shù)中b=0,在執(zhí)行fun1函數(shù)里的除法時(shí)發(fā)生溢出錯(cuò)誤?!?.63】答案:B【1.64】答案:C【1.65】答案:D注釋:在答案D中,正確的函數(shù)調(diào)用應(yīng)當(dāng)是:printf("%d", *y)。【1.66】答案:C注釋:要注意與說明語句"int (*p) ;"的區(qū)別。說明語句"int (

51、*p) ;"說明的是一個(gè)指向數(shù)組的指針?!?.67】答案:C注釋:題干中由于*和p被小括號(hào)括起,所以p應(yīng)被解釋為一個(gè)指針,而后的下標(biāo)運(yùn)算符說明所指向的對象是一個(gè)有4個(gè)int型元素的一維數(shù)組;如果是int (*p)(),則是指向函數(shù)的指針。對于int *p4,則根據(jù)運(yùn)算符的優(yōu)先級(jí),先考慮p和運(yùn)算符的關(guān)系,所以它就是一個(gè)指針數(shù)組了?!?.68】答案:B注釋:選項(xiàng)B有兩處錯(cuò)誤,一是數(shù)組名是常量,不能出現(xiàn)的賦值好的左側(cè),二是指針變量只能和整數(shù)做加,不能和作為地址常量的數(shù)組名相加。【1.69】答案:D注釋:s作為數(shù)組名是地址常量,而s+是s=s+1,C語言不允許對常量進(jìn)行賦值?!?.70】答案

52、:C【1.71】答案:C注釋:a是二維數(shù)組名,a+1中的1不是1個(gè)字節(jié),而是數(shù)組的"一行",即10個(gè)字節(jié),所以a+1是第二個(gè)字符串的首地址,A選項(xiàng)正確。在C編譯系統(tǒng)中對二維數(shù)組名可這樣理解(注意,這里僅是理解):a指向一個(gè)一維數(shù)組,故(a+1)是指向a1的,*(a+1)就是取a1的值,它保存第二個(gè)字符串"ShangHai"的首地址,所以選項(xiàng)B也正確。*a是第一個(gè)字符串的首地址,加1是第一個(gè)字符串中第二個(gè)字符的地址,選項(xiàng)C的輸出是"beiJing"。選項(xiàng)D中的&a10是對第二個(gè)字符串的第一個(gè)字符做取地址運(yùn)算,得到該地址就是字符串

53、"ShangHai"的首地址。注意,對于二維數(shù)組來說,做一次*或運(yùn)算的結(jié)果仍是地址量,做兩次才是取數(shù)值?!?.72】答案:A注釋:p是一個(gè)一級(jí)指針,選項(xiàng)B中對它進(jìn)行了兩次*運(yùn)算是錯(cuò)誤的。ptr是一個(gè)指向一維數(shù)組的指針,它所指向的數(shù)組有三個(gè)元素,對于這樣一個(gè)指針,對它進(jìn)行兩次*運(yùn)算才能取出地址單元中所存的數(shù)據(jù),C選項(xiàng)中*ptr表示數(shù)組第一行的首地址,該地址是一維數(shù)組的地址,+3表示加上三個(gè)它所指向的數(shù)據(jù)類型的長度,所以(*ptr+1)+2是數(shù)組中數(shù)值4的地址。根據(jù)以上分析,選項(xiàng)D對ptr進(jìn)行了兩次地址操作(*和),所以結(jié)果應(yīng)是數(shù)據(jù),但是它加1后指向數(shù)組第二行,根據(jù)后面中2它的

54、地址增加兩個(gè)一維數(shù)組的長度,就指向數(shù)組的最后一行,再做*運(yùn)算就是數(shù)10,即a30?!?.73】答案:A【1.74】答案:B B【1.75】答案:D【1.76】答案:B【1.77】答案:D注釋:答案D是另一種交換兩個(gè)變量值的算法?!?.78】答案:B【1.79】答案:C注釋:使用C對p進(jìn)行賦值,則p->next是a0的地址,引用其成員n再做前增1運(yùn)算,結(jié)果就是2?!?.80】答案:B【1.81】答案:D【1.82】答案:A【1.83】答案:C注釋:聯(lián)合變量temp的成員是占用同一存儲(chǔ)單元,它的長度是4個(gè)字節(jié)。266的二進(jìn)制表示是100001010,存放在存儲(chǔ)單元的低端兩個(gè)字節(jié),如下圖:高字

55、節(jié) 0 0 0 0 0 0 0 1低字節(jié) 0 0 0 0 1 0 1 0引用temp.ch進(jìn)行輸出,只取最低的第一個(gè)字節(jié)?!?.84】答案:D注釋:由于結(jié)構(gòu)指針指向了結(jié)構(gòu)數(shù)組的0號(hào)元素,所以表達(dá)式(p+)->m的含義是先取出m(變量a的地址),然后指針p加1。表達(dá)式*(p+)->m的含義是先取出m的內(nèi)容(變量a的值),然后指針p再加1。表達(dá)式(*p).m的含義是取出m(變量a的地址)。表達(dá)式*(+p)->m的含義是先將指針p加1,然后再取m的內(nèi)容(變量b的值)?!?.85】答案:D【1.86】答案:B【1.87】答案:C【1.88】答案:A【1.89】答案:D【1.90】答案

56、:D【1.91】答案:A【1.92】答案:B【1.93】答案:A【1.94】答案:D注釋:函數(shù)fopen中的第二參數(shù)是打開模式,"r"模式是只讀方式,不能寫文件;"a+"模式是讀/追加方式,允許從文件中讀出數(shù)據(jù),但所有寫入的數(shù)據(jù)均自動(dòng)加在文件的末尾;"w"模式是寫方式,允許按照用戶的要求將數(shù)據(jù)寫入文件的指定位置,但打開文件后,首先要將文件的內(nèi)容清空。"r+"模式是讀/寫方式,不但允許讀文件,而且允許按照用戶的要求將數(shù)據(jù)寫入文件的指定位置,且在打開文件后,不會(huì)將文件的內(nèi)容清空。本題的要求是"修改"文件的內(nèi)容,因此只能選擇答案D。【1.95】答案:C【1.96】答案:D【1.97】答案:C【1.98】答案:B注釋:語句z=2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論