二級c語言筆試真題及答案下載,二級c語言筆試真題及答案下載

本文目錄一覽:

急!!歷年國家計算機二級c語言筆試真題答案。

2010年9月全國計算機二級C語言筆試試題:文字版

一、選擇題(每小題2分,共70分)

下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填塗在答題卡相應位置上,答在試卷上不得分。

(1)下列敘述中正確的是

A)線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的

B)線性表的鏈式存儲結構所需要的存儲空間一般要多於順序存儲結構

C)線性表的鏈式存儲結構所需要的存儲空間一般要少於順序存儲結構

D)上述三種說法都不對

(2)下列敘述中正確的是

A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化

B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化

C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化

D)上述三種說法都不對

(3)軟件測試的目的是

A)評估軟件可靠性

B)發現並改正程序中的錯誤

C)改正程序中的錯誤

D)發現程序中的錯誤

(4)下面描述中,不屬於軟件危機表現的是

A)軟件過程不規範

B)軟件開發生產率低

C)軟件質量難以控制

D)軟件成本不斷提高

(5)軟件生命周期是指

A)軟件產品從提出、實現、使用維護到停止使用退役的過程

B)軟件從需求分析、設計、實現到測試完成的過程

C)軟件的開發過程

D)軟件的運行維護過程

(6)面向對象方法中,繼承是指

A)一組對象所具有的相似性質

B)一個對象具有另一個對象的性質

C)各對象之間的共同性質

D)類之間共享屬性和操作的機制

(7)層次型、網狀型和關係型數據庫劃分原則是

A)記錄長度

B)文件的大小

C)聯繫的複雜程度

D)數據之間的聯繫方式

(8)一個工作人員可以使用多台計算機,而一台計算機可被多個人使用,則實體工作人員、與實體計算機之間的聯繫是

A)一對一

B)一對多

C)多對多

D)多對一

(9)數據庫設計中反映用戶對數據要求的模式是

A)內模式

B)概念模式

C)外模式

D)設計模式

(10)有三個關係R、S和T如下:

則由關係R和S得到關係T的操作是

A)自然連接

B)交

C)投影

D)並

(11)以下關於結構化程序設計的敘述中正確的是

A)一個結構化程序必須同時由順序、分支、循環三種結構組成

B)結構化程序使用goto語句會很便捷

C)在C語言中,程序的模塊化是利用函數實現的

D)由三種基本結構構成的程序只能解決小規模的問題

(12)以下關於簡單程序設計的步驟和順序的說法中正確的是

A)確定算法後,整理並寫出文檔,最後進行編碼和上機調試

B)首先確定數據結構,然後確定算法,再編碼,並上機調試,最後整理文檔

C)先編碼和上機調試,在編碼過程中確定算法和數據結構,最後整理文檔

D)先寫好文檔,再根據文檔進行編碼和上機調試,最後確定算法和數據結構

(13)以下敘述中錯誤的是

A) C程序在運行過程中所有計算都以二進制方式進行

B)C程序在運行過程中所有計算都以十進制方式進行

C)所有C程序都需要編譯鏈接無誤後才能運行

D)C程序中整型變量只能存放整數,實型變量只能存放浮點數

(14)有以下定義:int a; long b; double x,y;則以下選項中正確的表達式是

A)a%(int)(x-y)

B)a=x!=y;

C)(a*y)%b

D)y=x+y=x

(15)以下選項中能表示合法常量的是

A)整數:1,200

B)實數:1.5E2.0

C )字符斜杠:‘\’

D)字符串:”\007″

(16)表達式a+=a-=a=9的值是

A)9

B)_9

C)18

D)0

(17)若變量已正確定義,在if (W)printf(“%d\n,k”);中,以下不可替代W的是

A)a<>b+c

B)ch=getchar()

C)a==b+c

D)a++

(18)有以下程序

#includestdio.h

main()

{int a=1,b=0;

if(!a) b++;

else if(a==0)if(a)b+=2;

else b+=3;

printf(”%d\n”,b);

程序運行後的輸出結果是

A)0

B)1

C)2

D)3

(19)若有定義語句int a, b;double x;則下列選項中沒有錯誤的是

A)switch(x%2) B)switch((int)x/2.0

{case 0: a++; break; {case 0: a++; break;

case 1: b++; break; case 1: b++; break;

default : a++; b++; default : a++; b++;

} }

C)switch((int)x%2) D)switch((int)(x)%2)

{case 0: a++; break; {case 0.0: a++; break;

case 1: b++; break; case 1.0: b++; break;

default : a++; b++; default : a++; b++;

} }

(20)有以下程序

#include stdio.h

main()

{int a=1,b=2;

while(a6){b+=a;a+=2;b%二10;}

printf(”%d,%d\n”,a,b);

程序運行後的輸出結果是

A)5,11

B)7,1

C)7,11

D)6,1

(21)有以下程序

#include<stdio.h

main()

{int y=10;

while(y–);

printf(”Y=%d\n”,Y);

程序執行後的輸出結果是

A)y=0

B)y= -1

C)y=1

D)while構成無限循環

(22)有以下程序

#include<stdio .h

main()

{char s〔」=”rstuv”;

printf(”%c\n”,*s+2);

程序運行後的輸出結果是

A)tuv

B)字符t的ASCII碼值

C)t

D)出錯

(23)有以下程序

#include<stdio.h

#include<string.h

main()

{char x〔〕=”STRING”;

x〔0」=0;x〔1〕=’\0’;x〔2」=’0’;

printf(”%d %d\n”,sizeof(x),strlen(x));

程序運行後的輸出結果是

A)6 1

B)7 0

C)6 3

D)7 1

(24)有以下程序

#include<stdio.h

Int f(int x);

main()

{int n=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

int f(int x)

{return x*2;}

程序運行後的輸出結果是

A)1

B)2

C)4

D)8

(25)以下程序段完全正確的是

A)int *p; scanf(”%d”,&p);

B)int *p; scanf(“%d”,p);

C)int k, *p=k; scanf(”%d”,p);

D)int k, *p:; *p= k; scanf(“%d”,p);

(26)有定義語句:int *p[4];以下選項中與此語句等價的是

A)int p[4];

B)int **p;

C)int *(p「4」);

D)int (*p)「4」;

(27)下列定義數組的語句中,正確的是

A)int N=10; B)#define N 10

int x[N]; int x[N];

C)int x[0..10〕; D)int x〔〕;

(28)若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是

A)int a[5]={0};

B)int b[]={0,0,0,0,0};

C)int c[2+3];

D)int i=5,d[i];

(29)有以下程序

#include<stdio.h

void f(int *p);

main()

{int a〔5〕={1,2,3,4,5},*r=a;

f(r);printf(”%d\n”;*r);

void f(int *p)

{p=p+3;printf(”%d,”,*p);}

程序運行後的輸出結果是

A)1,4

B)4,4

C)3,1

D)4,1

(30)有以下程序(函數fun只對下標為偶數的元素進行操作)

# include<stdio.h

void fun(int*a;int n)

{int i、j、k、t;

for (i=0;i<n一1;1+=2)

{k=i;‘

for(j=i;jn;j+=2)if(a〔j〕a〔k])k=j;

t=a〔i];a〔i]=a〔k];a〔k]=t;

main()

{int aa「10」={1、2、3、4、5、6、7},i;

fun(aa、7);

for(i=0,i7; i++)printf(”%d,”,aa〔i〕));

printf(”\n”);

程序運行後的輸出結果是

A)7,2,5,4,3,6,1

B)1,6,3,4,5,2,7

C)7,6,5,4,3,2,1

D)1,7,3,5,6;2,1

(31)下列選項中,能夠滿足“若字符串s1等於字符串s2,則執行ST”要求的是

A)if(strcmp(s2,s1)==0)ST;

B)if(sl==s2)ST;

C)if(strcpy(s l ,s2)==1)ST;

D)if(sl-s2==0)ST;

(32)以下不能將s所指字符串正確複製到t所指存儲空間的是

A)while(*t=*s){t++;s++;}

B)for(i=0;t[i]=s[i〕;i++);

C)do{*t++=*s++;}while(*s);

D)for(i=0,j=0;t[i++]=s[j++];);

(33)有以下程序( strcat函數用以連接兩個字符串)

#include<stdio.h

#include<string .h

main()

