全國計算機二級C語言考試試題2016
雖然現在離全國計算機等級考試還有兩個月的時間,小編提早為大家整理了以下的計算機二級C語言考試卷,希望對大家有幫助!
一、選擇題
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)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2
(8)一棵二叉樹中共有70個葉子結點與80個度為1的結點,則該二叉樹中的總結點數為
A)219 B)221 C)229 D)231
9)下列敘述中正確的是A)數據庫系統是一個獨立的系統,不需要操作系統的支持
B)數據庫技術的根本目標是要解決數據的共享問題 C)數據庫管理系統就是數據庫系統 D)以上三種說法都不對
10)下列敘述中正確的是 A)為了建立一個關系,首先要構造數據的邏輯關系
B)表示關系的二維表中各元組的每一個分量還可以分成若干數據項
C)一個關系的屬性名表稱為關系模式 D)一個關系可以包括多個二維表
(11)C語言源程序名的后綴是 A).exe B).C C).obj D).cp
(12)可在C程序中用做用戶標識符的一組標識符是 A)and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Bigl
(13)以下選項中,合法的一組C語言數值常量是 A)028 B)12. C).177
D)0x8A. 5e-3 OXa23 4c1.5 10,000-0xf 4.5e0 Oabc 3.e5
(14)以下敘述中正確的是 A)C語言程序將從源程序中第一個函數開始執行
B)可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執行
C)C語言規定必須用main作為主函數名,程序將從此開始執行,在此結束
D)main可作為用戶標識符,用以命名任意一個函數作為主函數
(15)若在定義語句:int a,b,c,*p=&c;之后,接著執行以下選項中的語句,則能正確執行的語句是
A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c); C)scanf("%d",p); D)scanf("%d",&p);
(16)以下關于long、int和short類型數據占用內存大小的敘述中正確的是
A)均占4個字節 B)根據數據的大小來決定所占內存的字節數 C)由用戶自己定義 D)由C語言編譯系統決定
(17)若變量均已正確定義并賦值,以下合法的C語言賦值語句是
A)x=y==5; B)x=n%2.5; C)x+n=I; D)x=5=4+1;
(18)有以下程序段
int j; float y; char name[50];
scanf("-%f%s",&j,&y,name); 當執行上述程序段,從鍵盤上輸入55566 7777abc后,y的值為
A)55566.0 B)566.0 C)7777.0 D)566777.0
(19)若變量已正確定義,有以下程序段
i=0;
do printf("%d,",i);while(i++);
printf("%d\n",i) 其輸出結果是 A)0,0 B)0,1 C)1,1 D)程序進入無限循環
(20)有以下計算公式 若程序前面已在命令中包含math.h文件,不能夠正確計算上述公式的程序段是
A)if(x>=0) y=sqrt(x); B)y=sqrt(x)else y=sqrt(-x); if(x<0) y=sqrt(-x);
C)if(x>=0)y=sqrt(x); D)y=sqrt(x>=0?x:-x);If(x<0)y=sqrt(-x);
(21)設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是
A)(EXP= =0) B)(EXP!=0) C)(EXP= =1) D)(EXP!=1)
(22)有以下程序
#include
main()
{int y=9;
for( y>0;y--)
if(y%3= =0) printf("%d",--y);0} 程序的運行結果是 A)741 B)963 C)852 D)875421
(23)已有定義:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是 A)isupper(c) B)’A’<=c<=’Z’C)’A’<=c&&c<=’Z’ D)c<=(‘2’-32)&&(‘a’-32)<=c
(24)有以下程序
#include
main()
{int i,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++) m=m%j;
printf("%d\n",m);} 程序的運行結果是 A)0 B)1 C)2 D)3
(25)若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是
A)函數的實參和其對應的形參共占同一存儲單元 B)形參只是形式上的存在,不占用具體存儲單元
C)同名的實參和形參占同一存儲單元 D)函數的形參和實參分別占用不同的存儲單元
(26)已知字符’A’的ASCⅡ代碼值是65,字符變量c1的值是’A’,c2的值是’D’。執行語句printf("%d,%d",c1,c2-2);后,輸出結果是 A)A,B B)A,68 C)65,66 D)65,68
(27)以下敘述中錯誤的是 A)改變函數形參的值,不會改變對應實參的值
B)函數可以返回地址值 C)可以給指針變量賦一個整數作為地址值
D)當在程序的開頭包含文件stdio.h時,可以給指針變量賦NULL
(28)以下正確的字符串常量是 A)"\\\" B)’abc’ C)OlympicGames D)""
(29)設有定義:char p[]={’1’,’2’,’3’},*q=p; ,以下不能計算出一個char型數據所占字節數的表達式是
A)sizeof(p) B)sizeof(char) C) sizeof(*q) D)sizeof(p[0])
(30)有以下函數
int aaa(char *s)
{char *t=s;
while(*t++);
t--;
return(t-s);} 以下關于aaa函數的功能敘述正確的是
A)求字符串s的長度 B)比較兩個串的大小 C)將串s復制到串t D)求字符串s所占字節數
(31)若有定義語句:int a[3][6]; ,按在內存中的存放順序,a數組的第10個元素是
A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4]
(32)有以下程序
#include
void fun(char **p)
{++p; printf("%s\n",*p);}
main()
{char *a[]={"Morning","Afternoon","Evening","Night"};
fun(a);} 程序的運行結果是 A)Afternoon B)fternoon C)Morning D)orning
33)若有定義語句:int a[2][3],*p[3]; ,則以下語句中正確的是
A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;
(34)有以下程序
#include
void fun(int *a,int n)
{int t,i,j;
for(i=0;i
for(j=i+1;j
if (a}
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for (i=0;i<10;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,
(35)有以下程序
#include
int fun(char s[])
{int n=0;
while(*s<=’9’&&*s>=’0’) {n=10*n+*s-’0’;s++;}
return(n);}
main()
{char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};
printf("%d\n",fun(s));} 程序運行的結果是 A)9 B)61490 C)61 D)5
36)當用戶要求輸入的字符串中含有空格時,應使用的輸入函數是 A)scanf() B)getchar() C)gets() D)getc()
(37)以下關于字符串的敘述中正確的是
A)C語言中有字符串類型的常量和變量 B)兩個字符串中的字符個數相同時才能進行字符串大小的比較
C)可以用關系運算符對字符串的大小進行比較 D)空串一定比空格打頭的字符串小
(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
#include
void fun(char s[][10],int n)
{char t;int i,j;
for(i=0;i
for(j=i+1,j
if(s[0])>s[j][0]{t=s[0];s[0]=s[j][0];s[j][0]=t;}}
main()
{char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc””aabcc”}
fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]);} 程序運行結果是
A) xy,aaaacc B) aaaacc,xy C) xcc,aabcc D) acc,xabcc
(40) 在一個C語言源程序文件中所定義的全局變量,其作用域為:
A) 所在文件的全部范圍 B) 所在程序的全部范圍
C) 所在函數的全部范圍 D) 由具體定義位置和extern 說明來決定范圍
(41)有以下程序
#include
int a=1;
int f(int c)
{static int a=2;
c=c+1;
return (a++)+c;}
main()
{ int i,k=0;
for(i=0;i<2;i++){int a=3;k+=f(a);}
k+=a;
printf(“%d\n”,k);} 程序運行結果是 A) 14 B) 15 C) 16 D) 17
(42)有以下程序
#include
void fun(int n,int *p)
{ int f1,f2;
if(n==1||n==2) *p=1;
else
{ fun(n-1,&f1); fun(n-2,&f2);
*p=f1+f2;}}
main()
{ int s;
fun(3,&s); printf("%d\n",s);} 程序的運行結果是 A)2 B)3 C)4 D)5
(43)若程序中有宏定義行:#define N 100 則以下敘述中正確的是
A)宏定義行中定義了標識符N的值為整數100 B)在編譯程序對C源程序進行預處理時用100替換標識符N
C) 對C源程序進行編譯時用100替換標識 D)在運行時用100替換標識符N
(44)以下關于typedef的敘述錯誤的是 A)用typedef可以增加新類型
B)typedef只是將已存在的類型用一個新的名字來代表C)用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名 D)用typedef為類型說明一個新名,通常可以增加程序的可讀性
(45)有以下程序
#include
struct tt
{int x;struct tt *y;} *p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{ int i;
p=a;
for(i=1;i<=2;i++) {printf("%d,",p->x); p=p->y;}} 程序的運行結果是 A)20,30, B)30,17 C)15,30, D)20,15,
(46)有以下程序
#include
#include
typedef struct{ char name[9];char sex; float score[2]; } STU;
STU f(STU a)
{ STU b={"Zhao",'m',85.0,90.0}; int i;
strcpy(a.name,b.name);
a. sex=b.sex;
for(i=0;i<2;i++) a.score=b.score;
return a;}
main()
{STU c={"Qian",'f',95.0,92.0},d;
d=f(c); printf("%s,%c,%2.0f,%2.0f\n",d.name,d.sex,d.score[0],d.score[1]);} 程序的運行結果是
A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,m,85,90 D)Zhao,f,95,92
(47)設有以下定義
union data
{ int d1; float d2; }demo;則下面敘述中錯誤的是
A)變量demo與成員d2所占的內存字節數相同 B)變量demo中各成員的地址相同
C)變量demo和各成員的地址相同 D)若給demo.d1賦99后, demo.d2中的值是99.0
(48)有以下程序
#include
main()
{ int a=1,b=2,c=3,x;
x=(a^b)&c; printf("%d\n",x);} 程序的運行結果是 A)0 B)1 C)2 D)3
(49)讀取二進制文件的函數調用形式為:fread(buffer,size,count,fp); ,其中buffer代表的是
A)一個文件指針,指向待讀取的文件 B)一個整型變量,代表待讀取的數據的字節數
C)一個內存塊的首地址,代表讀入數據存放的地址 D)一個內存塊的字節數
(50)有以下程序
#include
main()
{FILE *fp; int a[10]={1,2,3,0,0},i;
fp=fopen("d2.dat,"wb");
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++) printf("%d",a);} 程序的運行結果是
A)1,2,3,0,0,0,0,0,0,0, B)1,2,3,1,2,3,0,0,0,0, C)123,0,0,0,0,123,0,0,0,0, D)1,2,3,0,0,1,2,3,0,0,
二、填空題(每空2分,共40分)
(1) 軟件需求規格說明書應具有完整性、無歧義性、正確性、可驗證性、可修改性等特性,其中最重要的_[1]_______.
(2) 在兩種基本測試方法中, _[2]_______測試的原則之一是保證所測模塊中每一個獨立路徑至少要執行一次.
(3) 線性表的存儲結構主要分為順序存儲結構和鏈式存儲結構.隊列是一種特殊的線性表,循環隊列是隊列的_[3]_______存儲結構.
(4) 對下列二叉樹進行中序遍歷的結果為_[4]_______
F
/ \
C E
/ \ \
A D G
/ / \
B H P
(5) 在E-R圖中距形表示_[5]_______
(6) 執行以下程序時輸入1234567,則輸出結果是_[6]_______.
#include
main()
{ int a=1,b;
scanf("--",&a&b);printf("%d %d\n",a,b);}
(7) 以下程序的功能是:輸出a、b、c三個變量中的最小值.請填空。
#include
main()
{ int a,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c);
t1=a
t2=c
printf("%d\n",t2);}
(8) 以下程序的輸出結果是_[9]_______.
#include
main()
{ int n=12345,d;
while(n!=0){ d=n; printf("%d",d); n/=10;}}
(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(_[10]_______){ s=s+1.0/(k*(k+1)); _[11]_______;}
printf("s=%f\n\n",s);
(10) 以下程序的輸出結果是_[12]_______.
#include
main()
{ int i;
for(i='a';i<'f';i++,i++) printf("%c",i-'a'+'A');
printf("\n");}
(11) 以下程序的輸出結果是_[13]_______.
#include
#include
char *fun(char *t)
{ char *p=t;
return(p+strlen(t)/2);}
main()
{ char *str="abcdefgh";
str=fun(str);
puts(str);}
(12)以下程序中函數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]= _[14]_______; _[15]_______=t;}
main()
{ int a[10],u;
for(u=0;u<10;u++) scanf("%d",&a);
f(a,10);
for(u=0;u<10;u++) printf("%d",a);
printf("\n");}
(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;i<26;i++)
Printf("%c:%d\n",i+'A',num);}
(14)執行以下程序的輸出結果是_[18]_______.
#include
main()
{ int i,n[4]={1};
for(i=1;i<=3;i++)
{ n=n[i-1]*2+1; printf("%d",n); }}
(15) 以下程序的輸出結果是_[19]_______.
#include
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5; printf("%d\n",k);}
(16)函數main()的功能是:在帶頭結點的單鏈表中查找數據域中值最小的結點.請填空
#include
struct node
{ int data;
struct node *next;};
int min(struct node *first)
{ strct node *p; int m;
p=first->next; m=p->data;p=p->next;
for(;p!=NULL;p=_[20]_______)
if(p->datadata;
return m;}
【參考答案】
一、選擇題
1-5 DBCAA6-10 CCABA 11-15 BABCC
16-20 DABBB21-25 BCBBD
26-30 CCDAA31-35 BACDC
36-37 CDDBC42-45 AABAD
46-50 CDDCD
二、填空題
1、無歧義性2、白盒測試3、順序4、ACBDFEHGP5、實體集6、12 347、a:b8、c:t19、5432110、k<=n11、k++
【全國計算機二級C語言考試試題】相關文章:
全國計算機等級考試二級C語言試題二09-18
全國計算機二級C語言考試沖刺試題201708-17
全國計算機二級《C語言》鞏固試題及答案06-10
全國計算機二級《C語言》備考復習試題06-10
全國計算機等級考試二級C語言06-27
全國計算機二級《C語言》考試題庫與答案06-29