2012年3月計(jì)算機(jī)二級C語言真題

字號:

一、 選擇題
    1、 下列敘述中正確的是( ?。?。
    A.循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu)
    B.循環(huán)隊(duì)列是隊(duì)列的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
    C.循環(huán)隊(duì)列是非線性結(jié)構(gòu)
    D.循環(huán)隊(duì)列是一直邏輯結(jié)構(gòu)
    2、 下列敘述中正確的是(  )。
    A.棧是一種先進(jìn)先出的線性表
    B.隊(duì)列是一種后進(jìn)先出的線性表
    C.棧和隊(duì)列都是非線性結(jié)構(gòu)
    D.以上三種說法都不對
    3、 一棵二叉樹共有25個(gè)節(jié)點(diǎn),其中5個(gè)時(shí)子節(jié)點(diǎn),那么度為1的節(jié)點(diǎn)數(shù)為(  )。
    A.4
    B.6
    C.10
    D.16
    4、 在下列模式中,能夠給出數(shù)據(jù)庫物理存儲(chǔ)結(jié)構(gòu)與物理存取方法的是( ?。?。
    A.內(nèi)模式
    B.外模式
    C.概念模式
    D.邏輯模式
    5、 在滿足實(shí)體完整性約束的條件下(  )。
    A、 一個(gè)關(guān)系中可以沒有候選關(guān)鍵詞
    B、 一個(gè)關(guān)系中只能有一個(gè)候選關(guān)鍵詞
    C、 一個(gè)關(guān)系中必須有多個(gè)候選關(guān)鍵詞
    D、 一個(gè)關(guān)系中應(yīng)該有一個(gè)或者多個(gè)候選關(guān)鍵詞
    6、 有三個(gè)關(guān)系R、S和T如下:
    則由關(guān)系R和S得到關(guān)系T的操作是( ?。?。
    A.自然連接
    B.并
    C.差
    D.交
    7、 軟件生命周期中的活動(dòng)不包括( ?。?BR>    A.軟件維護(hù)
    B.市場調(diào)研
    C.軟件測試
    D.需求分析
    8、 下面不屬于需求分析階段任務(wù)的是( ?。?。
    A.確定軟件系統(tǒng)的功能需求
    B.確定軟件系統(tǒng)的系統(tǒng)的系能需求
    B.制定軟件集成測試計(jì)劃
    D.需求規(guī)格說明書審評
    9、 在黑盒測試方式中,設(shè)計(jì)測試用例的主要根據(jù)是( ?。?。
    A.程序外部功能
    B.程序內(nèi)部邏輯
    C.程序數(shù)據(jù)結(jié)構(gòu)
    D.程序流程圖
    10、 在軟件設(shè)計(jì)中不使用的工具是( ?。?BR>    A.系統(tǒng)結(jié)構(gòu)圖
    B.程序流程圖
    C.PAD圖
    D.?dāng)?shù)據(jù)流圖(DFD圖)
    11、針對簡單程序設(shè)計(jì),以下敘述的實(shí)施步驟正確的是( ?。?。
    A.確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試、整理文檔
    B.編碼、確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、整理文檔
    C.整理文檔、確定算法和數(shù)據(jù)結(jié)構(gòu)、編碼、調(diào)試
    D.確定算法和數(shù)據(jù)結(jié)構(gòu)、調(diào)試、編碼、整理文檔
    12、關(guān)于C語言中數(shù)的表示,以下敘述正確的是( ?。?BR>    A.只有整型數(shù)在允許范圍內(nèi)能精確無誤的表示,實(shí)型數(shù)會(huì)有誤差
    B.只要在在允許范圍內(nèi)整型和實(shí)型都能精確表示
    C.只有實(shí)型數(shù)在允許范圍內(nèi)能精確無誤的表示,整型數(shù)會(huì)有誤差
    D.只有八進(jìn)制表示的數(shù)在不會(huì)有誤差
    13、以下關(guān)于算法敘述錯(cuò)誤的是(  )。
    A.算法可以用偽代碼、流程圖等多種形式來描述
    B.一個(gè)正確的算法必須有輸入
    C.一個(gè)正確的算法必須有輸出
    D.用流程圖可以描述的算法可以用任何一種計(jì)算機(jī)高級語言編寫成程序代碼
    14、以下敘述錯(cuò)誤的是(  )。
    A.一個(gè)C程序可以包含多個(gè)不同名的函數(shù)
    B.一個(gè)C程序只能有一個(gè)主函數(shù)
    C.C程序在書寫時(shí),有嚴(yán)格的縮進(jìn)要求,否則不能編譯通過
    D.C程序的主函數(shù)必須用main作為函數(shù)名
    15、設(shè)有以下語句
    Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);
    若要為變量ch1和ch2分別輸入字符A和B,正確的輸入形式應(yīng)該是( ?。?。
    A.A和B之間用逗號間隔
    B.A和B之間不能有任何間隔符
    C.A和B之間可以用回車間隔
    D.A和B之間用空格間隔
    16、以下選項(xiàng)中非法的字符常量是( ?。?。
    A.’\102’
    B.’\65’
    C.’\xff’
    D.’\019’
    17、有以下程序
    #include
    Main()
    {
    Int A=0,B=0,C=0;
    C=(A-=A-5);(A=B,B+=4);
    Printf(“%d, %d, %d\n”,A,B,C)
    }
    程序運(yùn)行后輸出的結(jié)果是(  )。
    A.0,4,5
    B.4,4,5
    C.4,4,4
    D.0,0,0
    18、設(shè)變量均已正確定義并且賦值,以下與其他三組輸出結(jié)構(gòu)不同的一組語句是( ?。?。
    A.x++; printf((“%d\n”,x);
    B.n=++x; printf((“%d\n”,n);
    C.++x; printf((“%d\n”,x);
    D.n=x++; printf((“%d\n”,n);
    19、以下選項(xiàng)中,能表示邏輯值“假”的是( ?。?。
    A.1
    B.0.000001
    C.0
    D.100.0
    20、有以下程序
    #include
    Main()
    { int a;
    Scanf(“%d”,&a);
    If(a++<9) printf((“%d\n”,a);
    Else printf((“%d\n”,a--);
    }
    程序運(yùn)行時(shí)鍵盤輸入9<回車>,則輸出的結(jié)構(gòu)是( ?。?。
    A.10
    B.11
    C.9
    D.8
    21、有以下程序
    #include
    Main()
    {int s=0,n;
    For (n=0;n<3;n<++)
    {switch(s)
    { case 0;
    Case 1;s+=1;
    Case 2;s+=2;break;
    Case 3;s+3;
    Case 4;s+=4;
    }
    printf((“%d\n”,s);
    }
    }
    程序運(yùn)行后的結(jié)果是( ?。?。
    A.1,2,4
    B.1,3,6
    C.3,10,14
    D.3,6,10
    22、若k是int類型變量,且有以下for語句
    For(k=-1;k<0;k++) printf(****\n”);
    下面關(guān)于語句執(zhí)行情況的敘述中正確的是( ?。?BR>    A.循環(huán)體執(zhí)行一次
    B.循環(huán)體執(zhí)行兩次
    C.循環(huán)體一次也不執(zhí)行
    D.構(gòu)成無限循環(huán)
    23、有以下程序
    #include
    Main()
    {char A,B,C;
    B=’1’;C=’A’
    For(A=0;A<6;A++)
    {if(A%2) putchar(B+A);
    Else putchar(C+A);
    }
    }
    程序運(yùn)行后輸出的結(jié)果是( ?。?。
    A.1B3D5F
    B.ABCDFE
    C.A2C4E6
    D.123456
    24、設(shè)有如下定義語句
    Int m[ ]={2,4,6,8},*k=m;
    以下選項(xiàng)中,表達(dá)式的值為6的是( ?。?。
    A.*(k+2)
    B.k+2
    C.*k+2
    D.*k+=2
    25、fun函數(shù)的功能是:通過鍵盤輸入給x所指的整型數(shù)組所有元素賦值。在下列劃線處應(yīng)該填寫的是( ?。?BR>    #include
    #define N 5
    Viod fun(int x[N])
    {int m;
    For(m=N-1;m>0;m--) scanf(“%d\n”, );
    }
    A.&x[++m]
    B.&x[m+1]
    C.x+(m++)
    D.x+m
    26、若有函數(shù)
    Viod fun(double a[], int *n)
    {………}
    以下敘述中正確的是( ?。?。
    A、 調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送
    B、 形參a和n都是指針變量
    C、 形參a是一個(gè)數(shù)組名,n是指針變量
    D、 調(diào)用fun函數(shù)時(shí)將把double型實(shí)參數(shù)組元素一一對應(yīng)地傳送給形參a數(shù)組
    27、有以下程序
    #include
    Main()
    {int a,b,k,m,*p1,*p2;
    k=1,m=8;
    p1=&k,p2=&m;
    a=/*p1-m; b=*p1+*p2+6;
    printf(“%d ”,a); printf(“%d\n”,b);
    }
    編譯時(shí)編譯器提示錯(cuò)誤信息,你認(rèn)為出錯(cuò)的語句是( ?。?BR>    A.a(chǎn)=/*p1-m
    B.b=*p1+*p2+6
    C.k=1,m=8;
    D.p1=&k,p2=&m;
    28、以下選項(xiàng)中有語法錯(cuò)誤的是( ?。?BR>    A char *str[ ]={“guest”};
    B.char str[10 ]={“guest”};
    C.char *str[3] *str[1]={“guest”};
    D.char str[3][10];str[1]={“guest”};
    29、avg函數(shù)的功能是求整型數(shù)組中的前若干個(gè)元素的平均值,設(shè)數(shù)組元素個(gè)數(shù)最多不超過10,則下列函數(shù)說明語句錯(cuò)誤的是( ?。?。
    A.int avg(int *a,int n);
    B.int avg(int a[10],int n);
    C.int avg(int a,int n) ;
    D.int avg(int a[],int n);
    30、有以下函數(shù)
    #include
    #include
    main()
    { printf(“%d\n”,strren”ATS\n012\1”) );}
    程序運(yùn)行后的輸出結(jié)果是(  )。
    A.3
    B.8
    C.4
    D.9
    31、有以下函數(shù)
    #include
    main()
    { char a[20],b[20],c[20];
    scanf(”%s%s”,a,b);
    get(c);
    printf(”%s%s\n”,a,b,c);
    }
    程序運(yùn)行時(shí)從第一行開始輸入 this is a cat!<回車>,則輸出結(jié)果是( ?。?。
    A.thisisacat!
    B.this is a
    C.thisis a cat!
    D.thisisa cat!
    32、有以下函數(shù)
    #include
    viod fun(char c)
    {if(c>’x’) fun(c-1);
    printf (“%c”,c);
    }
    main()
    {fun”z”;}
    程序運(yùn)行輸出結(jié)果是(  )。
    A.xyz
    B.wxyz
    C.zyxw
    D.zyx
    33、有以下函數(shù)
    #include
    viod func(int n)
    {int i;
    for(i=0;i<=n;i++) printf(“*”);
    printf(“#”);
    main()
    { func(3); printf(“????”); func(4); printf(“\n”); }
    程序運(yùn)行輸出結(jié)果是(  )。
    A.****#????***#
    B.***#????*****#
    C.**#????*****#
    D.****#????*****#
    34、有以下函數(shù)
    #include
    viod fun(int *s)
    {staic int j=0;
    do {s[j]=s[j]+s[j+1];} wihle(++j<2);
    }
    main()
    {int k,a[10]={1,2,3,4,5};
    for(K+1;k<3;k++) fun(a);
    for(K+1;k<5;k++) printf(“%d”,a[k]);
    printf(“\n”);
    }
    程序運(yùn)行輸出結(jié)果是( ?。?。
    A.12345
    B.23445
    C.34756
    D.35745
    35、有以下函數(shù)
    #include
    #define S(x) (x)*x*2
    main()
    {int k=5,j=2;
    printf(“%d,”,S[k+j]); printf(“%d\n”,S(k-j)));
    }
    程序運(yùn)行輸出結(jié)果是( ?。?BR>    A.98,18
    B.39,11
    C.39,18
    D.98,11
    36、有以下函數(shù)
    #include
    Viod exch(int t[ ])
    {t[0]=t[5];}
    {int x[10]={1,2,3,4,5,6,7,8,9,10},i=0;
    While(i<=4) {exch(&x[i])’i++;}
    for(i=0;i<5;i++) printf(“%d”,x[i]);
    printf(“\n”);
    }
    程序運(yùn)行輸出結(jié)果是(  )。
    A.2 4 6 8 10
    B.1 3 5 7 9
    C.1 2 3 4 5
    D.6 7 8 9 10
    37、設(shè)有以下程序段
    Struct MP3
    {char name[20];
    Char color;
    Float price;
    }std,*ptr;
    ptr=& std;
    若要引用結(jié)構(gòu)體變量std中的color成員,寫法錯(cuò)誤的是( ?。?。
    A.std.color
    B.ptr-> color
    C.std-> color
    D.(*ptr) .color
    38、有以下函數(shù)
    #include
    struct stu
    {int mun; char name[10]; int age;};
    viod fun(struct stu *p)
    { printf(“%s\n”,p->name);}
    mian()
    { struct stu x[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};
    fun(x+2);
    }
    程序運(yùn)行輸出結(jié)果是( ?。?。
    A.zhang
    B.zhao
    C.wang
    D.19
    39、有以下函數(shù)
    #include
    mian()
    {int a=12,c;
    c=(a<<2)<<1;
    printf(“%d\n”,c):
    }
    程序運(yùn)行輸出結(jié)果是(  )。
    A.3
    B.50
    C.2
    D.96
    40、以下函數(shù)不能用于向文件寫入數(shù)據(jù)的是( ?。?BR>    A.ftell
    B.fwrite
    C.fputc
    D.fprintf
    二、填空題
    1、將長度為n的順序存儲(chǔ)在線性表中刪除一個(gè)元素,最壞情況下需要移動(dòng)表中的元素個(gè)數(shù)為( ?。?。
    2、設(shè)循環(huán)隊(duì)列的存儲(chǔ)空間為Q(1:3),初始狀態(tài)為front=rear=30?,F(xiàn)經(jīng)過一系列入隊(duì)與退隊(duì)運(yùn)算后,front=16,rear=15,則循環(huán)隊(duì)列中有( ?。﹤€(gè)元素。
    3、數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)語言中,負(fù)責(zé)數(shù)據(jù)的增、刪、改和查詢的是( ?。?。
    4、在將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示成(  )。
    5、常見的軟件工程方法有結(jié)構(gòu)化方法和面向?qū)ο蠓椒?,類、繼承以及多態(tài)性等概念屬于( ?。?。
    6、設(shè)變量a和b已定義為int類型,若要通過scanf(”a=%d,b=%d”,&a,&b);語句分別給a和b輸入1和2,則正確的數(shù)據(jù)輸入內(nèi)容是( ?。?。
    7、以下程序的輸出結(jié)果是( ?。?。
    #include
    mian()
    { int a=37;
    a+=a%=9; printf(“%d\n”,a);
    }
    8、設(shè)A.B.c都是整型變量,如果a的值為1,b的值為2,則執(zhí)行c=a++||b++;語句后,變量b的值是(  )。
    9、有以下程序段
    s=1.0;
    for(k=1,k<=n;k++) s=s+1.0(k*(k+1));
    printf(“%f\n”,s);
    請?zhí)羁?,使以下程序段的功能與上面的程序段完全相同。
    s=1.0; k=1;
    while( )
    { s=s+1.0(k*(k+1)); k=k+1;}
    printf(“%f\n”,s);
    10、以下程序段的輸出結(jié)果是( ?。?BR>    #include
    mian()
    { char a,b;
     for(a=0;a<20;a+=7) { b=a; putchar(b+’0’); }
    }
    11、以下程序段的輸出結(jié)果是( ?。?BR>    #include
    mian()
    { char *ch[4]={“red”,”green”,”blue”};
    Int i=0;
    While(ch[i]);
    { putchar(ch[i][0]; i++; }
    }
    12、有以下程序
    #include
    mian()
    {int arr[]={1,3,5,7,2,4,6,8{, i, start;
    Scanf(“%d”, &start);
    For(i=0,i<3,i++)
    printf(“%d”,arr[(start+i)%8]);
    }
    若在程序運(yùn)行時(shí)輸入整數(shù)10 <回車>,則輸出結(jié)果為(  )。
    13、以下程序的功能是輸出a數(shù)組中的所有字符串,請?zhí)羁?BR>    #include
    mian()
    {char *a[]={“ABC”,”DEFGH”,”IJ”,”KLMNOP”};
    Int i=0;
    For(;i<4;i++) printf(“%s\n”, );
    }
    14、以下程序的輸出結(jié)果是( ?。?。
    #include
    #include
    #include
    mian()
    { char *p, *q, *r;
    p=q=r=(char *)malloc(sizeof(char)*20);
    strcpy(p,”attaboy,welcome!”);
    printf(“%c%c%c\n”,p[11], q[3], r[4]);
    free(p);
    }
    15、設(shè)文件test.txt中原已寫入字符串Begin,執(zhí)行以下程序后,文件中的內(nèi)容為( ?。?。
    #include
    mian()
    { file *fp;
     fp=fopen(“test.txt”,”w+”);
     fputs(“test”,fp);
     fclose(fp);}