{char a〔20〕=”ABCD\OEFG\0”,b〔〕=”IJK”;

strcat(a,b);printf(”%s\n”,a);

程序運行後的輸出結果是

A)ABCDE\OFG\OIJK

B)ABCDIJK

C)IJK

D)EFGIJK

(34)有以下程序,程序中庫函數islower (ch)用以判斷ch中的字母是否為小寫字母

#include<stdio.h

#include<ctype.h>

void fun(char*p)

{int i=0;

while (p[i〕)

{if(p[i]==’ ’&& islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’;

i++;

main()

{char s1〔100〕=”ab cd EFG!”;

fun(s1); printf(”%s\n”,s1);

程序運行後的輸出結果是

A)ab cd EFG!

B)Ab Cd EFg!

C)aB cD EFG!

D)ab cd EFg!

(35)有以下程序

#include<stdio.h

void fun(int x)

{if(x/2>1)fun(x/2);

printf(”%d”,x);

main()

{fun(7);printf(”\n”);}

程序運行後的輸出結果是

A)1 3 7

B)7 3 1

C)7 3

D)3 7

(36)有以下程序

#include<stdio.h>

int fun()

{static int x=1;

x+=1;return x;

main()

{int i;s=1;

for(i=1;i=5;i++)s+=fun();

printf(”%d\n”,s);

程序運行後的輸出結果是

A)11

B)21

C)6

D)120

(37)有以下程序

#inctude<stdio.h>

#include<stdlib.h>

Main()

{int *a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b;

printf(“%d,%d,%d\n”,*a,*b,*c);

程序運行後的輸出結果是

A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3

(38)有以下程序

#include<stdio.h

main()

{int s,t,A=10;double B=6;

s=sizeof(A);t=sizeof(B);

printf(“%d,%d\n”,s,t);

在VC6平台上編譯運行,程序運行後的輸出結果是

A)2,4 B)4,4 C)4,8 D)10,6

(39)若有以下語句

Typedef struct S

{int g; char h;}T;

以下敘述中正確的是

A)可用S定義結構體變量

B)可用T定義結構體變量

C)S是struct類型的變量

D)T是struct S類型的變量

(40)有以下程序

#include<stdio.h

main()

{short c=124;

c=c_______;

printf(“%d\n”、C);

若要使程序的運行結果為248,應在下劃線處填入的是

A)2 B)|248 C)&0248 D)I

二、填空題(每空2分,共30分)

請將每空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。

(1)一個棧的初始狀態為空。首先將元素5,4,3,2,1依次入棧,然後退棧一次,再將元素 A,B,C,D依次入棧,之後將所有元素全部退棧,則所有元素退棧(包括中間退棧的元素)的順序為【1】

(2)在長度為n的線性表中,尋找最大項至少需要比較【2】次。

(3)一棵二叉樹有10個度為1的結點,7個度為2的結點,則該二叉樹共有【3】個結點。

(4)僅由順序、選擇(分支)和重複(循環)結構構成的程序是【4】程序。

(5)數據庫設計的四個階段是:需求分析,概念設計,邏輯設計【5】。

(6)以下程序運行後的輸出結果是【6】。

#include<stdio.h

main()

