歷年全國計(jì)算機(jī)等級考試二級C語言筆試選擇真題

字號:


    一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分)
    (1)下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是
    A.循環(huán)隊(duì)列
    B.帶鏈隊(duì)列
    C.二叉樹
    D.帶鏈棧
    (2)下列數(shù)據(jù)結(jié)果中,能夠按照“先進(jìn)后出”原則存取數(shù)據(jù)的是
    A.循環(huán)隊(duì)列
    B.棧
    C.隊(duì)列
    D.二叉樹
    (3)對于循環(huán)隊(duì)列,下列敘述中正確的是
    A.隊(duì)頭指針是固定不變的
    B.隊(duì)頭指針一定大于隊(duì)尾指針
    C.隊(duì)頭指針一定小于隊(duì)尾指針
    D.隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針
    (4)算法的空間復(fù)雜度是指
    A.算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲空間
    B.算法所處理的數(shù)據(jù)量
    C.算法程序中的語句或指令條數(shù)
    D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
    (5)軟件設(shè)計(jì)中劃分模塊的一個準(zhǔn)則是
    A.低內(nèi)聚低耦合
    B.高內(nèi)聚低耦合
    C.低內(nèi)聚高耦合
    D. 高內(nèi)聚高耦合
    (6)下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是
    A.可封裝
    B. 自頂向下
    C.模塊化
    D. 逐步求精
    (7)軟件詳細(xì)設(shè)計(jì)產(chǎn)生的圖如下:
    
    該圖是
    A.N-S圖
    B.PAD圖
    C.程序流程圖
    D. E-R圖
    (8)數(shù)據(jù)庫管理系統(tǒng)是
    A.操作系統(tǒng)的一部分
    B.在操作系統(tǒng)支持下的系統(tǒng)軟件
    C.一種編譯系統(tǒng)
    D. 一種操作系統(tǒng)
    (9)在E-R圖中,用來表示實(shí)體聯(lián)系的圖形是
    A.橢圓圖
    B.矩形
    C.菱形
    D. 三角形
    (10)有三個關(guān)系R,S和T如下:
    
    其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為
    A.選擇
    B.投影
    C.交
    D.并
    (11)以下敘述中正確的是
    A.程序設(shè)計(jì)的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試
    B.程序設(shè)計(jì)的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)
    C.程序設(shè)計(jì)的任務(wù)就是確定所用算法
    D.以上三種說法都不完整
    (12)以下選項(xiàng)中,能用作用戶標(biāo)識符的是
    A.void
    B.8_8
    C._0_
    D.unsigned
    (13)閱讀以下程序
     #include
     main()
     { int case; float printF;
     printf(“請輸入2個數(shù):”);
     scanf(“%d %f”,&case,&pjrintF);
     printf(“%d %f\n”,case,printF);
     }
     該程序編譯時產(chǎn)生錯誤,其出錯原因是
    A.定義語句出錯,case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符
    B.定義語句出錯,printF不能用作用戶自定義標(biāo)識符
    C.定義語句無錯,scanf不能作為輸入函數(shù)使用
    D.定義語句無錯,printf不能輸出case的值
    (14)表達(dá)式:(int)((double)9/2)-(9)%2的值是
    A.0
    B.3
    C.4
    D.5
    (15)若有定義語句:int x=10;,則表達(dá)式x-=x+x的值為
    A.-20
    B.-10
    C.0
    D.10
    (16)有以下程序
     #include
     main()
     { int a=1,b=0;
     printf(“%d,”,b=a+b);
     printf(“%d\n”,a=2*b);
     }
     程序運(yùn)行后的輸出結(jié)果是
    A.0,0
    B.1,0
    C.3,2
    D.1,2
    17)設(shè)有定義:int a=1,b=2,c=3;,以下語句中執(zhí)行效果與其它三個不同的是
    A.if(a>B. c=a,a=b,b=c;
    B.if(a>B. {c=a,a=b,b=c;}
    C.if(a>B. c=a;a=b;b=c;
    D.if(a>B. {c=a;a=b;b=c;}
    (18)有以下程序
     #include
     main()
     { int c=0,k;
     for (k=1;k<3;k++)
     switch (k)
     { default: c+=k
     case 2: c++;break;
     case 4: c+=2;break;
     }
     printf(“%d\n”,C.;
     }
     程序運(yùn)行后的輸出結(jié)果是
    A.3
    B.5
    C.7
    D.9
    (19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是
    A.if((a>b)&&(b>C.) k=1;
    else k=0;
    B.if((a>b)||(b>C. k=1;
    else k=0;
    C.if(a<=B. k=0;
    else if(b<=C.k=1;
    D.if(a>B. k=1;
    else if(b>C.k=1;
     else k=0;
    20)有以下程序
     #include
     main()
     { char s[]={“012xy”};int i,n=0;
     for(i=0;s[i]!=0;i++)
    if(s[i]>=’a’&&s[i]<=’z’) n++;
     printf(“%d\n”,n);
     }
     程序運(yùn)行后的輸出結(jié)果是
    A.0
    B.2
    C.3
    D.5
    (21)有以下程序
     #include
     main()
     { int n=2,k=0;
     while(k++&&n++>2);
     printf(“%d %d\n”,k,n);
     }
     程序運(yùn)行后的輸出結(jié)果是
    A.0 2
    B.1 3
    C.5 7
    D.1 2
    (22)有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是
    A.char a=’a’;
    B.char a=’\n’;
    C.char a=’aa’;
    D.char a=’\x2d’;
    (23)有以下程序
    #include
    main()
    { char c1,c2;
     c1=’A’+’8’-‘4’;
     c2=’A’+’8’-‘5’;
     printf(“%c,%d\n”,c1,c2);
    }
    已知字母A的ASCII碼為65,程序運(yùn)行后的輸出結(jié)果是
    A.E,68
    B.D,69
    C.E,D
    D.輸出無定值
    (24)有以下程序
     #include
     void fun(int p)
     { int d=2;
     p=d++; printf(“%d”,p);}
     main()
     { int a=1;
     fun(a); printf(“%d\n”,a);}
     程序運(yùn)行后的輸出結(jié)果是
    A.32
    B.12
    C.21
    D.22
    (25)以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找值并作為函數(shù)值返回,但程序中有錯導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能
    #define MIN -2147483647
     int findmax (int x[],int n)
     { int i,max;
     for(i=0;i
     { max=MIN;
     if(max
     return max;
     }
     造成錯誤的原因是
    A.定義語句int i,max;中max未賦初值
    B.賦值語句max=MIN;中,不應(yīng)給max賦MIN值
    C.語句if(max
    D.賦值語句max=MIN;放錯了位置
    (26)有以下程序
     #include
     main()
     { int m=1,n=2,*p=&m,*q=&n,*r;
     r=p;p=q;q=r;
     printf(“%d,%d,%d,%d\n”,m,n,*p,*q);
     }
     程序運(yùn)行后的輸出結(jié)果是
    A.1,2,1,2
    B.1,2,2,1
    C.2,1,2,1
    D.2,1,1,2
    (27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是
    A.p=a
    B.q[i]=a[i]
    C.p=a[i]
    D.p=&a[2][1]
    (28)有以下程序
     #include
     #include
     main()
     { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
     printf(“%d,”,strlen(p));printf(“%s\n”,p);
     }
     程序運(yùn)行后的輸出結(jié)果是
    A.9,One*World
    B.9,One*Dream
    C.10,One*Dream
    D.10,One*World
    (29)有以下程序
     #include
     main()
     { int a[ ]={2,3,5,4},i;
     for(i=0;i<4;i++)
     switch(i%2)
     { case 0:switch(a[i]%2)
     {case 0:a[i]++;break;
     case 1:a[i]--;
     }break;
     case 1:a[i[=0;
    }
    for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);
    }
    A.3 3 4 4
    B.2 0 5 0
    C.3 0 4 0
    D.0 3 0 4
    (30)有以下程序
     #include
    #include
     main()
    { char a[10]=”abcd”;
     printf(“%d,%d\n”,strlen(a),sizeof(a));
    }
    程序運(yùn)行后的輸出結(jié)果是
    A.7,4
    B.4,10
    C.8,8
    D.10,10
    (31)下面是有關(guān)C語言字符數(shù)組的描述,其中錯誤的是
    A.不可以用賦值語句給字符數(shù)組名賦字符串
    B.可以用輸入語句把字符串整體輸入給字符數(shù)組
    C.字符數(shù)組中的內(nèi)容不一定是字符串
    D.字符數(shù)組只能存放字符串
    (32)下列函數(shù)的功能是
     fun(char * a,char * b)
     { while((*b=*a)!=’\0’) {a++,b++;} }
    A.將a所指字符串賦給b所指空間
    B.使指針b指向a所指字符串
    C.將a所指字符串和b所指字符串進(jìn)行比較
    D.檢查a和b所指字符串中是否有’\0’
    (33)設(shè)有以下函數(shù)
     void fun(int n,char * s) {……}
     則下面對函數(shù)指針的定義和賦值均是正確的是
    A.void (*pf)(); pf=fun;
    B.viod *pf(); pf=fun;
    C.void *pf(); *pf=fun;
    D.void (*pf)(int,char);pf=&fun;
    (34)有以下程序
     #include
     int f(int n);
     main()
     { int a=3,s;
     s=f(a);s=s+f(a);printf(“%d\n”,s);
     }
     int f(int n)
     { static int a=1;
     n+=a++;
     return n;
     }
     程序運(yùn)行以后的輸出結(jié)果是
    A.7
    B.8
    C.9
    D.10
    (35)有以下程序
     #include
     #define f(x) x*x*x
     main()
     { int a=3,s,t;
     s=f(a+1);t=f((a+1));
     printf(“%d,%d\n’,s,t);
     }
     程序運(yùn)行后的輸出結(jié)果是
    A.10,64
    B.10,10
    C.64,10
    D.64,64
    (36)下面結(jié)構(gòu)體的定義語句中,錯誤的是
    A.struct ord {int x;int y;int z;}; struct ord a;
    B.struct ord {int x;int y;int z;} struct ord a;
    C.struct ord {int x;int y;int z;} a;
    D.struct {int x;int y;int z;} a;
    (37)設(shè)有定義:char *c;,以下選項(xiàng)中能夠使字符型指針c正確指向一個字符串的是
    A.char str[ ]=”string”;c=str;
    B.scanf(“%s”,C.;
    C.c=getchar();
    D.*c=”string”;
    (38)有以下程序
    #include
    #include
    struct A
    { int a; char b[10]; double c;};
    struct A f(struct A t);
    main()
    { struct A a={1001,”ZhangDa”,1098.0};
    a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.C.;
    }
    struct A f(struct A t)
    ( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
    程序運(yùn)行后的輸出結(jié)果是
    A.1001,ZhangDa,1098.0
    B.1001,ZhangDa,1202.0
    C.1001,ChangRong,1098.0
    D.1001,ChangRong,1202.0
    (39)若有以下程序段
    int r=8;
    printf(“%d\n”,r>>1);
    輸出結(jié)果是
    A.16
    B.8
    C.4
    D.2
    (40)下列關(guān)于C語言文件的敘述中正確的是
    A.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件
    B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
    C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
    D.文件由字符序列組成,其類型只能是文本文件