


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、計算二級C語言易錯知識點1. 指針是用來存放地址的變量,用(類型名*指針變量名)的形式定義。賦值時應將某個變量地址即 &X賦給指針變量2.設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù) feof(fp) 的 返回值為A) 0B) '0'C) 非0值D) NULL【解析】本題考查文件的定位,feof函數(shù)的用法是從輸入流讀取數(shù)據(jù),如果到 達文件末尾(遇文件結(jié)束符),eof函數(shù)值為非零值,否則為0,所以選項C正 確。3.有以下程序#i nclude <stdio.h>mai n()int a=5,b=1,t;t=(a<<2)|b;prin
2、tf("%dn",t);程序運行后的輸出結(jié)果是A) 1B) 11C) 6D) 21【解析】本題考查位運算,以及按位或操作,將a左移一位相當于是將a乘以了4,所以a<<2等于20, 二進制表示為00010100,與b按位或得到00010101,即 21,所以選項D正確。4.有以下程序#in clude <stdio.h>#defi ne N 5#define M N+1#defin e f(x) (x*M)mai n() int i1,i2;i仁 f(2);i2=f(1+1);prin tf("%d %dn",i1,i2);程序的運
3、行結(jié)果是A) 12 7B) 12 12C) 11 11D) 11 7所以本題中執(zhí)行【解析】本題考查宏定義的用法,宏定義只是做個簡單的替換,f(2)=(2*N+1)=11,執(zhí)行 f(1+1)=(1+1*N+1)=7。選項 D正確。5.有以下程序#i nclude <stdio.h>#include <string.h>struct Aint a;char b10;double c;;void f(struct A t);mai n()struct A a=1001,"Zha ngDa",1098.0;f(a);prin tf("%d,%s,%
4、6.1fn", a.a,a.b,a.c);void f(struct A t)t.a=1002;strcpy(t.b,"Cha ngRo ng");t.c=1202.0;程序運行后的輸出結(jié)果是A) 1002, ZhangDa,1202.0B) 1002,Cha ngRo ng,1202.0C) 1001, Cha ngRo ng,1098.0D) 1001,Zha ngDa,1098.0【解析】本題考查結(jié)構(gòu)體的相關(guān)操作以及傳值、 傳址的區(qū)別,該題中調(diào)用f函數(shù) 后,會生成參數(shù)a的一個副本,而不會改變a的值,所以a值維持原值,選項D 正確。6.假定已建立以下鏈表結(jié)構(gòu),
5、且指針 p和q已指向如圖所示的結(jié)點:則以下選項中可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是A) p->n ext=q->n ext;free(q);B) p=q->n ext;free(q);C) p=q;free(q);D) (*p). next=(*q). next;free(p);【解析】本題考查刪除鏈表中的節(jié)點操作,其方法是將要刪除節(jié)點的上個節(jié)點的 下個節(jié)點指向要刪除節(jié)點的下個節(jié)點,然后釋放該要刪除節(jié)點,所以選項A正確以下結(jié)構(gòu)體類型說明和變量定義中正確的是A) struct REC; int n; char c;REC t1,t2;B) typedef stru
6、ct int n;char c; REC;REC t1,t2;C) typedef struct REC; int n=0; char c='A' t1,t2;D) struct int n;char c; REC;REC t1,t2;【解析】本題考查結(jié)構(gòu)體的相關(guān)知識,選項A中struct REC后面不能有分號,C選項中typedef struct REC的后面也不能有分號,選項 D中REC已經(jīng)是結(jié)構(gòu)體變量,不能當做結(jié)構(gòu)體類型來使用。8.下列函數(shù)的功能是void fun( char *a,char *b)while(*b=*a)!='0') a+;b+;A) 將
7、a所指字符串賦給b所指空間B) 使指針b指向a所指字符串C) 將a所指字符串和b所指字符串進行比較D) 檢查a和b所指字符串中是否有'0'【解析】While循環(huán)條件為:(*b=*a)!='0',執(zhí)行時先把指針a所指向的字符 賦給指針b所在存單兀,如果該字符不是結(jié)束標識"0",執(zhí)行循環(huán)體a+;b+;, 指針a、b分別指向下一個字符單元。再判斷循環(huán)條件,如果成立,繼續(xù)把指針 a所指向的字符賦給指針b所在存單元,直到遇到結(jié)束標識為止。因此A選項正確。9.有以下程序#in clude <stdio.h>void fun( char *a,
8、char *b) while(*a='*') a+;while(*b=*a) b+;a+;mai n() char *s="*a*b*" , t80;fun( s,t); puts(t);程序的運行結(jié)果是A) abB) a*bC)*a*bD) a*b*【解析】在函數(shù)fun (char *a,char *b) 中,while(*a = = '*')a+ 的功能是:如 果*a的容為'*',則a指針向后移動,直到遇到非'*'字符為止,退出循環(huán)進入 下一個while循環(huán),在while(*b = *a)b + ;a +
9、;中,把字符數(shù)組a中的字 符逐個賦給字符數(shù)組b。所以在主函數(shù)中,執(zhí)行fun(s,t)語句后,字符數(shù)組t 中的容為"a*b*"。因此D選項正確。10.以下關(guān)于字符串的敘述中正確的是A) 空串比空格打頭的字符串小B) 兩個字符串中的字符個數(shù)相同時才能進行字符串大小的比較C) 可以用關(guān)系運算符對字符串的大小進行比較D) C語言中有字符串類型的常量和變量【解析】字符串比較大小是以第1個不相同字符的大小為標準的,跟長度沒有關(guān) 系,B選項不正確;字符串比較大小除了使用庫函數(shù) strcn3()以外,就只能靠自 己寫代碼來實現(xiàn)了,而不能通過關(guān)系運算符來比較大小。 因為字符串在表達式中 相當
10、于con st char*,即常字符指針,代表的是字符串的首地址,關(guān)系運算符會 將兩個字符串的首地址值比較大小,這是毫無意義的。C選項不正確。C語言中只有字符串常量而沒有字符串變量,D選項描述不正確;空串的長度為 0,而以空格打頭的字符串的長度至少為1,因此A選項是正確。11.以下程序中函數(shù)f的功能是:當flag為1時,進行由小到大排序;當flag為0 時,進行由大到小排序。#i nclude <stdio.h>void f(i nt b,i nt n ,i nt flag)int i,j,t;for(i=0;i< n-1;i+)for(j=i+1;j <n ;j+)i
11、f(flag ? bi>bj:bi<bj) t=bi;bi=bj;bj=t; mai n()int a10=5,4,3,2,1,6,7,8,9,10,i;f(&a2,5,0);f(a,5,1);for(i=0;i<10;i+)prin tf("%d,",ai);程序運行后的輸出結(jié)果是A) 1,2,3,4,5,6,7,8,9,10,B) 3,4,5,6,7,2,1,8,9,10,C) 5,4,3,2,1,6,7,8,9,10,D) 10,9,8,7,6,5,4,3,2,1,【解析】本題重點考查函數(shù)的參數(shù)傳遞,函數(shù)的參數(shù)傳遞分為傳值和傳地址兩種 情況。
12、本題就是結(jié)合數(shù)組考查參數(shù)傳遞的情形。函數(shù)f完成的功能是對數(shù)據(jù)進行 排序,語句f(&a2,5,0)的作用是對從a2開始的5個元素進行從大到小排序。注意:這里傳遞的是地址&a2,所以排序操作可看作是直接對數(shù)組a操作,執(zhí)行后的結(jié)果為5,4,7,6,3,2,1,8,9,10。語句f(a,5,1)對數(shù)組a的前5個元素從小到大排序,排序后數(shù)組為:3,4,5,6,7,2,1,8,9,10 。因此B選項正確。12.若有定義語句:int a23,*p3;則以下語句中正確的是A) p=a;B) PO=a;C) p0=&a12;D) p1=&a;【解析】A選項錯誤,因為p是指向一個指
13、針數(shù)組,作為數(shù)組名,不能指向別的 地方。B選項錯誤,因為p0是一個int指針,也就是int* ;而a是一個指向 指針的指針int* °C選項正確,因為p0是一個int* ,a12是int,&a12 是int*,類型吻合。D選項錯誤,因為a作為數(shù)組名,不能取地址,即使能取, p1是int* ,&a是int* ,類型不對。因此 C選項正確。13.以下敘述中錯誤的是A) C程序必須由一個或一個以上的函數(shù)組成B) 函數(shù)調(diào)用可以作為一個獨立的語句存在C) 若函數(shù)有返回值,必須通過return語句返回D) 函數(shù)形參的值也可以傳回給對應的實參【解析】形參是函數(shù)定義時由用戶定義的形式
14、上的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是“值傳遞”。因此D選項正確。14.有以下程序#i nclude <stdio.h>mai n() int a=1,b=2;for( ;a<8;a+) b+=a;a+=2;prin tf("%d,%dn",a,b);程序運行后的輸出結(jié)果是A) 9,18B) 8,11C) 7,11D) 10,14【解析】第一次循環(huán)a的值為1,滿足條件,執(zhí)行b+=a與a+=2,則b的值變?yōu)?3, a的值變?yōu)?。執(zhí)行a+,a的值為4,滿足條件進入第二次循環(huán),執(zhí)行完循 環(huán)體后b的值為
15、7,a的值為6。執(zhí)行a+,a的值為7,滿足條件進入第三次循 環(huán),執(zhí)行完循環(huán)體后b的值為14, a的值為9。執(zhí)行a+, a的值變?yōu)?0。所以 選擇D選項?15.在以下給出的表達式中,與 while(E)中的(E)不等價的表達式是A) (E>0|E<0)B) (E=0)C) (! E=0)D) (E!=0)【解析】while語句中條件表達式E的值不為0即為真,認為滿足條件,所以與 B選項中表達式的含義正好相反,選擇B選項。16.若有定義:int a,b;通過語句scan f("%d;%d",&a,&b);能把整數(shù)3賦給變量a, 5賦給變量b的輸入數(shù)據(jù)
16、是A) 3 5B) 3,5C) 3;5D) 35【解析】輸入數(shù)據(jù)的格式必須與scanf()的格式控制串完全匹配,所以輸入時必 須在3和5之間輸入""。以下關(guān)于C語言的敘述中正確的是A)C語言的數(shù)值常量中夾帶空格不影響常量值的正確表示B)C語言中的變量可以在使用之前的任何位置進行定義C)在C語言算術(shù)表達式的書寫中,運算符兩側(cè)的運算數(shù)類型必須一致D)C語言中的注釋不可以夾在變量名或關(guān)鍵字的中間【解析】C語言的數(shù)值常量中不能夾帶空格,所以 A錯誤。C語言中的變量都必 須先定義再使用,對變量的定義通常放在函數(shù)體的前部,但也可以放在函數(shù)外部 或復合語句的開頭,不能隨便放置,所以B錯誤
17、。在C語言中運算符兩側(cè)的運算 數(shù)據(jù)類型可以不一致,且結(jié)果與精度較高的保持一致,所以 C錯誤?18.一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯(lián)系是()A) 1 : 1聯(lián)系B) 1 : m聯(lián)系C) m : 1聯(lián)系D)m : n聯(lián)系【解析】因為一個教師可講授多門課程,而一門課程又能由多個老師講授所以他 們之間是多對多的關(guān)系,可以表示為 m n。19.負責數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。A)數(shù)據(jù)定義語言B)數(shù)據(jù)管理語言C)數(shù)據(jù)操縱語言D)數(shù)據(jù)控制語言【解析】數(shù)據(jù)定義語言:負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱 語言:負責數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作
18、;數(shù)據(jù)控制語言:負責數(shù) 據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等功能。F面描述中錯誤的是()A)系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設(shè)計B)軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程C)數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一D)PAD圖是軟件詳細設(shè)計的表示工具【解析】詳細設(shè)計的任務(wù)是為軟件結(jié)構(gòu)圖中而非總體結(jié)構(gòu)圖中的每一個模塊確 定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細 節(jié),所以A)錯誤。21.某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根 結(jié)點在第1層)()。A)3B)4C)6D)7【解析】根據(jù)二叉樹的基本性質(zhì) 3:在任意一棵二叉樹中
19、,度為0的葉子結(jié)點總 比度為2的結(jié)點多一個,所以本題中度為2的結(jié)點為1- 1 = 0個,所以可以知道 本題目中的二叉樹的每一個結(jié)點都有一個分支, 所以共7個結(jié)點共7層,即度為 7。22.下列敘述中正確的是()。A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化D)以上說法均不正確解析】棧是先進后出的數(shù)據(jù)結(jié)構(gòu),在整個過程中,棧底指針不變,入棧與出棧操 作均由棧頂指針的變化來操作,所以選擇 C)。23.下列關(guān)于棧敘述正確的是()。A)棧頂元素最先能被刪除B)棧頂元素最后才能
20、被刪除C)棧底元素永遠不能被刪除D)棧底元素最先被刪除解析】棧是先進后出的數(shù)據(jù)結(jié)構(gòu),所以棧頂元素最后入棧卻最先被刪除。 棧底元 素最先入棧卻最后被刪除。所以選擇 A)。24.有以下程序:#i nclude <stdio.h>mai n() un sig ned char a= 2,b = 4,c = 5,d;d = a|b;d & = c;pri ntf("%dn",d); 程序運行后的輸出結(jié)果是()。A) 3B) 4C) 5D)6【解析】&按位與,如果兩個相應的二進制位都為 1,則該位的結(jié)果值為1,否 則為0。|按位或,兩個相應的二進制位中只要
21、有一個為 1,該位的結(jié)果值為1。2的二進制為00000010,4的二進制為00000100,所以做或運算結(jié)果為 00000110, 該數(shù)與5即00000101做與操作結(jié)果為00000100,即4。25.以下敘述中錯誤的是()。A)使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題B)結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成C)C語言是一種結(jié)構(gòu)化程序設(shè)計語言D)結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法正確答案:A 答疑:【解析】使用順序,選擇(分支),循環(huán)三種基本結(jié)構(gòu)構(gòu)成的程序可以解決 所有問題,而不只是解決簡單問題,所以 A)錯誤。26. 數(shù)據(jù)庫應用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設(shè)計。27.耦合性和聚性是對
22、模塊獨立性度量的兩個標準。下列敘述中正確的是()。A)提高耦合性降低聚性有利于提高模塊的獨立性B)降低耦合性提高聚性有利于提高模塊的獨立性C)耦合性是指一個模塊部各個元素間彼此結(jié)合的緊密程度D)聚性是指模塊間互相連接的緊密程度正確答案:B答疑:【解析】模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且 與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計,應盡量做到高聚, 低耦合,即減弱模塊之間的耦合性和提高模塊的聚性, 有利于提高模塊的獨立性, 所以A)錯誤,B)正確。耦合性是模塊間互相連接的緊密程度的度量而聚性是指 一個模塊部各個元素間彼此結(jié)合的緊密程度,所以C)與D)錯誤。27.
23、軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤, 所以選項A)錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準則有:所有測試都應追溯到需求、嚴格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。28. 編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有C)教務(wù)管理系統(tǒng)才是應用軟件。30.冒泡排序與簡單插入排序與簡單選擇排序法在最壞情況下均需要比較n(n -1)/2次,而堆排序在最壞情況下需要比較的次數(shù)是3
24、1.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是()。A) 10B) 8C)6D)4正確答案:C答疑:【解析】根據(jù)二叉樹的基本性質(zhì) 3:在任意一棵二叉樹中,度為0的葉子 節(jié)點總是比度為2的節(jié)點多一個,所以本題中是 5+ 1=6個。29. 棧支持子程序調(diào)用。 棧是一種只能在一端進行插入或刪除的線性表,在主程序調(diào)用子函數(shù)時要首先保存主程序當前的狀態(tài), 然后轉(zhuǎn)去執(zhí)行子程序,最終 把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,因此本題的答案為 A)。33.以下敘述中正確的是()。A)當對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導致數(shù)據(jù)丟失B)
25、打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆C)在一個程序中當對文件進行了寫操作后,必須先關(guān)閉該文件然后再打開,才 能讀到第1個數(shù)據(jù)D)C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)正確答案:A答疑:【解析】B)選項中打開一個已存在的文件并進行了寫操作后,原有文件中 的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進行追加操作等。C)選項中在一個程 序中當對文件進行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進行重新定位即可。D)選項中,C語言中的文件可 以進行隨機讀寫。34.有以下程序:#i nclude <stdio.h>#i
26、 nclude <stdlib.h>mai n() int *a,*b,*c;a= b= c = (int *)malloc(sizeof(i nt);*a = 1;*b = 2;*c = 3;a= b;printf("%d, %d %dn",*a,*b,*c);程序運行后的輸出結(jié)果是()。A) 1 , 1, 3B) 2 , 2, 3C) 1 , 2, 3D) 3 , 3, 3正確答案:D答疑:【解析】malloc函數(shù)動態(tài)分配一個整型的存空間,然后把函數(shù)返回的地 址用(int*)強制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b, c都指向剛申請的
27、存空間。所以只有最后一個賦值語句*c二3的值保留在了該空間,因為a,b,c三個指針變量均指向該空間,所以打印該空間的數(shù)值為3。35.有以下程序:#i nclude <stdio.h>mai n() un sig ned char a = 2,b = 4,c = 5,d;d = a|b;d & = c;pri ntf("%dn",d);程序運行后的輸出結(jié)果是()。A) 3B) 4C) 5D) 6 正確答案:B答疑:【解析】&按位與,如果兩個相應的二進制位都為 1,則該位的結(jié)果值為 1,否則為0o |按位或,兩個相應的二進制位中只要有一個為 1,該位
28、的結(jié)果值 為1o 2的二進制為00000010,4的二進制為00000100,所以做或運算結(jié)果為00000110,該數(shù)與5即00000101做與操作結(jié)果為00000100,即4。36.有以下程序:#i nclude <stdio.h>#defi ne PT 3.5;#defi ne S(x) PT*x*x ;mai n() int a = 1,b = 2;pri ntf("%4.1fn",S(a+ b);程序運行后的輸出結(jié)果是()。A) 7.5B) 31.5C) 程序有錯無輸出結(jié)果D) 14.0正確答案:C答疑:【解析】宏定義不是C語句,末尾不需要有分號。所以語
29、句printf("%4.1fn" ,S(a + b);展開后為 printf("%4.1fn" ,3.5;*a+ b*a +b;);所以程序會出現(xiàn)語法錯誤。37.有以下程序:#i nclude <stdio.h>struct S int a,b; data2 = 10,100,20,200;mai n() struct S p = data1;prin tf("%dn",+ (p.a);程序運行后的輸出結(jié)果是()。A)10B)11C)20D)21正確答案:D答疑:【解析】聲明data是結(jié)構(gòu)S數(shù)組。初始化dataO.a =
30、10; dataO.b =100; data1.a = 20; data1.b = 200。主函數(shù)中 p= data1; 即 p.a = data1.a ; p.b = data1.b ;執(zhí)行語句 printf("%dn",+ + (p.a);打印輸出時p.a 先增1再打印。p.a = data1.a = 20,先增1等于21。38.以下敘述中錯誤的是()。A)可以通過typedef增加新的類型B)可以用typedef將已存在的類型用一個新的名字來代表C)用typedef定義新的類型名后,原有類型名仍有效D)用typedef可以為各種類型起別名,但不能為變量起別名正確答案:
31、A答疑:【解析】關(guān)鍵字typedef的作用只是將C語言中的已有的數(shù)據(jù)類型作了置 換,并不是增加新的類型,所以 A)錯誤。39.在一個C源程序文件中所定義的全局變量,其作用域為()。A)由具體定義位置和extern說明來決定圍B)所在程序的全部圍C)所在函數(shù)的全部圍D)所在文件的全部圍正確答案:A答疑:【解析】全局變量的作用域是從聲明處到文件的結(jié)束。所以選擇A)40.有以下程序:#i nclude <stdio.h>int fun() static int x = 1;x* = 2;return x;mai n() int i,s = 1;for(i = 1;i< = 3;i
32、+ ) s* = fun ();prin tf("%dn",s);程序運行后的輸出結(jié)果是()。A) 10B) 30C) 0D) 64正確答案:D答疑:【解析】本題目中靜態(tài)局部變量x,在靜態(tài)存儲區(qū)分配存儲單元,在程序整個運行期間都不釋放。所以第一次循環(huán)s的值為2,第二次循環(huán)中,返回的x的值為4,所以s的值為8,第三次循環(huán),返回的x的值為8,所以s的值為64。41.有以下函數(shù):int fun( char *x,char *y) intn = 0;while (*x= = *y) && *x!='0') x + ;y + ;n + ;return
33、n;函數(shù)的功能是()。A) 將y所指字符串賦給x所指存儲空間B) 查找x和y所指字符串中是否有'0'C) 統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)D) 統(tǒng)計x和y所指字符串中相同的字符個數(shù)正確答案:C答疑:【解析】本題中由循環(huán)條件可知遇到0'或x與y所指的字符的值不等中 的一個條件時就結(jié)束,所以功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字 符個數(shù)。42.有以下程序:#i nclude <stdio.h>void swap(char *x,char *y) char t;t = *x;*x = *y;*y = t;mai n() char *s1=&q
34、uot;abc", *s2="123"swap(s1 , s2);printf("%s , %sn",s1 , s2);程序執(zhí)行后的輸出結(jié)果是()。A) 321 , cbaB) abc , 123C) 123 , abcD) 1bc , a23正確答案:D答疑:【解析】字符串是一個特殊的數(shù)組,所以按照數(shù)組的規(guī)則,s1應該指向的是數(shù)組的首地址,即"abc"的第一個字符的地址。s2指向的是"123"的第一個 字符的地址。調(diào)用swap函數(shù)之后交換的是兩個字符串的第一個字符'a'和'1
35、39;的 容,所以打印輸出為D)。以下不能將s所指字符串正確復制到t所指存儲空間的是()A) do*t + + = *s + ;while(*s );B) for(i = O;ti = si;i + + );C) while(*t = *s)t + ;s + + D) for(i 二0,j 二O;ti + + 二sj + ;);正確答案:A答疑:【解析】do*t + + = *s + + ;while(*s); 不能因為當*s ='0'時, while(*s)跳出循環(huán),這樣字符串結(jié)束標志'0'沒有復制給*t,造成*t不完整。注意,*t + + = *s +是先執(zhí)
36、行t = *s ,然后才進行t = t + 1, s = s+ 1 o B), C), D)都能將'0'復制過去。44.以下語句中存在語法錯誤的是()。A) char ss620;ss1= "right?"B) char ss()20= "right?"C) char *ss6;ss1= "right?"D) char *ss()= "right?"正確答案:A答疑:【解析】數(shù)組定義后,不可以對數(shù)組整體賦值,s是二維數(shù)組,因ss1是一維字符數(shù)組,即字符串,字符串賦值可以使用 strcpy(ss1 ,
37、"right"); 這樣的形式,而選項A)中對二維數(shù)組中的第“ 1”維(相當于一個一維數(shù)組)賦值, 是不可以的。選項B)和D)是定義時對數(shù)組初始化,這是可以的。選項C)中,將字符串在存中的首地址賦給指針數(shù)組的一個元素,這是可以的。45.#i nclude <stdio.h>mai n() int b33 二0,1,2,0,1,2,0,1,2,i,j,t二 1;for(i = 0;i<3;i+ +)for(j 二 i;j< 二 i;j + + ) t + = bibji;prin tf("%dn",t);程序運行后的輸出結(jié)果是()A
38、) 3B) 4C) 1D) 9正確答案:B答疑:【解析】每次循環(huán)只循環(huán)一次就結(jié)束,第一次外循環(huán)時t = t + bObOO =1 + b00 = 1 + 0= 1;第二次外循環(huán)時 t = t + b1b11= 1 + b11=1+ 1 = 2;第三次外循環(huán)時 t = t + b2b22= 2+ b22 = 2+ 2= 4。46.下列定義數(shù)組的語句中,正確的是()。A) #defi ne N 10int xN;B) int N = 10;int xN;C) int x0.10;D)int x;正確答案:A答疑:【解析】數(shù)組說明的一般形式為:類型說明符數(shù)組名常量表達式B)中N是變量,不能用變量定義
39、數(shù)組長度。C)選項中數(shù)組長度是非法的一串數(shù)字。 定義數(shù)組時必須為其指明長度,D)選項中數(shù)組長度為空,所以非法。47.有以下程序:#i nclude <stdio.h> mai n() int n,*p = NULL;*p = &n;prin tf("l nput n:");sca nf("%d",&p);pri ntf("output n");pri ntf("%dn",p);該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯誤,以下語句 正確的是()A) int n,*p =
40、NULL;B) *p = &n;C) sca nf("%d",&p)D) pri ntf("%dn",p);正確答案:A答疑:【解析】選項B)的正確寫法應為p = &n;選項C)的正確寫法應為scanf("%d",p);選項 D)的正確寫法應為 printf("%dn",*p)。48.有以下程序:#i nclude <stdio.h>int add( int a,i nt b) retur n (a+ b);mai n() int k,(*f)(),a= 5,b = 10;f =
41、 add;則以下函數(shù)調(diào)用語句錯誤的是()。A) k 二 f(a,b);B) k = add(a,b);C) k 二(*f)(a,b);D) k = *f(a,b);正確答案:D答疑:【解析】D)選項中*f(a , b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針, 即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。49.若有定義:float x= 1.5; int a= 1,b = 3,c = 2;則正確的 switch 語句是()。A) switch(a + b) case 1 : printf("*n");case 2 + 1: printf("*n&qu
42、ot;); B) switch(i nt)x); case 1 : printf("*n");case 2 : printf("*n"); C) switch(x) case 1.0: printf("*n");case 2.0 : printf("*n"); D) switch(a + b) case 1 : printf("*n");case c : printf("*n"); 正確答案:A答疑:【解析】B)選項中switch(int)x);語句中不應該有最后的分號。 s
43、witch(expr1) 中的expr1不能用浮點類型或long類型,也不能為一個字符串, 所以C)錯誤o case后面常量表達式的類型必須與switch后面表達式的類型一致, 所以D)錯誤。50.有以下程序:#i nclude <stdio.h>mai n() int x = 1,y = 0;if(!x)y + +;else if (x = = 0)if(x) y + = 2;else y + = 3;prin tf("%dn",y);程序運行后的輸出結(jié)果是()A) 3B) 2C) 1D) 0正確答案:D答疑:【解析】在if else語句中else總是與離它最
44、近的if配對。本題目中x 為1所以!x為0,所以執(zhí)行else if語句中的容,判斷(x = = 0)是否成立,因為 x為1所以條件不成立,所以else if 部的ifelse語句不再執(zhí)行,所以y的 值還是初始值0。51.(x y)?(x +若有定義int x,y;,并已正確給變量賦值,則以下選項中與表達式 + ):(y + + )中的條件表達式(x y)等價的是()。A) (x y<0|x y>0)B) (x y<0)C) (x y>0)D) (x y = = 0)正確答案:A答疑:【解析】條件表達式:x =表達式1?表達式2:表達式3的含義是:先求 解“表達式” 1,
45、若為非0(真),則求解“表達式2”,將“表達式2”的值賦給 x。若“表達式1”的值為0(假),則求解“表達式3”,將“表達式3”的值賦 給x。在本題中與“表達式1”: (x y)等價的是(x y<0|x y>0)。52. z = x + ,y + , + y;因為賦值運算符的優(yōu)先級高于逗號運算符的優(yōu)先級,所以可以將上式表示成(z = x + + ),(y + ),( + y)。然后從左向右先 計算表達式z = x + +,因為x+先使用后自增,所以z的值為1,x的值為2。再計算逗號表達式第二個表達式y(tǒng)+ +,此時y的值為2,最后計算第三個表達式+ y, y的值為3。設(shè)變量已正確定義
46、并賦值,以下正確的表達式是 ()A)x = y + z + 5, + + yB)in t(15.8%5)C)x = y*5 = x+ zD)x = 25%5.0正確答案:A答疑:【解析】B)與D)選項中取模運算符的左右兩個操作數(shù)均應為整數(shù),所以B)、D)錯誤。C)選項中不能將x+ y的值賦給表達式y(tǒng)*5,所以C)錯誤。54. C語言中標識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。55. 以下選項中,能用作數(shù)據(jù)常量的是()。A)115L B) 0118 C) 1.5e1.5 D) o115正確答案:A答疑:【解析】A)選項中115L表示115是長整型數(shù)據(jù),合法。B)選項是八進制 常量的表示方法,但是在八進制中不能含有數(shù)字 8,所以B)錯誤。C)選項中e 后面應該是整數(shù)不能是小數(shù)1.5,所以C)錯誤。D)選項中八進制常量應該是數(shù)字 "0"開始,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 常州工學院《跨媒體數(shù)據(jù)可視化》2023-2024學年第二學期期末試卷
- 質(zhì)量管理基礎(chǔ)概念與重要性
- 應天職業(yè)技術(shù)學院《泌尿生殖與內(nèi)分泌系統(tǒng)醫(yī)學教程》2023-2024學年第二學期期末試卷
- 跨區(qū)域教育資源共享的實踐與成效
- 常德科技職業(yè)技術(shù)學院《社會調(diào)查(2)》2023-2024學年第二學期期末試卷
- 西安財經(jīng)大學《英語Ⅲ》2023-2024學年第二學期期末試卷
- 2025屆延安市志丹縣五下數(shù)學期末復習檢測試題含答案
- 大連藝術(shù)學院《戲劇創(chuàng)作與實踐》2023-2024學年第二學期期末試卷
- 鄭州醫(yī)藥健康職業(yè)學院《工程管理導論》2023-2024學年第二學期期末試卷
- 甘肅農(nóng)業(yè)職業(yè)技術(shù)學院《動物性食品加工學》2023-2024學年第二學期期末試卷
- 電機與電氣控制技術(shù)(第2版)全套完整教學課件
- 掘進機液壓培訓課件
- 多元線性回歸模型-課件
- 農(nóng)產(chǎn)品質(zhì)量安全風險防范措施
- 麻醉科臨床技術(shù)操作規(guī)范2022版
- 奉賢東部分區(qū)單元(FX3)地質(zhì)災害危險性評估報告
- 現(xiàn)代企業(yè)管理專業(yè)實踐考核試題
- 支氣管鏡吸痰操作考核評分標準
- 2023年病歷書寫基本規(guī)范文
- 《中小學心理健康教育指導綱要(2012年修訂)》
- 新疆民族發(fā)展史和宗教演變史
評論
0/150
提交評論