{int a=200,b=010;

printf(”%d%d\n”,a,b);

(7)有以下程序

#include<stdio.h

main()

{int x,Y;

scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);

程序運行時輸入:1234567程序的運行結果是【7】。

(8)在C語言中,當表達式值為0時表示邏輯值“假”,當表達式值為【8】時表示邏輯值“真”。

(9)有以下程序

#include<stdio.h

main()

{int i,n[]={0,0,0,0,0};

for (i=1;i=4;i++)

{n[i]=n[i-1]*3+1; printf(”%d “,n[i]);}

}

程序運行後的輸出結果是【9】。

(10)以下fun函數的功能是:找出具有N個元素的一維數組中的最小值,並作為函數值返回。請填空。(設N已定義)

int fun(int x〔N〕)

{int i,k=0;

for(i=0;iN;I++)

if(x〔i〕

return x〔k〕;

}

(11)有以下程序

#include<stdio.h

int*f(int *p,int*q);

main()

{int m=1,n=2,*r=m;

r=f(r,&n);printf(”%d\n”,*r);

int*f(int *p,int*q)

{return(*p*q)?p:q;}

程序運行後的輸出結果是【11】

(12)以下fun函數的功能是在N行M列的整形二維數組中,選出一個最大值作為函數值返回,請填空。(設M,. N已定義)

int fun(int a〔N〕[M))

{int i,j,row=0,col=0;

for(i=0;iN;I++)

for(j=0;j

if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}

return(【12】):

}

(13)有以下程序

#include<stdio.h

main()

{int n[2],i,j;

for(i=0;i2;i++)n[i]=0;

for(i=0;i<2;i++)

for(j=0;j2;j++)n〔j〕=n「i」+1;

printf(”%d\n”,n[1]);

程序運行後的輸出結果是【13】

(14)以下程序的功能是:藉助指針變量找出數組元素中最大值所在的位置並輸出該最大值。請在輸出語句中填寫代表最大值的輸出項。

#include<stdio.h

main()

{int a〔10〕,*p,*s;

for(p=a;p-a10;p++)scanf(”%d”,p);

for(p=a,s=a;p-a10;p++)if(*p*s)S=P;

printf(”max=%d\n”,【14】);

(15)以下程序打開新文件f.txt,並調用字符輸出函數將a數組中的字符寫入其中,請填空。

#include<stdio.h

main()

{【15】*fp;

char a〔5〕={’1’,’2’,’3’,’4’,’5’},i;

fp=fopen(”f .txt”,”w”);

for(i=0;i5;i++)fputc(a[i],fp);

fclose(fp);

計算機二級C語言筆試題和面試題答案目

如下這份計算機二級C語言筆試題目對於要考基計算機二級證書的朋友來說,應該會很有幫助,需要的朋友趕緊收藏吧!

一、選擇題((1)-(10),(21)-(40)每題2分,(11)-(20)每題1分,共70分)

下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填塗在答題卡相應位置上,答在試卷上不得分。

1. 下列敘述中正確的是

A 線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的

B 線性表的鏈式存儲結構所需要的存儲空間一般要多於順序存儲結構

C 線性表的鏈式存儲結構所需要的存儲空間一般要少於順序存儲結構

D 上述三種說法都不對 答案:B

2. 下列敘述中正確的是

A 在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化

B 在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化

C 在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化

D 上述三種說法都不對 答案:C

3. 軟件測試的目的是

A 評估軟件可靠性 B 發現並改正程序中的錯誤 C 改正程序中的錯誤

D 發現程序中的錯誤 答案:B

4. 下面描述中,不屬於軟件危機表現的是

A 軟件過程不規範 B 軟件開發生產率低 C 軟件質量難以控制

D 軟件成本不斷提高 答案:A

5. 軟件生命周期是指

A 軟件產品從提出、實現、使用維護到停止使用退役的過程

B 軟件從需求分析、設計、實現到測試完成的過程 C 軟件的開發過程

D 軟件的運行維護過程 答案:A

6. 面向對象方法中,繼承是指

A 一組對象所具有的相似性質 B 一個對象具有另一個對象的性質 C 各對象之間的共同性質 D 類之間共享屬性和操作的機制 答案:D

7. 層次型、網狀型和關係型數據庫劃分原則是

A 記錄長度 B 文件的大小 C 聯繫的複雜程度

D 數據之間的聯繫方式 答案:D

8. 一個工作人員可以使用多台計算機,而一台計算機可被多個人使用,則實體工作人員、與實體計算機之間的聯繫是

A 一對一B 一對多C 多對多D 多對一 答案:C

9. 數據庫設計中反映用戶對數據要求的模式是

A 內模式B 概念模式C 外模式D 設計模式 答案:C

10. 有三個關係R、S和T如下:則由關係R和S得到關係T的操作是

A 自然連接B 交C 投影D 並 答案:A

11. 以下關於結構化程序設計的敘述中正確的是

A 一個結構化程序必須同時由順序、分支、循環三種結構組成

B 結構化程序使用goto語句會很便捷 C 在C語言中,程序的模塊化是利用函數實現的

D 由三種基本結構構成的程序本文由論文聯盟收集整理只能解決小規模的問題 答案:C

12. 以下關於簡單程序設計的步驟和順序的說法中正確的是

A 確定算法後,整理並寫出文檔,最後進行編碼和上機調試

B 首先確定數據結構,然後確定算法,再編碼,並上機調試,最後整理文檔

C 先編碼和上機調試,在編碼過程中確定算法和數據結構,最後整理文檔

D 先寫好文檔,再根據文檔進行編碼和上機調試,最後確定算法和數據結構 答案:D

13. 以下敘述中錯誤的是

A C程序在運行過程中所有計算都以二進制方式進行 B C程序在運行過程中所有計算都以十進制方式進行 C 所有C程序都需要編譯鏈接無誤後才能運行

D C程序中整型變量只能存放整數,實型變量只能存放浮點數 答案:B

14. 有以下定義:inta; longb; doublex,y;則以下選項中正確的表達式是

A a%(int)(x-y) B a=x!=y; C (a*y)%b D y=x+y=x 答案:C

15. 以下選項中能表示合法常量的是

A 整數:1,200 B 實數:1.5E2.0 C 字符斜杠:‘\’ D 字符串:”\007″ 答案:C

16. 表達式a+=a-=a=9的值是

A 9 B _9 C 18 D 0 答案:D

17. 若變量已正確定義,在if (W)printf(“%d\n,k”);中,以下不可替代W的是

A ab+c B ch=getchar() C a==b+c D a++ 答案:A

18. 有以下程序

#include

main()

{inta=1,b=0;

if(!a) b++;

elsEif(a==0)if(a)b+=2;

elseb+=3;

printf(”%d\n”,b);

程序運行後的輸出結果是

A 0 B 1 C 2 D 3 答案:C

20. 有以下程序

#include

main()

{int a=1,b=2;

while(a6){b+=a;a+=2;b%二10;}

printf(”%d,%d\n”,a,b);

程序運行後的輸出結果是

A 5,11 B 7,1 C 7,11 D 6,1 答案:D

21. 有以下程序

#include

main()

{int y=10;

while(y–);

printf(”Y=%d\n”,Y);

程序執行後的輸出結果是

A y=0 B y= -1 C y=1 D while構成無限循環 答案:B

22. 有以下程序

#include

main()

{char s[」=”rstuv”;

printf(”%c\n”,*s+2);

程序運行後的輸出結果是

A tuv B 字符t的ASCII碼值 C t D 出錯 答案:D

23. 有以下程序

#include

#include

main()

{char x[]=”STRING”;

x[0」=0;x=’\0’;x[2」=’0’;

printf(”%d%d\n”,sizeof(x),strlen(x));

程序運行後的輸出結果是

A 61 B 70 C 63 D 71 答案:B

24. 有以下程序

#include

Int f(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

intf(intx)

{returnx*2;}

程序運行後的輸出結果是

A 1 B 2 C 4 D 8 答案:D

25. 以下程序段完全正確的是

A int *p;scanf(“%d”,p); B int *p;scanf(“%d”,p);

C int k, *p=k;scanf(“%d”,p); D int k, *p:;*p= k; scanf(“%d”,p); 答案:D

26. 有定義語句:int *p[4];以下選項中與此語句等價的是

A intp[4]; B int**p; C int*(p「4」); D int (*p)「4」; 答案:D

27. 下列定義數組的語句中,正確的是

A B C intx[0..10]; D int x[]; 答案:B

28. 若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是

A inta[5]=﹛0﹜; B intb[]={0,0,0,0,0}; C intc[2+3]; D inti=5,d[i]; 答案:A

29. 有以下程序

#include

voidf(int *p);

main()

{inta[5]={1,2,3,4,5},*r=a;

f(r);printf(”%d\n”;*r);

void f(int *p)

{p=p+3;printf(”%d,”,*p);}

程序運行後的輸出結果是

A 1,4 B 4,4 C 3,1 D 4,1 答案:D

30. 有以下程序(函數fun只對下標為偶數的元素進行操作)

# include

void fun(int*a;int n)

{int i、j、k、t;

for (i=0;i

求全國計算機等級考試二級C語言的真題

09年3月全國計算機等級考試二級C筆試真題(附答案)(考試時間90分鐘,滿分100分)一、選擇題(1)下列敘述中正確的是 A) 棧是先進先出(FIFO)的線性表B) 隊列是先進先出(FIFO)的線性表C) 循環隊列是非線性結構D) 有序線性表既可以採用順序存儲結構,也可以採用鏈式存儲結構(2)支持子程序調用的數據結構是 A) 棧 B) 樹 C) 隊列 D)二叉樹(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是 A)10 B)8 C)6 D)4(4)下列排序方法中,最壞情況下比較次數最少的是 A)冒泡排序 B)簡單選擇排序 C)直接插入排序 D)堆排序(5)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬於應用軟件的是 A)編譯軟件 B)操作系統 C)教務管理系統 D)彙編程序(6)下面敘述中錯誤的是A)軟件測試的目的是發現錯誤並改正錯誤B)對被調試的程序進行“錯誤定位”是程序調試的必要步驟C)程序調試通常也稱為DebugD)軟件測試應嚴格執行測試計劃,排除測試的隨意性(7)耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是 A)提高耦合性降低內聚性有利於提高模塊的獨立性B)降低耦合性提高內聚性有利於提高模塊的獨立性C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度D)內聚性是指模塊間互相連接的緊密程度(8)數據庫應用系統中的核心問題是A)數據庫設計 B)數據庫系統設計C)數據庫維護 D) 數據庫管理員培訓(9)有兩個關係R,S如下:R SA B C A Ba 3 2 a 3b 0 1 b 0c 2 1 c 2 由關係R通過運算得到關係S,則所使用的運算為A) 選擇 B)投影 C) 插入 D)連接(10)將E-R圖轉換為關係模式時,實體和聯繫都可以表示為A) 屬性 B)鍵 C) 關係 D) 域(11)以下選項中合法的標識符是 A) 1-1 B)1—1 C)-11 D)1–(12)若函數中有定義語句:int k;,則 A)系統將自動給k賦初值0 B)這時k中值無定義 C)系統將自動給k賦初值-1 D)這時k中無任何值(13)以下選項中,能用作數據常量的是 A)o115 B) 0118 C)1.5e1.5 D) 115L(14)設有定義:int x=2; ,以下表達式中,值不為6的是A) x*=x+1 B) x++,2*x C)x*=(1+x) D)2*x,x+=2(15)程序段:int x=12; double y=3.141593; printf(“%d%8.6f”,x,y);的輸出結果是A)123.141593 B)12 3.141593 C)12,3.141593 D)123.141593(16)若有定義語句:double x,y,*px,*py,執行了px=x, py=y;之後,正確的輸入語句是 A)scanf(“%f%f”,x,y); B) scanf(“%f%f”,x,y); C) scanf(“%lf%le”,px,py); D) scanf(“%lf%lf”,x,y);(17)以下是if語句的基本形式:if (表達式) 語句,其中表達式A)必須是邏輯表達式 B)必須是關係表達式C)必須是邏輯表達式或關係表達式 D)可以是任意合法的表達式(18)有以下程序#include stdio.hmain(){int x;/ppscanf(“%d”,x);/ppif(x=3); else/ppif(x!=10) printf(“%d\n”,x);/pp}程序運行時,輸入的值在哪個範圍才會有輸出結果A)不等於10的整數 B)大於3且不等於10的整數C) 大於3或等於10的整數 D)小於3的整數(19)有以下程序#includestdio.hMain(){ int a=1,b=2,c=3,d=0;if(a= =1 b++= =2)if(b!=2 || c–!=3) printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);}程序運行後的輸出結果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)以下程序中的變量已正確定義for(i=0;i4;i++,i++for(k=1;k3;k++);printf(“*”);程序段的輸出結果是A)******** B)**** C)** D)*(21)有以下程序#includestdio.hmain(){char *s=(“ABC);/ppdo/pp{printf(“%d”,*s%10);s++;/pp}while(*s);}注意,字母A的ASCII碼值為65。程序運行後的輸出結果是A)5670 B)656667 C)567 D)ABC(22)設變量已正確定義,以下不能統計出一行中輸入字符個數(不包含回車符)的程序段是A)n=0;while((ch=getchar())!=’\n’)n++; B) n=0;while(getchar()!=’\n’)n++;C)for(n=0; getchar()!=’\n’;n++); D)n=0;for(ch=getchar();ch!=’\n’;n++);(23)有以下程序#includestdio.hmain(){ int a1,a2;char c1,c2;scanf(“%d%c%d%c”,a1,c1,a2,c2);printf(“%d,%c,%d,%c”,1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的是為34,c1的值為字符a,c2的值為字符b,程序輸出結果是:12,a,34,b,則正確的輸入格式是(以下 代表空格,CR代表回車)A)12a34bCR B)12 a 34 bCRC)12,a,34,bCR D)12 a34 bCR(24)有以下程序#includestdio.hint f(int x,int y){return()y-x)*x);}main(){int a=3,b=4,c=5,d;/ppd=f(f(a,b),f(a,c));/ppprintf(“%d\n”,d);/pp}程序運行後的輸出結果是A)10 B)9 C)8 D)7(25)有以下程序#includestdio.hvoid fun(char *s){while(*s)/pp { if(*s%2==0) printf(“%c”,*s);/pps++;/pp }}main(){ char a[]={“good”}; fun(a);printf(“\n”);}注意:字母a的ASCII碼值為97,程序運行後的輸出結果是A)d B)go C)god D)good(26)有以下程序#include stdio.hvoid fun( int *a,int *b){int *c;/ppc=a;a=b;b=c;/pp}main(){int x=3,y-5,*P=x,*q=y;/pp fun(p,q);printf(“%d,%d,”,*p,*q);/ppfun(x,y);printf(“%d,%d\n”,*p,*q);/pp}程序運行後的輸出結果是A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3(27)有以下程序#include stdio.hvoid f(int *p,int *q );main(){ int m=1,n=2,*r=m; f(r,n);printf(“%d,%d”,m,n);}void f(int *p,int *q){p=p+1;*q=*q+1;}程序運行後輸出的結果是A)1,3 B)2,3 C)1,4 D)1,2(28)以下函數按每行8個輸出數組中的數據void fun( int *w,int n){ int i; for(i=0;in;i++) {________/pp printf(“%d”,w);/pp } printf(“\n”);}下劃線處應填入的語句是A)if(i/8==0)print(“\n”); B) if(i/8==0)continue;C) if(i%8==0)print(“\n”); D) if(i%8==0)continue;(29)若有以下定義 int x[10],*pt=x;則對x數組元素的正確應用是A)*x[10] B)*(x+3) C)*(pt+10) D)pt+3 (30)設有定義:char s[81];int i=10;,以下不能將一行(不超過80個字符)帶有空格的字符串真確讀入的語句或語句組是A gets(s) B)while((s[i++]=getchar())!=”\n”;s=”\0”;C)scanf(“%s”,s);D)do{scanf(“%c”,s);}while(s[i++]!=”\n”);s=”\0”;(31)有以下程序#include stdio.hmain(){ char *a[ ]={“abcd”,”ef”,”gh”,”ijk”};int I; for (i=0;i4;i++) printf(“%c”,*a);}程序運行後輸出的結果是A)aegi B)dfhk C)abcd D)abcdefghijk(32)以下選項中正確的語句組是A)char s[];s=”BOOK!”; B) char *s;s={”BOOK!”};C)char s[10];s=”BOOK!”; D) char *s;s=”BOOK!”;(33)有以下程序#include stdio.hint fun{int x,int y}{ if(x==y) return(x); else return((x+y)/2)}main(){ int a=4,b=5,c=6; printf(“%d\n”,fun(2*a,fun(b,c)))}程序運行後的輸出結果是A)3 B)6 C)8 D)12(34)設函數中有整型變量n,為保證其在未賦值的情況下初值為0,應選擇的存儲類別是A)auto B) register C)static D)auto或register(35)有以下程序#include stdio.hint b=2;int fun(int *k){ b=*k+b;return(b);}main(){ int a[10]={1,2,3,4,5,6,7,8},I; for(i=2;i4;i++) {b=fun(a)+b;printf(“%d”,b);} printf(“\n”);}程序運行後輸出的結果是A)10 12 B)8 10 C)10 28 D)10 16(36)有以下程序#include stdio.h#define PT 3.5;#define S(x) PT*x*x;main(){ int a=1, b=2; printf(“%4.1f\n”,S(a+b));}程序運行後輸出的結果是A)14.0 B)31.5 C)7.5 D)程序有錯無輸出結果(37)有以下程序#include stdio.hstruct ord{ int x,y;} dt[2]={1,2,3,4};main(){ struct ord *p=dt; printf (“%d,”,++p-x); printf(“%d\n”,++p-y);}程序的運行結果是A)1,2 B)2,3 C)3,4 D)4,1(38)設有宏定義:#include IsDIV(k,n) ((k%n==1)?1:0且變量m已正確定義並賦值,則宏調用:IsDIV(m,5) IsDIV(m,7)為真時所要表達的是A)判斷m是否能被5或者7整除B)判斷m是否能被5和7整除C)判斷m被5或者7整除是否餘1D)判斷m被5和7整除是否餘1(39)有以下程序#include stdio.hmain(){ int a=5,b=1,t; t=(a2|b); printf(“%d\n”,t) }程序運行後的輸出結果是A)21 B)11 C)6 D)1(40)有以下程序#include stdio.hmain(){ FILE *f; f=fopen(“filea.txt”,”w”); fprintf(f,”abc”); fclose(f);}若文本文件filea.txt中原有內容為:hello,則運行以上程序後,文件filea.txt中的內容為A) helloabc B)abclo C)abc D)abchello 二、填空題(每空2分,共30分) 請將每一個空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。(1)假設一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有 【1】 個元素。(2)軟件測試可分為白盒測試和黑盒測試。基本路徑測試屬於 【2】 測試。(3)符合結構化原則的三種基本控制結構是:選擇結構、循環結構和 【3】 。(4)數據庫系統的核心是 【4】(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯繫的是 【5 】框。(6)表達式(int)((double)(5/2)+2.5)的值是【6】(7)若變量x、y已定義為int類型且x的值為99,y的值為9,請將輸出語句printf(【7】,x/y);補充完整,使其輸出的計算結果形式為:x/y=11(8)有以下程序#include stdio.hmain( ){ char c1,c2; scanf(“c”,c1); while(c165||c190) scanf(“c”,c1); c2=c1+32; printf(“c, c\n”,c1,c2);}程序運行輸入65回車後,能否輸出結果、結束運行(請回答能或不能)【8】 。 (9)以下程序運行後的輸出結果是【9】#include stdio.hmain( ){int k=1,s=0;/ppdo{/ppif{((k2)!=0)continue;/pps+=k;k++;/pp}while(k)10);printf(“s=d/n”,s);} (10)下列程序運行時,若輸入labced12df回車 輸出結果為【10】 #include stdio.hmain( ){char a =0,ch;/ppwhile((ch=getchar())!=’\n’)/pp{if(a2!=0(ch’a’ch=’z’)) ch=ch-‘a’+’A’;/ppa++;putchar(ch);/pp}printf(“\n”);}(11)有以下程序,程序執行後,輸出結果是【11】#include stdio.hvoid fun (int *a){a[0=a[1];]}main(){int a[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i=0;i–) fun{a};for(i=0;i10;i++) printf(“d”,a);printf(“\n”);}(12)請將以下程序中的函數聲明語句補充完整#include stdio.hint【12】 ;main( ){int x,y,(*p)();/ppp=max;/ppprintf(“d\n”,x,y);/pp}Int max(int a,int b){return (ab/a:b);}(13)以下程序用來判斷指定文件是否能正常打開,請填空#include stdio.hmain( ){FILE *fp;/ppif (((fp=fopen(“test.txt”,”r”))==【13】))/ppprintf(“未能打開文件!\n”);/ppelse/ppprintf(“文件打開成功!\n”);/pp(14)下列程序的運行結果為【14】/pp#include stdio.h/pp#include string.h/ppstruct A/pp{int a;char b[10];double c;};void f (struct A *t);main(){struct A a=(1001,”ZhangDa”,1098,0);/ppf(a);printf(“d,s,6,if\n”,a.a,a.b,a.c);/pp}void f(struct A *t){strcpy(t-b,”ChangRong”); }(15)以下程序把三個NODETYPE型的變量鏈接成一個簡單的鏈表,並在while循環中輸出鏈表結點數據域中的數據,請填空#include stdio.hstruct node{int data; struct node *next;};typedef struct node NODETYPE;main(){NODETYPE a,b,c,*h,*p;/ppa. data=10;b.data=20;c.data=30;h=a;/ppb. next=b;b.next=c;c.next=’\0’;/ppp=h;/ppwhile(p){printf(“d”,p-data);【15】;}} 2009年4月NCRE二級C參考答案選擇題:1~10: DACDC ABABC11~20:CBDDA CDBCB21~30:CDABA BACBC31~40:ADBCC CBDAC 填空題:(1)19(2)白盒(3)順序結構(4)數據庫管理系統(DBMS)(5)菱形(6)4(7)”x/y=%d”(8)能(9)s=0(10)1AbCeDf2dF(11)7777654321(12)max(int a,int b)(13)NULL(14)1001,ChangRong,1098.0(15)p=p—next

