2017年計算機二級考試C語言備考習題
以下是百分網小編為大家整理的2017年計算機二級考試C語言備考習題,大家可以來做一做,鞏固一下自己的知識。
選擇題
1.在深度為5的滿二叉樹葉中,葉子結點的個數為( )。
A.32
B.31
C.16
D.15
2.軟件生命周期中,花費最多的階段是( )。
A.詳細設計
B.軟件編碼
C.軟件測試
D.軟件維護
3.視圖設計一般有3種設計次序,下列不屬于視圖設計次序的是( )。
A.自頂而下
B.由內向外
C.由外向內
D.自底向上
4.下列數據結構中,能用二分法進行查找的是( )。
A.順序存儲的有序線性表
B.結性鏈表
C.二叉鏈表
D.有序線性鏈表
5.以下敘述中錯誤的是( )。
A.對于double類型數組,不可以直接用數組名對數組進行整體輸入或輸出
B.數組名代表的是數組所占存儲區的首地址,其值不可改變
C.當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界”的出錯信息
D.可以通過賦初值的方式確定數組元素的個數
6.以下只有在使用時才為該類型變量分配內存的存儲類型說明是( )。
A.auto和static
B.auto和register
C.register和static
D.extern和register
7.下列可作為C語言賦值的語句的是( )。
A.x一3,y=5
B.a=b=6
C.i--;
D.a,c
8.若整型變量a、b、c、d中的值依次為2、2、3、4,則條件表達式a A.1
B.2
C.3
D.4
9.下列敘述中錯誤的是( )。
A.線性表是由n個元素組成的一個有限序列
B.線性表是一種線性結構
C.線性表的所有結點有且僅有一個前件和后件
D.線性表可以是空表
10.以下程序執行后sum的值是( )。
main()
{ int i,sum;
for(i=1;i<6;i++)sum+=i:
printf("1%d\n",sum):
}
A.15
B.14
C.不確定
D.0
11.設j為Int型變量,則下面for循環語句的執行結果是( )。
for(j=10;j>3;j--)
{ if(j%3)j--;
--j;--j;
printf("%d",j);
}
A.6 3
B.7 4
C.6 2
D.7 3
12.表示關系X<=Y<=Z的C語言表達式為( )。
A.(X<=Y)&&(Y<=Z)
B.(X<=Y)AND(Y<=Z)
C.(X<=Y<=Z)
D.(X<一Y)&(Y<一Z)
13.設有如下定義:
int arr[]={6,7,8,9,10);
int*ptr:
ptr=arr;
*(ptr2)=2;
printf("%d,%d\n",*ptr,*(ptr2)):
則下列程序段的輸出結果為( )。
A.8,10
B.6,8
C.7,9
D.6,2
14.設有定義語句:
int x[-6]={2,4,6,8,5,7),*p=X,i;
要求依次輸出X數組6個元素中的值,不能完成此操作的語句是( )。
A.for(i=0;i<6;i++)printf("%2d",*(p++));
B.for(i=0;i<6;i++)printf("%2d",*(pq-i));
C.for(i=0;i<6;i++)printf("%2d",*p++);
D.for(i=0;i<6;i++)printf("%2d",*(p)++);
15.數字字符0的ASCII值為48,運行以下程序的輸出結果是( )。
main()
( char a=’1’,b=’2’;
printf("%C,",b++);printf("%d\n",b—a);}
A.3,2
B.50,2
C.2,2
D.2,50
16.設有如下定義:
int(*ptr)();
則以下敘述中正確的是( )。
A.ptr是指向一維組數的指針變量
B.ptr是指向int型數據的指針變量
C.ptr是指向函數的指針,該函數返回一個int型數據
D.ptr是一個函數名,該函數的返回值是指int型數據的指針
17.設有定義的語句:“char c1=92,c2=92;”,則以下表達式中的值為零的是( )。
A.c1^c2
B.c1&c2
C.~c2
D.c1 | c2
18.以下程序的輸出結果是( )。
void fun(int*a,int i,int i)
{int t;
if(i { t=a[i[;a[i]=a[j];a[j]一t;
i++;j--;
fun(a,i,j);
}
}
main()
{ int K[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;i<1;i++)printf("%2d",x[i]);
printf("\n");
}
A.1,2,6,8
B.8,6,2,1
C.8,1,6,2
D.8,6,1,2
19.有以下程序:
main()
{int i,j;
for(j=10;j<11;j++)
{ for(i=9;i if(!(j%i))break;
if(i==j-1)
printf("%d",j);
}
}
輸出結果是( )。
A.11
B.10
C.9
D.10 11
參考答案:
1.C。【解析】根據二叉樹的性質及定義,一棵深度為k 且有2k-1個結點的二叉樹為滿二叉樹。滿二叉樹的葉子結點為最后一層的結點數,又根據滿二叉樹的性質,在滿二叉樹的第i層上至多有2i-1個結點。因此深度為5的滿二叉樹的葉子結點數為25-1=16個。
2.D。【解析】本題考查對軟件生命周期的理解,軟件生命周期整體上可分為定義階段、開發階段和維護階段。其中定義階段包括可行性研究與計劃制訂和需求分析;開發階段包括概要設計、詳細設計、開發和測試;維護階段是一個單獨階段,不包含在開發階段內,它是所花費用最多的一個階段。
3.C。【解析】視圖設計的設計次序分3種:自頂向下、自底向上和由內向外。它們為視圖設計提供了具體的操作方法,設計者可根據實際情況靈活掌握。
4.A。【解析】二分法查找只用于順序存儲的有序線性表,而順序查找用在順序存儲的非有序線性表和線性鏈表。
5.C。【解析】數組下標從0開始,當數組元素的下標超出了定義的范圍時,系統不會出“下標越界”的信息,運行會出錯,因此在編程時務必檢查下標是否越界。
6.B。【解析】在用靜態static與外部extern定義變量時,系統立刻給其分配內存,而定義自動類auto與強制放入寄存器register類型變量時,只有當使用時才分配內存。
7.C。【解析】本題考查賦值語句,而選項A、B是表達式,不合題意,選項D中強制類型轉換,應把類型名用括號括起來,選項C中i--也可寫成i=i-1,故選擇c選項。
8.C。【解析】本題考查三目運算符a 9.C。【解析】線性表可以是空表,在線性表中,第一個結點沒有前驅結點(前件),最后一個結點沒有后繼結點,其他結點有且只有一個前驅點(后繼點)。
10.C。【解析】sum+=i等價于sun+i,在本題中sum 沒有賦初值,而題中只輸出sum的值,因此整個結果為不確定值。
11.B。【解析】當j=10時,for循環成立,j%3為1,if條件也為真,當執行完j--后,j為9,再執行“--j;--J;”后,j的值為7,因此輸出7,繼續循環執行j--后j為6,當j
=6時for循環成立,j%3為0,if條件為假,此時執行“-- j;--j;”后,j為4,輸出4,再繼續循環執行j--后j為3,當j=3時,for循環不成立,退出循環,故選擇8選項。
12.A。【解析】題中X<=Y<=Z的意思為X<=Y 并且Y<=Z,在c語言中,要表示“且”的關系,應用“與”邏輯運算符,即“&&”,故選擇A選項。
13.D。【解析】程序中ptr指針指向數組art的首地址,*ptr=arr[0]=6,*(ptr2)=2,故選D。
14.D。【解析】本題要求輸出每個元素的值,D選項中(*p)++等價于*p=*p+1,其僅僅是對*p加1,并沒有達到輸出其每個值的作用。
15.C。【解析】b++是先用表達式的值然后自增l,因此表達式值為’2 ’,b為’3 ’;b-a=’3 ’-’1’=2,因此最后輸出的結果為2,2,前一個為字符2,后一個為數字2。
16.C。【解析】本題中int(*ptr)()的含義是指向函數
的指針變量,其為指向函數的指針變量,該函數返回一個int 型數據,故選擇C選項。
17.A。【解析】當值相同時按位異或,則為0,按位或與按位與時仍不變,負數也為非0。
18.C。【解析】本題用了函數調用,fun中if語句成立則進行i,j的交換,用到主函勢中則為把下標為0、3,1、2互換,因此,當執行完后X的數組為8,1,6,2,故選擇C選項。
19.B。【解析】本題考多循環的使用,當j=10,i=9時, 循環成立,第一個if條件為假,第二個if條件i==j-1成立,則輸出j的值為10,接者執行i++后,i為10;當i為10,for循環不成立,退出內層循環,此時執行j++后,j為11,循環不成立,退出循環。
20.D。【解析】scanf函數讀取的是char型數據,所以回車時輸入的換行符也是有效字符。于是cl,c2,c3,c4的內容分別是1,2,3,’\n’。
【計算機二級考試C語言備考習題】相關文章:
計算機二級考試C語言備考復習題201710-11
2017計算機二級C語言備考習題及答案08-02
計算機二級C語言備考習題及答案201710-09
2017年計算機二級C語言備考習題10-16
計算機等級考試二級C語言筆試精選習題06-06
2017年計算機二級考試C語言備考練習題09-09
計算機二級考試C語言鞏固習題及答案10-24
計算機二級考試C語言強化習題和答案07-21