計(jì)算機(jī)二級(jí)C語(yǔ)言筆試試題及答案

字號(hào):

一、選擇題
    (1)下列關(guān)于棧的敘述正確的是
    A)棧是非線性結(jié)構(gòu)  B)棧是一種樹(shù)狀結(jié)構(gòu)  
    C)棧具有先進(jìn)先出的特征  D)棧具有后進(jìn)先出的特征
    (2)結(jié)構(gòu)化程序設(shè)計(jì)所規(guī)定的三種基本控制結(jié)構(gòu)是
    A)輸入、處理、輸出  B)樹(shù)形、網(wǎng)形、環(huán)形  
    C)順序、選擇、循環(huán)  D)主程序、子程序、函數(shù)
    (3)結(jié)構(gòu)化程序設(shè)計(jì)的一種基本方法是
    A)篩選法  B)遞歸法  C)歸納法  D)逐步求精法
    (4)如果對(duì)一個(gè)關(guān)系實(shí)施了一種關(guān)系運(yùn)算后得到了一個(gè)新的關(guān)系,而且新的關(guān)系中屬性個(gè)數(shù)少于原來(lái)關(guān)系中屬性個(gè)數(shù),這說(shuō)明所實(shí)施的運(yùn)算關(guān)系是:A)選擇  B)投影  C)連接  D)并
    二、填空題
    1.對(duì)于輸入為N個(gè)數(shù)進(jìn)行快速排序算法的平均時(shí)間復(fù)雜度是(  ?。?BR>    2.在面向?qū)ο蠓椒▽W(xué)中,直接反映了用戶對(duì)目標(biāo)系統(tǒng)的要求的模型是( ?。?BR>    3.軟件測(cè)試方法中,黑盒測(cè)試個(gè)白盒測(cè)試法是常用的方法,其中黑盒測(cè)試法主要是用于測(cè)試( ?。?BR>    4.關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)中存儲(chǔ)與管理數(shù)據(jù)的基本形式是( ?。?BR>    C語(yǔ)言程序設(shè)計(jì)
    一、選擇題
    (1)以下程序的輸入結(jié)果是
    main( )
    {  int i=010,j=10,k=x10;
     printf("%d,%d,%d\n",i,j,k);
    }
    A)8,10,16 B)8,10,10 C)10,10,10 D)10,10,16
    (2)指針s所指字符串的長(zhǎng)度
     char *s="\t\ "Name\ \ Address \n";
    A)說(shuō)法不合法 B)19 C)18 D)15
    (3)C語(yǔ)言中最簡(jiǎn)單的數(shù)據(jù)類型包括
    A)整型、實(shí)型、邏輯型 B)整型、實(shí)型、字符型
    C)整型、字符型、邏輯型 D)整型、實(shí)型、邏輯型、字符型
    (4)為表示關(guān)系x大于等于y大于等于z,應(yīng)使用C語(yǔ)言表達(dá)式
    A)(x>=Y)&&(Y>=z) B)(x>=Y)AND(y>=z) C)(x>=Y>=z) D)(x>=Y)&(Y>=z)
    (5)下列對(duì)C語(yǔ)言字符數(shù)組的描述中錯(cuò)誤的是
    A)字符數(shù)組可以存放字符串 B)字符數(shù)組中的字符串可以整體輸入、輸出
    C)可以在賦值語(yǔ)句中通過(guò)賦值運(yùn)算符“=”對(duì)字符數(shù)組整體賦值 D)不可以用關(guān)系運(yùn)算符對(duì)字符數(shù)組中的字符串進(jìn)行比較
    (6)以下說(shuō)法中正確的是
    A)C語(yǔ)言程序總是從第一個(gè)定義的函數(shù)開(kāi)始執(zhí)行 B)在C語(yǔ)言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義
    C)C語(yǔ)言程序總是從main()函數(shù)開(kāi)始執(zhí)行 D)C語(yǔ)言程序中的main()函數(shù)必須放在程序的開(kāi)始部分
    (7)以下程序段的輸出結(jié)果是
    int x=3;
    do
    {  printf("%3d",x-=2); }
    while(!(- -x));
    A)1 B)30 C)1 -2 D)死循環(huán)
    (8)設(shè)有如下定義:
    char *aa[2]={"abcd","ABCD"};
    則以下說(shuō)法中正確的是
    A)aa數(shù)組元素的值分別是"abcd"和"ABCD"
    B)aa是指針變量,它指向含有兩個(gè)數(shù)組元素的字符型一維數(shù)組
    C)aa數(shù)組的兩個(gè)元素分別存放的是含有4個(gè)字符的一維字符數(shù)組的首地址
    D)aa數(shù)組的兩個(gè)元素中各自存放了字符’a’和’A’的地址 ?。?)設(shè)有以下定義:
    int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
    int (*prt)[3]=a, * p=a[0];
    則下列能夠正確表示數(shù)組元素a[1][2]的表達(dá)式是
    A)*((* prt + 1)[2]) B)*(*(p+5)) C)(* prt + 1)+2 D)*(*(a+1)+2)
    (10)以下程序的輸出結(jié)果是
    fut( int * *s,int p[2][3])
    { * *s=p[1][1]; }
    main( )
    {  int a[2][3]={1,3,5,7,9,11},*P;
     p=(int * )malloc(sizeof(int));
     fut(&p,a);
     print("%\n",*p);
    }
    A)1 B)7 C)9 D)11
    二、填空題
    (1)表示條件:10  (2)下列程序的輸出結(jié)果是( )
    #include
    main( )
    {  char b[ ]="ABCDEFG";
     char *chp=&b[7];
     while(- -chp>&b[0])
     putchar(*chp);
     putchar("\n");
    }
    (3)下列程序的輸出結(jié)果是( ?。?BR>    int ast( int x,int Y,int * cp,int * dp)
    {  * cp=x+y;
     * dp=x-y;
    }
    main( )
    {  int a,b,c,d;
     a=4;b=3;
     ast(a,b,&c,&d);
     print("% d % d \ n",c,d);
    }
    (4)閱讀程序:
    main( )
    {  char str1[ ]="how do you do",str2[10];
     char *p1=str1,*p2=str2;
     scanf("% s",p2);
     printf("%s",p2);
     printf("%s\n",p1);
    }
    運(yùn)行上面的程序,輸入字符串 HOW DO YOU DO 則程序的輸出結(jié)果是( )
    (5)以下程序由終端鍵盤(pán)輸入一個(gè)文件名,然后把從終端鍵盤(pán)輸入的字符依次存放到該文件中,用#作為結(jié)束輸入的標(biāo)志。請(qǐng)?zhí)羁铡?BR>    #include
    main( )
    {  FILE * fp;
     char ch,fname [10 ];
     printf("Input the name of file\n");
     gets(fname);
     gets(fname);
     if((fp=[5])= =NULL)
     {  printf("Cannot open\n"); exit(0); }
     printf("Enter data\n");
     while((ch=getchar())!=’#’)
     fputc([6],fp);
     fclose(fp);
    } 三、上機(jī)*作題
    1.改錯(cuò)題
    下列給定程序中,函數(shù)fun的功能是:逐個(gè)比較a、b兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCII值大或相等的字符依次存放到c數(shù)組中,形成一個(gè)新的字符串。例如:若a中的字符串為:aBCDeFgH,b中的字符串為:ABcd,則c中的字符串應(yīng)為:aBcdeFgH.請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果,注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
    試題程序:
    #include
    #include
    void fun (char *p, char *q, char *c)
    {  int k=1;
     while(*p! = *q)
     {  if ( *p!< *q) c[k]= *q;
     else c[k]= *p;
     if(*p) p++;
     if(*q) q++;
     k++;
     }
    }
    main( )
    {  char a[10]="aBCDeFfH",b[10]="ABcd",c[80]={"\ 0"};
     fun (a,b,c);
     printf("The string a:");puts (a);
     ptintf("The string b:");puts (b);
     printf("The result :");puts(c);
    2.編程題
    請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同時(shí)被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
    試題程序:
    # include < conio.h>
    # include < stdio.h>
    void fun ( int *a, int *n)
    {
    }
    main( )
    {  int aa[1000],n,k;
     clrscr( );
     fun (aa,&n);
     for (k=0;k      if((k+1)%10= = 0) printf ("\n");
     else printf("%5d",aa[k]);
    }
    二級(jí)(C語(yǔ)言程序設(shè)計(jì))模擬題參考答案
    公共基礎(chǔ)知識(shí)
    一、選擇題
    (1)D (2)C (3)D (4)B
     二、填空題
    (1)[1]O(Nlog2 N)
    (2)[2]功能模型
    (3)[3]軟件外部功能
    (4)[4]二維表
    C語(yǔ)言程序設(shè)計(jì)
    一、選擇題
    (1)A (2)D (3)B (4)A (5)C (6)C (7)C (8)D (9)D (10)C
    二、填空題
    (1)[1] (x>10&&x<100)//x<0
    或(10  或x<0//(x>10&&x<100)
    或0>x//(10  (并且括號(hào)有無(wú)都可以)
    (2)[2]GFEDCB
    (3)[3] 7 1
    (4)[4]HOW how do you do (說(shuō)明:HOW和how之間有無(wú)空格均可)
    (5)[5]fopen(fname,"w")
    (說(shuō)明:"w"內(nèi)以w開(kāi)頭的字符串均可)
    [6] ch  (7)以下程序段的輸出結(jié)果是
    int x=3;
    do
    {  printf("%3d",x-=2); }
    while(!(- -x));
    A)1 B)30 C)1 -2 D)死循環(huán)
    (8)設(shè)有如下定義:
    char *aa[2]={"abcd","ABCD"};
    則以下說(shuō)法中正確的是
    A)aa數(shù)組元素的值分別是"abcd"和"ABCD"
    B)aa是指針變量,它指向含有兩個(gè)數(shù)組元素的字符型一維數(shù)組
    C)aa數(shù)組的兩個(gè)元素分別存放的是含有4個(gè)字符的一維字符數(shù)組的首地址
    D)aa數(shù)組的兩個(gè)元素中各自存放了字符’a’和’A’的地址
    (9)設(shè)有以下定義:
    int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
    int (*prt)[3]=a, * p=a[0];
    則下列能夠正確表示數(shù)組元素a[1][2]的表達(dá)式是
    A)*((* prt + 1)[2]) B)*(*(p+5)) C)(* prt + 1)+2 D)*(*(a+1)+2)
    (10)以下程序的輸出結(jié)果是
    fut( int * *s,int p[2][3])
    { * *s=p[1][1]; }
    main( )
    {  int a[2][3]={1,3,5,7,9,11},*P;
     p=(int * )malloc(sizeof(int));
     fut(&p,a);
     print("%\n",*p);
    }
    A)1 B)7 C)9 D)11
    二、填空題
    (1)表示條件:10 ?。?)下列程序的輸出結(jié)果是( )
    #include
    main( )
    {  char b[ ]="ABCDEFG";
     char *chp=&b[7];
     while(- -chp>&b[0])
     putchar(*chp);
     putchar("\n");
    }
    (3)下列程序的輸出結(jié)果是(  )
     int ast( int x,int Y,int * cp,int * dp)
    {  * cp=x+y;
     * dp=x-y;
    }
    main( )
    {  int a,b,c,d;
     a=4;b=3;
     ast(a,b,&c,&d);
     print("% d % d \ n",c,d);
    }   2.編程題
    請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同時(shí)被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
    試題程序:
    # include < conio.h>
    # include < stdio.h>
    void fun ( int *a, int *n)
    {
    }
    main( )
    {  int aa[1000],n,k;
     clrscr( );
     fun (aa,&n);
     for (k=0;k      if((k+1)%10= = 0) printf ("\n");
     else printf("%5d",aa[k]);
    }
    二級(jí)(C語(yǔ)言程序設(shè)計(jì))模擬題參考答案
    公共基礎(chǔ)知識(shí)
    一、選擇題
    (1)D (2)C (3)D (4)B
    二、填空題
    (1)[1]O(Nlog2 N)
    (2)[2]功能模型
    (3)[3]軟件外部功能
    (4)[4]二維表
    C語(yǔ)言程序設(shè)計(jì)
    一、選擇題
    (1)A (2)D (3)B (4)A (5)C (6)C (7)C (8)D (9)D (10)C
    二、填空題
    (1)[1] (x>10&&x<100)//x<0
    或(10  或x<0//(x>10&&x<100)
    或0>x//(10  (并且括號(hào)有無(wú)都可以)
    (2)[2]GFEDCB
    (3)[3] 7 1
    (4)[4]HOW how do you do (說(shuō)明:HOW和how之間有無(wú)空格均可)
    (5)[5]fopen(fname,"w")
    (說(shuō)明:"w"內(nèi)以w開(kāi)頭的字符串均可)
    [6] c