計算機二級考試(江西考區)試題c語言及答案

2010年3月全國計算機等級考試二級C語言筆試真題及參考答案一、選擇題

(1)下列敘述中正確的是

A)對長度為n的有序鏈表進行查找,最壞清況下需要的比較次數為n

B)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2)

C)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(log2n)

D)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(nlog2n)(2)算法的時間複雜度是指

A)算法的執行時間

B)算法所處理的數據量

C)算法程序中的語句或指令條數

D)算法在執行過程中所需要的基本運算次數(3)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬於系統軟件的是

A)編輯軟件

B)操作系統

C)教務管理系統

D)瀏覽器(4)軟件(程序)調試的任務是

A)診斷和改正程序中的錯誤

B)儘可能多地發現程序中的錯誤

C)發現並改正程序中的所有錯誤

D)確定程序中錯誤的性質(5)數據流程圖(DFD圖)是

A)軟件概要設計的工具

B)軟件詳細設計的工具

C)結構化方法的需求分析工具

D)面向對象方法的需求分析工具(6)軟件生命周期可分為定義階段,開發階段和維護階段。詳細設計屬於

A)定義階段

B)開發階段

C)維護階段

D)上述三個階段(7)數據庫管理系統中負責數據模式定義的語言是

A)數據定義語言

B)數據管理語言

C)數據操縱語言

D)數據控制語言(8)在學生管理的關係數據庫中,存取一個學生信息的數據單位是

A)文件

B)數據庫

C)字段

D)記錄(9)數據庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬於數據庫設計的

A)需求分析階段

B)邏輯設計階段

C)概念設計階段

D)物理設計階段(10)有兩個關係R和T如下:

則由關係K得到關係T的操作是

A)選擇

B)投影

C)交

D)並(11)以下敘述正確的是

A)C語言程序是由過程和函數組成的

B)C語言函數可以嵌套調用,例如:fun(fun(x))

C)C語言函數不可以單獨編譯

D)C語言中除了main函數,其他函數不可作為單獨文件形式存在(12)以下關於C語言的敘述中正確的是

A)C語言中的注釋不可以夾在變量名或關鍵字的中間

B)C語言中的變量可以在使用之前的任何位置進行定義

C)在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致

D)C語言的數值常量中夾帶空格不影響常量值的正確表示(13)以下C語言用戶標識符中,不合法的是

A)_1

B)AaBc

C)a_b

D)a-b(14)若有定義:double a=22;int i=0,k=18;,則不符合C語言規定的賦值語句是

A)a=a++,i++;

B)i=(a+k)=(i+k);

C)i=a%11;

D)i=!a;(15)有以下程序

#includestdio.h

main()

{ char a,b,c,d;

scanf(“%c%c”,a,b);

c=getchar(); d=getchar();

printf(“%c%c%c%c\n”,a,b,c,d);

}

當執行程序時,按下列方式輸入數據(從第1列開始,CR代表回車,注意:回車也是一個字符)

12CR

34CR

則輸出結果是

A)1234

B)12

C)12

3

D)12

34(16)以i關於C語言數據類型使用的敘述中錯誤的是

A)若要準確無誤差的表示自然數,應使用整數類型

B)若要保存帶有多位小數的數據,應使用雙精度類型

C)若要處理如“人員信息”等含有不同類型的相關數據,應自定義結構體類型

D)若只處理“真”和“假”兩種邏輯值,應使用邏輯類型(17)若a是數值類型,則邏輯表達式(a==1)||(a!=1)的值是

A)1

B)0

C)2

D)不知道a的值,不能確定(18)以下選項中與if(a==1)a=b; else a++;語句功能不同的switch語句是

A)switch(a)

{case:a=b;break;brdefault:a++;br}brB)switch(a==1)br{case 0:a=b;break;brcase 1:a++;br}

C)switch(a)

{default:a++;break;brcase 1:a=b;br}

D)switch(a==1)

{case 1:a=b;break;brcase 0:a++;br}(19)有如下嵌套的if語句

if (ab)

if(ac)k=a;

else k=c;

else

if(bc) k=b;

else k=c;

以下選項中與上述if語句等價的語句是

A)k=(a<b)?a:b;k=(b<c)?b:c;

B)k=(a<b)?((b<c)?a:b):((b>c)?b:c);

C)k=(a<b)?((a<c)?a:):((b<c)?b:c);

D)k=(a<b)?a:b;k=(a<c)?a:c;(20)有以下程序

#include<s七dio.h>

main()

{in i,j,m=1;

for(i=1;i<3;i++)

{for(j=3;j>O;j–)

{if(i*j)>3)break;brm=i*j;br}

}

printf(”m=%d\n”,m);

程序運行後的輸出結果是

A)m=6

B)m=2

C)m=4

D)m=5(21)有以下程序

#include(stdio.h>

main()

{int a=l;b=2;

for(;a<8;a++) {b+=a;a+=2;}

printf(”%d,%d\n”,a,b);

}

程序運行後的輸出結果是

A)9,18

B)8,11

C)7,11

D)10,14(22)有以下程序,其中k的初值為八進制數

#include stdio.h

main()

{int k=011;

printf(”%d\n”,k++);

程序運行後的輸出結果是

A)12

B)11

C)10

D)9(23)下列語句組中,正確的是

A)char *s;s=”Olympic”;

B)char s[7];s=”Olympic”;

C)char *s;s={”Olympic”};

D)char s[7];s={”Olympic”};(24)以下關於return語句的敘述中正確的是

A)一個自定義函數中必須有一條return語句

B)一個自定義函數中可以根據不同情況設置多條return語句

C)定義成void類型的函數中可以有帶返回值的return語句

D)沒有return語句的自定義函數在執行結束時不能返回到調用處(25)下列選項中,能正確定義數組的語句是

A)int num[0..2008];

B)int num[];

C)int N=2008;

int num[N];

D)#define N 2008

int num[N];(26)有以下程序

#include stdio.h

void fun(char *c,int d)

{*c=*c+1;d=d+1;

printf(”%c,%c,”,*c,d);

main()

{char b=’a’,a=’A’;

fun(b,a);printf(”%e,%e\n”,b,a);

程序運行後的輸出結果是

A)b,B,b,A

B)b,B,B,A

C)a,B,B,a

D)a,B,a,B(27)若有定義int(*Pt)[3];,則下列說法正確的是

A)定義了基類型為int的三個指針變量

B)定義了基類型為int的具有三個元素的指針數組pt

C)定義了一個名為*pt、具有三個元素的整型數組

D)定義了一個名為pt的指針變量,它可以指向每行有三個整數元素的二維數組(28)設有定義double a[10],*s=a;,以下能夠代表數組元素a[3]的是

A)(*s)[3]

B)*(s+3)

C)*s[3]

D)*s+3(29)有以下程序

#include(stdio.h)

main()

{int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0;

for(i=0;i<5;i++) s=s+a[b[i]]);

printf(”%d\n”, s);

}

程序運行後的輸出結果是

A)6

B)10

C)11

D)15(30)有以下程序

#include stdio.h

main()

{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;

for(i=0;i3;i++)

for(j=ij=1;j++) t+=b[i][b[j][i]];

printf(”%d\n”,t);

程序運行後的輸出結果是

A)1

B)3

C)4

D)9(31)若有以下定義和語句…….這是全國2010全國c語言考試的部分題目,樓主需要的話可以自己去下載轉自:酷8學習網

二級C語言筆試題和面試題答案目及答案

(考試時間120分鐘,滿分100分)

一、選擇題((1)-(40)每小題1分, (41)-(50)每小題2分, 共60分)

下列各題 A) 、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。

(1) 下列設備中只能作為輸入設備的是

A) 磁盤驅動器 B) 鼠標器 C) 存儲器 D) 顯示器

(2) 下列DOS組合控制鍵中,能使標準輸出同時送到屏幕與打印機的是

A) Ctrl+Break B) Ctrl+P C) Ctrl+C D) Ctrl+H

(3) 通常所說的386機是

A) 8位機 B) 16位機 C) 32位機 D) 64位機

(4) 二進制數01100100轉換成十六進制數是

A) 64 B) 63 C) 100 D) 144

(5) 十六進制數100轉換成十進制數是

A) 1024 B) 512 C) 256 D) 128

(6) 對於存有重要數據的5.25英寸軟盤,防止計算機病毒感染的方法是

A) 不要與有病毒的軟盤放在一起 B) 在寫保護口貼上膠條

C) 保持軟盤清潔 D) 定期對軟盤格式化

(7) 在啟動DOS系統時,啟動盤的根錄下必須包含的文件是

A) START.COM B) COMMAND.COM C) FORMAT.COM D) BOOT.COM

(8) DOS系統啟動後,下列文件中常駐內存的是

A) DOS.COM B) COMMAND.COM C) DISKCOPY.COM D) SYS.COM

(9) 下列名字中,不能作為DOS磁盤文件名的是

A) JTU B) 93GZ.PRG C) CON D) ATTT.BAS

(10) 下列命令中屬於內部命令的是

A) SYS B) COMP C) DIR D) DISKCOMP

(11) 下列文件名中,能與ABC?.?匹配的是

A) AB12.C B) ABCD.FOR C) ABC.TXT D) ABCD.C

(12) 要列出當前盤當前目錄中第三個字符為”B”的所有文件的清單,可使用的命令為

A) DIR **B*.* B) DIR ??B*.? C) DIR ??B.* D) DIR ??B*.*

(13) 設當前盤為C盤,其根目錄下有兩個子目錄D1與D2,且當前目錄為D1,若要進入子目錄D2,可使用的命令為

A) CD D2 B) CD D2\ C) CD \D2 D) CD D1\D2

(14) 設當前盤為C盤,A盤當前目錄為根目錄。為了刪除A盤目錄\WS下擴展名為.TXT的所有文件,可用的命令為

A) DEL WS\*.TXT B) DEL \WS\*.TXT C) DEL A:\WS\?.TXT D) DEL A:WS\*.TXT

(15) 設當前盤為C盤,C盤當前目錄為\AAA\BBB\A\B\X。下列命令中能正確執行的是

A) MD \AAA\BBB\A B) MD X C) MD \ D) MD \AAA\BBB\A\B\X

(16) 在下列各組的兩個命令中,根據給定的條件,執行效果互相等價的是

A) DEL \DOS 與 RD \DOS(當前盤上有目錄\DOS)

B) FORMAT A:與 DEL A:*.*(A盤為啟動盤)

C) DISKCOPY A: B: 與 COPY A:*.* B:(A盤為啟動盤)

D) COPY F1 F2 與 TYPE F1F2(當前盤當前目錄下有文件F1)

(17) 為了在1.2MB的高密驅動器A中格式化一張360KB的啟動盤,可用的命令為

A) FORMAT A: B) FORMAT A:/S/1 C) FORMAT A:/S/4 D) FORMAT A:/S

(18) 要在打印機上輸出當前盤當前目錄下擴展名為.TXT的所有文件內容,正確的命令為

A) COPY *.TXT PRN B) COPY *.TXTPRN C) TYPE *.TXT PRN D) TYPE *.TXTPRN

(19) 設B盤目錄結構如下:

設B盤的當前目錄為\F2,要將A盤當前目錄下的文件P.BAS複製到B盤的F3子目錄中,可用的命令為

A) COPY P.BAS B: B) COPY A:P.BAS B:\

C) COPY A:P.BAS B:\F3 D) COPY A:P.BAS B:F3\

(20) 設當前盤為A盤,要將B盤當前目錄下的兩個文件A.TXT與X.TXT連接後以文件名Y.TXT存放到A盤的當前目錄中,可用的命令為

A) COPY A.TXT+X.TXT A:Y.TXT B) COPY B:A.TXT+X.TXT A:Y.TXT

C) COPY B:A.TXT+B:X.TXT Y.TXT D) COPY B:A.TXT+B:X.TXT Y.TXT

(21) C語言中最簡單的數據類型包括

A) 整型、實型、邏輯型 B) 整型、實型、字符型

C) 整型、字符型、邏輯型 D) 整型、實型、邏輯型、字符型

(22) C語言中,運乍對象必須是整型數的運算符是

A) % B) \ C) %和\ D) * *

(23) 為表示關係x≥y≥z,應使用C語言表達式

A) (x=y)(y=z) B(x=y)AND(y=z) C)(x=y=z) D)(x=y)(y=z)

(24) 下述對C語言字符數組的描術中錯誤的是

A) 字符數組可以存放字符串

B) 字符數組中的字符串可以整體輸入、輸出

C) 可以在賦值語句中通過賦值運算符”=”對字符數組整體賦值

D) 不可以用關係運算符對字符數組中的字符串進行比較

(25) 設有如下定義: int x=10,y=3,z; 則語句

printf(“%d\n”,z=(x%y,x/y)); 的輸出結果是

A) 1 B) 0 C) 4 D) 3

(26) 以下程序的輸出結果是

main()

{ int x=10,y=10;

printf(“%d %d\n”,x–,–y); }

A) 10 10 B) 9 9 C) 9 10 D) 10 9

(27) 定義如下變題和數組:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

則下面語句的輸出結果是

for(i=0;i3;i++) printf(“%d”,x[i][2-1]);

A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9

(28) 若要求在if後一對圓括號中表示a不等於0的關係,則能正確表示這一關係的表達式為

A) a0 B) !a C) a=0 D) a

(29) 閱讀程序:

#include

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf(“%x\n”,p);

printf(“%x\n”,p+9); }

該程序有兩個printf 語句, 如果第一個printf 語句輸出的是194, 則第二個printf語句的輸出結果是

A) 203 B) 204 C) 1a4 D) 1a6

(30) 設有如下函數定義:

int f(char *s)

{ char *p=s;

while(*p!=’\0′) p++;

return(p-s); }

如果在主程序中用下面的語句調用上述函數,則輸出結果為

printf(“%d\n”,f(“goodbey!”));

A) 3 B) 6 C) 8 D) 0

(31) 以下說法中正確的是

A) C語言程序總是從第一個的函數開始執行

B) 在C語言程序中,要調用的函數必須在main()函數中定義

C) C語言程序總是從main()函數開始執行

D) C語言程序中的main()函數必須放在程序的開始部分 1 2 3 4

全國計算機等級考試二級C語言歷年試題及答案

2010年9月全國計算機等級考試二級C語言筆試試題及答案

一、選擇題((1)-(10)每題2分,(11)-(50)每題1分.共60分))

(1)下列選項中不屬於軟件生命周期開發階段任務的是

A)詳細設計 B)概要設計 C)軟件維護 D)軟件測試

(2)樹是結點的集合,它的根結點數目是

A)有且只有1 B)1或多於1 C)0或1 D)至少2

(3)在面向對象方法中,實現信息隱蔽是依靠

A)對象的繼承 B)對象的多態 C)對象的封裝 D)對象的分類

(4)程序設計語言的基本成分是數據成分、運算成分、控制成分和

A)語句成分 B)變量成分 C)對象成分 D)傳輸成分

(5)冒泡排序在最壞情況下的比較次數是

A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2

(6)下列敘述中,不屬於軟件需求規格說明書的作用的是

A)作為確認測試和驗收的依據

B)反映出用戶問題的結構,可以作為軟件開發工作的基礎和依據

C)便於用戶、開發人員進行理解和交流

D)便於開發人員進行需求分析

(7)下列敘述中錯誤的是

A)一個C語言程序只能實現一種算法 B)C程序可以由多個程序文件組成

C)C程序可以由一個或多個函數組成 D)一個函數可單獨作為一個C程序文件存在

(8)下列不屬於軟件工程的3個要素的是

A)方法 B)過程 C)工具 D)環境

(9)下列敘述中正確的是

A)數據庫系統是一個獨立的系統,不需要操作系統的支持

B)數據庫技術的根本目標是要解決數據的共享問題

C)數據庫管理系統就是數據庫系統

D)以上三種說法都不對

(10)下列敘述中正確的是

A)每個C程序文件中都必須有一個main()函數

B)在C程序的函數中不能定義另一個函數

C)C程序可以由一個或多個函數組成

D)在C程序中main()函數的位置是固定的

(11)將E-R圖轉換到關係模式時,實體與聯繫都可以表示成

A)屬性 B)關係 C)鍵 D)域

(12)下列定義變量的語句中錯誤的是

A)double int_; B)int _int; C)char For D)float USS

(13)下列敘述中正確的是

A)C語言編譯時不檢查語法 B)C語言的子程序有過程和函數兩種

C)C語言的函數可以嵌套定義 D)C語言的函數可以嵌套調用

(14)以下選項中,合法的一組C語言數值常量是

A) 0x8A B)12 C).177 D) 028

(15)以下敘述中正確的是

A)構成C程序的基本單位是函數

B)可以在一個函數中定義另一個函數

C)main()函數必須放在其他函數之前

D)所有被調用的函數一定要在調用之前進行定義

(16)若在定義語句:int a,b,c,*p=c;之後,接着執行以下選項中的語句,則能正確執行的語句是

A)scanf(“%d”,p); B)scanf(“%d%d%d”,a,b,c);

C)scanf(“%d”,p); D) scanf(“%d”,a,b,c);

(17) 有以下程序

main()

{int x,y,z;

x=y=1;

z=x++,y++,++y;

printf(“%d,%d,%d\n”,x,y,z);

}

程序運行後的輸出結果是

A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1

(18) 若已定義:int a=25,b=14,c=19;以下三目運算符(?:)所構成語句的執行後a=25b–=2c?printf(“***a=%d,b=%d,c=%d\n”,a,b,c):printf(“###a=%d,b=%d,c=%d\n”,a,b,c);程序輸出的結果是

A)***a=25,b=13,c=19 B)***a=26,b=14,c=19

C)### a=25,b=13,c=19 D)### a=26,b=14,c=19

(19)下列程序段的輸出結果是

int a=1234;

float b=123.456;

double c=12345.54321;

printf(”-,%2.1f,%2.1f”,a,b,c);

A)無輸出 B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5

(20)有以下程序

main()

{int a=0,b=0;

a=10; /*給a賦值

b=20; 給b賦值 */

printf(“a+b=%d\n”,a+b); /* 輸出計算結果 */

}

程序運行後輸出結果是

A)30 B)a+b=30 C)a+b=0 D)出錯

(21)若運行以下程序時,從鍵盤輸入 ADescriptor(表示回車),則下面程序的運行結果是

#include

main()

{ char c;

int v0=1,v1=0,v2=0;

do{ switch(c=getchar())

{ case ′a′:case ′A′:

case ′e′:case ′E′:

case ′i′:case ′I′:

case ′o′:case ′O′:

case ′u′:case ′U′:v1+=1;

default:v0+=1;v2+=1;

}

} while(c!=′\n′);

printf(”v0=%d,v1=%d,v2=%d\n”,v0,v1,v2);

}

A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8

C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12

(22) 有以下程序

#include

main()

{int y=9;

for( y0;y–)

if(y%3= =0) printf(“%d”,–y);

}

程序的運行結果是

A)732 B)433 C)852 D)874

(23) 設有以下程序段

int x=0,s=0;

while(!x!=0)s+=++x;

printf(”%d”,s);

A)運行程序段後輸出0 B)運行程序段後輸出1

C)程序段中的控制表達式是非法的 D)程序段執行無限次

(24)有以下程序

fun(int x,int y){return(x+y);}

main()

{int a=1,b=2,c=3,sum;

sum=fun((a++,b++b,a+b),c++);

printf(“%d\n”,sum);

}

執行後的輸出結果是

A)5 B)7 C)8 D)3

(25)執行下面的程序段後,變量k中的值為

int k=3, s[2];

s[0]=k; k=s[1]*10;

A)不定值 B)35 C)31 D)20

(26)以下敘述中錯誤的是

A)改變函數形參的值,不會改變對應實參的值

B)函數可以返回地址值

C)可以給指針變量賦一個整數作為地址值

D)當在程序的開頭包含文件stdio.h時,可以給指針變量賦NULL

(27)以下程序段的描述,正確的是

x=-1;

do

{x=x*x;} while(!x);

A)是死循環 B)循環執行兩次 C)循環執行一次 D)有語法錯誤

(28)有以下程序

fun(int x,int y)

{static int m=0,i=2;

i+=m+1;m=i+x+y; return m;

}

main()

{int j=1,m=I,k;

k=fun(j,m); printf(“%d”,k);

k=fun(j,m); printf(“%d\n”,k)

}

執行後的輸出結果是

A)5,5 B)5,11 C)11,11 D)11,5

(29)有以下程序

fun(int x)

{int p;

if(x==0║x= =1) return(3);

p=x-fun(x=2);

retum p;

}main()

{ prinf(“%d\n”,fun(7));}

執行後的輸出結果是

A)7 B)3 C)3 D)0

(30)在16位編譯系統上,右有定義int a[ ]={10,20,30},*p=a;,當執行p++;後,下列說法錯誤的是

A)p向高地址移了一個字節 B)p抽高地址移了一個存儲單元

C)p向高地址移了兩個字節 D)p與a+1等價

(31)有以下程序

main()

{int a=1,b=3,c=5;

int *p1=a,*p2=b,*p=c;

*p=*p1*(*p2);

printf(“%d\n”,c);

}

執行後的輸出結果是

A)1 B)2 C)3 D)4

(32)下列程序執行後的輸出結果是

void func1(int i);

void func2(int i);

char st[]=”hello,friend!”;

void func1(int i)

{ printf(”%c”,st[i]);

if(i3){i+=2;func2(i);}

}

void func2(int i)

{ printf(”%c”,st[i]);

if(i3){i+=2;func1(i);}

}

main()

{ int i=0; func1(i); printf(”\n”);}

A)hello B)hel C)hlo D)hlm

(33)在下述程序中,判斷ij共執行的次數是

main()

{ int i=0, j=10, k=2, s=0;

for (;;)

{ i+=k;

if(ij)

{ printf(”%d”,s);

break;

} s+=i;

}

}

A)4 B)7 C)5 D)6

(34)以下函數返回a所指數組中最大值所在的下標值

fun(int *a,int n)

{ int i,j=0,p;

p=j;

for(i=j;iif(a[i]a[p]);

return(p);

}

在下劃線處應填入的內容是

A)i=p B)a[p]=a[i] C)p=j D)p=i

(35)下列程序執行後的輸出結果是

main()

{ int a[3][3], *p,i;

p=a[0][0];

for(i=1; i9; i++)p[i]=i+1;

printf(”%d\n”,a[1][2]);

}

A)3 B)6 C)9 D)隨機數

(36) 有以下程序

#include

void fun(int *a,int n)/*fun函數的功能是將a所指數組元素從大到小排序*/

{int t,i,j;

for(i=0;ifor(j=i+1;jif (a}

main()

{int c[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

for (i=0;i10;i++) printf(“%d,”,c);

printf(“\n”);

}

程序運行的結果是

A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,

C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,

(37)以下程序的輸出結果是#include

void prt (int *x, int*y, int*z)

{ printf(”%d,%d,%d\n”,++*x,++*y,*(z++));}

main()

{ int a=10,b=40,c=20;

prt (a,b,c);

prt (a,b,c);

}

A)11,42, 31

12,22,41

B)11,41,20

12,42,20

C)11,21,40

11,21,21

D)11,41,21

12,42,22

(38) 有以下程序:

#include

void fun(char *t,char *s)

{

while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{

char ss[10]=”acc”,aa[10]=”bbxxyy”;

fun(ss,aa);

printf(“%s,%s\n”,ss,aa);

}

程序運行結果是

A) accxyy , bbxxyy B) acc, bbxxyy

C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy

(39) 有以下程序

#include

main()

{ FILE *fp; int i=20,j=30,k,n;

fp=fopen(”d1.dat”,”w”);

fprintf(fp,”%d\n”,i);fprintf(fp,”%d\n”,j);

fclose(fp);

fp=fopen(”d1.dat”,”r”);

fscanf(fp,”%d%d”,k,n); printf(”%d %d\n”,k,n);

fclose(fp);

}

程序運行後的輸出結果是

A)20 30 B)20 50 C)30 50 D)30 20

(40) 有以下程序

main()

{int x[3][2]={0},I;

for(I=0;I3;I++) scanf(“%d”,x[i]);

printf(“%3d%3d%3d\n”,x[0][0],x[0][1],x[1][0]);

}

若運行時輸入:246,則輸出結果為

A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6

(41)有以下程序

int add(int a,int b){return+b};}

main()

{int k,(*f)(),a=5,b=10;

f=add;

}

則以下函數調用語句錯誤的是

A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);

(41)有以下程序

#include

main(int argc,char *argv[])

{int i=1,n=0;

while(iarge){n=n+strlen(argv[i]);i++;}

printf(“%d\n”,n);

}

該程序生成的可執行文件名為:proc.exe。若運行時輸入命令行:

proc 123 45 67

則程序的輸出結果是

A)3 B)5 C)7 D)11

(42)有以下程序

void fun2(char a, char b){printi(“%b%c”,a,b);}

char a= ‘A’,b= ‘B’;

void fun1( ){ a= ‘C’l b= ‘D’; }

main( )

{ fun1( )

printf( “%c%c”,a,b);

fun2(‘E’, ‘F’);

}

程序的運行結果是

A)CDEF B)ABEF C)ABCD D)CDAB

(43)有以下程序

#include

#define N 5

#define M N+1

#define f(x) (x*M)

main()

{int i1,i2;

i1=f(2);

i2=f(1+1);

printf(“%d %d\n”,i1,i2);

}

程序的運行結果是

A)12 12 B)11 7 C)11 11 D)12 7

(44)設有以下語句

typedef struct TT

{char c; int a[4];}CIN;

則下面敘述中正確的是

A)可以用TT定義結構體變量 B)TT是struct類型的變量

C)可以用CIN定義結構體變量 D)CIN是struct TT類型的變量

(45)有以下結構體說明、變量定義和賦值語句

struct STD

{char name[10];

int age;

char sex;

}s[5],*ps;

ps=s[0];

則以下scanf函數調用語句中錯誤引用結構體變量成員的是

A)scanf(“%s”,s[0].name); B)scanf(“%d”,s[0].age);

C)scanf(“%c”,(pssex)); D)scanf(“%d”,psage);

(46)若有以下定義和語句

union data

{ int i; char c; float f;}x;

int y;

則以下語句正確的是

A)x=10.5; B)x.c=101; C)y=x; D)printf(“%d\n”,x);

(47)若變量已正確定義,則以下語句的輸出結果是

s=32; s^=32;printf(“%d”,s);

A)-1 B)0 C)1 D)32

(48) 若程序中有宏定義行:#define N 100 則以下敘述中正確的是

A)宏定義行中定義了標識符N的值為整數100

B)在編譯程序對C源程序進行預處理時用100替換標識符N

C) 對C源程序進行編譯時用100替換標識符N

D)在運行時用100替換標識符N

(49)以下敘述中正確的是

A)C語言中的文件是流式文件,因此只能順序存取數據

B)打開一個已存在的文件並進行了寫操作後,原有文件中的全部數據必定被覆蓋

C)在一個程序中當對文件進行了寫操作後,必須先關閉該文件然後再打開,才能讀到第1個數據

D)當對文件的讀(寫)操作完成之後,必須將它關閉,否則可能導致數據丟失

(50)有以下程序

#include

main()

{FILE *fp; int i;

char ch[]=”abcd”,t;

fp=fopen(“abc.dat”,”wb+”);

for(i=0;i4;i++)fwriterch[],1,1fp;

fseek(fp,-2L,SEEK_END);

fread(t,1,1,fp);

fclose(fp);

printf(“%c\n”,t);

}

程序執行後的輸出結果是

A)d B)c C)b D)a

二、填空題(每空2分,共40分)

(1)在面向對象方法中,類之間共享屬性和操作的機制稱為 【1】 。

(2)一個關係表的行稱為 【2】 。

(3)耦合和內聚是評價模塊獨立性的兩個主要標準,其中 【3】 反映了模塊內各成分之間的聯繫。

(4)線性表的存儲結構主要分為順序存儲結構和鏈式存儲結構.隊列是一種特殊的線性表,循環隊列是隊列的【4】存儲結構.

(5) 【5】 的任務是診斷和改正程序中的錯誤。

(6) 以下程序的輸出結果是【6】.

#include

main()

{ int n=12345,d;

while(n!=0){ d=n%10; printf(“%d”,d); n/=10;}

}

(7)以下程序運行後的輸出結果是 【7】 。

main()

{

int m=011,n=11;

printf(“%d %d\n”,++m,n++);

}

(8)有以下程序,若運行時從鍵盤輸入:18,11,則程序輸出結果是 【8】 。

main()

{ int a,b;

printf(“Enter a,b:”);scanf(“%d,%d”,a,b);

while(a!=b)

{ while(ab) a-=b;

while(ba) b-=a;

}

printf(“%3d%3d\n”,a,b);

}

(9) 有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k=n;k++) s=s+1.0/(k*(k+1));

printf(“s=%f\n\n”,s);

請填空,使下面程序段的功能為完全相同

s=1.0;k=1;

while(_【9】_______){ s=s+1.0/(k*(k+1)); _【10】_______;}

printf(“s=%f\n\n”,s);

(10)執行以下程序的輸出結果是【11】______.

#include

main()

{ int i,n[4]={1};

for(i=1;i=3;i++)

{ n=n[i-1]*2+1; printf(“%d”,n); }

}

(11)以下程序中函數f的功能是在數組x的n個數(假定n個數互不相同)中找出最大最小數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換.請填空.

#include

viod f(int x[],int n)

{ int p0,p1,i,j,t,m;

i=j=x[0]; p0=p1=0;

for(m=0;m{ if(x[m]i) {i=x[m]; p0=m;}

else if(x[m]}

t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;

t=x[p1];x[p1]= _【12】_______; 【13】______=t;

}

main()

{ int a[10],u;

for(u=0;u10;u++) scanf(“%d”,a);

f(a,10);

for(u=0;u10;u++) printf(“%d”,a);

printf(“\n”);

}

(12)下列程序中的函數strcpy2()實現字符串兩次複製,即將t所指字符串複製兩次到s所指內存空間中,合併形成一個新的字符串。例如,若t所指字符串為efgh,調用strcpy2後,s所指字符串為efghefgh。請填空。

#include

#include

void strcpy2(char *s,char *t)

{ char *p=t;

while(*s++=*t++);

s= 【14】 ;

while( 【15】 =*p++);

}

main()

{ char str1[100]=”abcd”,str2[]=”efgh”;

strcpy2(str1 ,str2); printf(“%s\n”,str1);

}

(13)以下程序統計從終端輸入的字符中大寫字母的個數,num[0]中統計字母A的個數,num[1]中統計字母B的個數,其它依次類推.用#號結束輸入,請填空.

#include

#include

main()

{ int num[26]={0},i; char c;

while((_【16】_______)!=’#’)

if(isupper(c)) num[c-‘A’]+= 【17】_______;

for(i=0;i26;i++)

Printf(“%c:%d\n”,i+’A’,num);

}

(14)以下程序中,函數fun的功能是計算x2-2x+6,主函數中將調用fun函數計算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

請填空。

#include “math.h”

double fun(double x) { return(x*x-2*x+6); }

main()

{

double x,y1,y2;

printf(“Enter x:”); scanf(“%lf”,x);

y1=fun( 【18】 );

y2=fun( 【19】 );

printf(“y1=%lf,y2=%lf\n”,y1,y2);

}

(15) 以下程序的輸出結果是_【20】______.

#include

#define M 5

#define N M+M

main()

{ int k;

k=N*N*5; printf(“%d\n”,k);

}

一、選擇題答案:

1-10:CACDC DADBA 11-20:BDDBA CCCCB 21-30:DCBCA CCBCA

31-40:CCDAB DCDAB 41-50:CABCD BBBDB

二、填空題答案:

1.繼承 2. 元組 3.內聚 4.順序 5. 程序調試

6. 54321 7.10 11 8. 1 9.k=n k++

10. 3 7 5 11.x[0] x[0] 12.s–,*s++ 13.c=getchar() 14. (x+8),sin(x) 15.55

希望對你有所幫助

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187051.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 13:34
下一篇 2024-11-27 13:34

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 學堂雲Python語言程序設計答案

    學堂雲Python語言程序設計是一門重要的計算機專業課程。它涵蓋了Python語言及其應用,包括基礎語法、函數、文件處理、數據結構、圖形界面和網絡編程等內容。在學習中,我們經常會需…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論