2011年9月計算機二級C語言真題

字號:


    為大家收集整理了《2011年9月計算機二級C語言真題》供大家參考,希望對大家有所幫助?。?!
     
    一、選擇題((1)-(10)、(21)-(40)每題2分,(11)-(20)每題1分,共70分) 
    下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填涂在答題卡相應位置上答在試卷上不得分。

    (1)下列敘述中正確的是( )。 
    A)算法就是程序 
    B)設計算法時只需要考慮數(shù)據(jù)結構的設計 
    C)設計算法時只需要考慮結果的可靠性 
    D)以上三種說法都不對
    (2)下列關于線性鏈表的敘述中,正確的是( )。 
    A)各數(shù)據(jù)結點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致 
    B)各數(shù)據(jù)結點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù) 
    C)進行插入與刪除時,不需要移動表中的元素 
    D)以上三種說法都不對
    (3)下列關于二叉樹的敘述中,正確的是( )。 
    A)葉子結點總是比度為2的結點少一個 
    B)葉子結點總是比度為2的結點多一個 
    c)葉子結點數(shù)是度為2的結點數(shù)的兩倍 
    D)度為2的結點數(shù)是度為1的結點數(shù)的兩倍
    (4)軟件按功能可以分為應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是( )。 
    A)學生成績管理系統(tǒng) 
    B)C語言編譯程序 
    C)UNIX操作系統(tǒng) 
    D)數(shù)據(jù)庫管理系統(tǒng)
    (5)某系統(tǒng)總體結構圖如下圖所示:
    考試大2011年下半年計算機二級C語言試題:文字版 
    該系統(tǒng)總體結構圖的深度是( )。 
    A)7 
    B)6 
    C)3 
    D)2
    (6)程序調試的任務是( )。 
    A)設計測試用例 
    B)驗證程序的正確性 
    C)發(fā)現(xiàn)程序中的錯誤 
    D)診斷和改正程序中的錯誤
    (7)下列關于數(shù)據(jù)庫設計的敘述中,正確的是( )。 
    A)在需求分析階段建立數(shù)據(jù)字典 
    B)在概念設計階段建立數(shù)據(jù)字典 
    C)在邏輯設計階段建立數(shù)據(jù)字典 
    D)在物理設計階段建立數(shù)據(jù)字
    (8)數(shù)據(jù)庫系統(tǒng)的三級模式不包括( )。 
    A)概念模式 
    B)內模式 
    C)外模式 
    D)數(shù)據(jù)模式
    (9)有三個關系R、S利T如下: 
    考試大2011年下半年計算機二級C語言試題:文字版
    則由關系R和s得到關系T的操作是( )。 
    A)自然連接 
    B)差 
    C)交 
    D)并
    (10)下列選項中屬于面向對象設計方法主要特征的是( )。 
    A)繼承 
    B)自頂向下 
    C)模塊化 
    D)逐步求精
    (11)以下敘述中錯誤的是(    )。
    A)C語言編寫的函數(shù)源程序,其文件名后綴可以是.C
    B)C語言編寫的函數(shù)都可以作為一個獨立的源程序文件
    C)C語言編寫的每個函數(shù)都可以進行獨立的編譯并執(zhí)行
    D)一個C語言程序只能有一個主函數(shù)
    (12)以下選項中關于程序模塊化的敘述錯誤的是(    )。
    A)把程序分成若干相對獨立的模塊,可便于編碼和調試
    B)把程序分成若干相對獨立、功能單一的模塊,可便于重復使用這些模塊
    c)可采用自底向上、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序
    D)可采用自項向下、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序
    (13)以下選項中關于c語言常量的敘述錯誤的是(    )。
    A)所謂常量,是指在程序運行過程中,其值不能被改變的量
    B)常量分為整型常量、實型常量、字符常量和字符串常量
    c)常量可分為數(shù)值型常量和非數(shù)值型常量
    D)經(jīng)常被使用的變量可以定義成常量
    (14)若有定義語句:int a=10;double b=3.14;,則表達式'A'+a+b值的類型是(    )。
    A)char    
    B)int    
    C)double    
    D)float
    (15)若有定義語句:int x=12,3=8,z;,在其后執(zhí)行語句z=0.9+x/y;,則Z的值為(    )。
    A)1.9    
    B)1    
    C)2 
    D)2.4
    (16)若有定義:int a,b;,通過語句scanf("%d;%d",&a,&b);,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是(    )。
    A)3 5    
    B)3,5    
    C)3;5   
    D)35
    (17)若有定義語句:intk1=10,k2=20;,執(zhí)行表達式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分別為(    )。
    A)0和1    
    B)0和20    
    C)10和1    
    D)10和20
    (18)有以下程序
        #include
        main()
        {int a=1,b=0;
        if(-a)  b++;
        else if(a=0)b+=2:
        else b+=3:
        printf("%d\n",b);
        )
        程序運行后的輸出結果是(    )。
    A)0    
    B)1    
    C)2 
    D)3

    (19)下列條件語句中,輸出結果與其他語句不同的是(    )。
    A)if(a)printf("%d\-n",x);    else printf("%d\n",y);
    B)if(a—0)printf("%d\n",y);  else printf("%d\n",x);
    C)if(a!=0)p由tf("%d\n",x);  else printf("%d\n",y);
    D)if(a=0)printf("%d\n",x);  else printf("%d\n",y);
    (20)有以下程序
    #include
    main()
    {int a=7;
    while(a--);
    printf("%d\n",a);
    )
    程序運行后的輸出結果是(    )。
    A)-1    
    B)0    
    C)1    
    D)7

    (21)以下不能輸出字符A的語句是(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)
    A)printf("%c\n",'a'-32);    
    B)printf("%d\n",'A');
    c)printf("%c\n",65);    
    D)print-f("%c\n",'B'-1);
    (22)有以下程序(注:字符a的ASCIl碼值為97)
    #include
    main()
    {char*s={"abe");
    do
    {printf(”%d”,+s%10);++s;)
    while(+s);
    )
    程序運行后的輸出結果是(    )。
    A)abc    
    B)789    
    C)7890    
    D)979899

    (23)若有定義語句:double a,+p=&a;以下敘述中錯誤的是(    )。
    A)定義語句中的*號是一個間址運算符
    B)定義語句中的*號只是一個說明符
    C)定義語句中的P只能存放double類型變量的地址
    D)定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P
    (24)有以下程序
    #include
    double f(double x);
    main()
    {doublea_0;inti;
    for(i=0;i<30;i+=10)a+--f((double)i);
    printf("%5.0f\n",a);
    }
    double f(double x)
    (return X+x+1;)
    程序運行后的輸出結果是(    )。
    A)503    
    B)401    
    C)500    
    D)1404

    (25)若有定義語句:int year=2009,*p=&year;,以下不能使變量year中的值增至2010的語句是(    )。
    A)*p+=1;    
    B)( *p)++;    
    C)++(*p);    
    D)*p++;
    (26)以下定義數(shù)組的語句中錯誤的是(    )。
    A)int num[]={1,2,3,4,5,6};    
    B)int num[][3]={{1,2},3,4,5,6};
    C)int num[2][4]=({1,2,,{3,4},{5,6});    
    D)int num[][4]={1,2,3,4,5,6};
    (27)有以下程序
    #include
    void fun(int+p)
    {printf(”%d\n”,p[5]);}
    main()    ;
    {int a[10]={1,2,3,4,5,6,7,8,9,10};
    fun(&a[3]);
    )
    程序運行后的輸出結果是(    )。
    A)5    
    B)6    
    C)8 
    D)9

    (28)有以下程序
    #include
    #defineN4
    void fun(int a[][N],im b[])
    {int i;
    for(i=0;i    )
    void main()
    {int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;
    fun(x,y);
    for(i=0;i    }
    程序運行后的輸出結果是(    )。
    A)-12,-3,0,0,    
    B)-3,-1,1,3,    
    C)0,1,2,3,    
    D)-3,-3,-3,-3        

    (29)有以下函數(shù)
    int fun(char *x,char *y)
    {int n=0;
    while((*x=*y)&&*x!='\0'){x++;y++;n++;}
    return n:
    )
    函數(shù)的功能是(  )。
    A)查找x和y所指字符串中是否有'\0'
    B)統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)
    c)將y所指字符串賦給X所指存儲空間
    D)統(tǒng)計x和y所指字符串中相同的字符個數(shù)
    (30)若有定義語句:char *s1="OK",*s2="ok";,以下選項中,能夠輸出"0K"的語句是(    )。
    A)if(strcmp(s1,s2)=0)puts(s1);    
    B)if(strcmp(s1,s2)!=0) puts(s2);
    C)if(strcmp(s1,s2)=1)puts(s1,);    
    D)if(strcmp(s1,s2)!=0) puts(s1);
    (31)以下程序的主函數(shù)中調用了在其前面定義的fun函數(shù)
    #include
    {
    main()
    {double a[15],k;
    k=fun(a);
    }
    則以下選項中錯誤的fun函數(shù)首部是(    )。
    A)double fun(double a[15])    
    B)double fun(double *a)
    C)double fun(double a[])    
    D)double fun(double a)

    (32)有以下程序
    #include
    #include
    main()
    {char a[5][10]={"china","beijing","you","tiananmen","welcome”);
    int i,j;chart[10];
    for(i=0;i<4;i++)
    for(j=i+1;j<5;j++)
    if(strcmp(a[i],a[j])>O)
    {strcpy(t,a[i]);strcpy(a[i],a[j]);strcpy(a[j],t);}
    puts(a[3]);
    )
    程序運行后的輸出結果是(    )。
    A)Beijing    
    B)china    
    C)welcome    
    D)tiananmen

    (33)有以下程序
    #include
    int f(int m)
    { static int n=0;
    n+=m:
    return n;
    )
    main()
    {int n=0;
    printf("%d",f(++n));
    printf("%d\n",f(n++));
    )
    程序運行后的輸出結果是(    )。
    A)1,2    
    B)1,1    
    C)2,3    
    D)3,3

    (34)有以下程序
    #include
    main()
    {char ch [3][5]={"AAAA","BBB","CC");
    printf ("%s\n",ch[1]);
    }
    程序運行后的輸出結果是(    )。
    A)AAAA    
    B)CC    
    C)BBBCC 
    D)BBB

    (35)有以下程序
    #include
    #include
    void fun(char *w,int m)
    {char s,*p1,*p2;
    p1=w;p2=w+m-1;
    while(p1    )
    main()
    {char a[]="123456";
    fun(a,strlen(a));puts(a);
    }
    程序運行后的輸出結果是(    )
    A)654321    
    B)116611    
    C)161616    
    D)123456    

    (36)有以下程序
    #include
    #include
    typedefstruct{char name[9];char sex;int score[2];}STU;
    STUf(STU a)
    {STU b={"Zhao",'m',85,90};
    inti:
    strcpy(a.name,b.name);
    a.sex=b.sex;
    for (i=0;i<2;i++)a.score[i]=b.score[i];
    return a;
    }
    main()
    f STU c={"Qian",'f',95,92},d;
    d=f(c);
    printf("%s,%c,%d,%d,",d.nalne,d.sex,d.score[0],d.score[1]);
    printf("%s,%c,%d,%d,",c.nanle,c.Sex,c.score[0],c.score[1]);
    }
    程序運行后的輸出結果是(    )。
    A)Zhao,m,85,90,Qian,f,95,92       
    B)Zhao,m,85,90,Zha0,m,85,90
    C)Qian,f,95,92,Qian,f,95,92   
    D)Qian,f,95,92,Zhao,m,85,90

    (37)有以下程序
    #include
    main()
    { struct node{int n;stmct node+next;} *p;
    structnodex[31={(2,x+l},{4,x+2),{6,NULL}};
    p=x;
    printff"%d,",p->n);
    printf("%dkn",p->next->n);
    }
    程序運行后的輸出結果是(    )。
    A)2,3    
    B)2,4    
    C)3,4    
    D)4,6

    (38)有以下程序
    #include
    main()
    {int a=2,b;
    b=a<<2:printr("%d\n",b);
    )
    程序運行后的輸出結果是(    )。
    A)2    
    B)4    
    C)6    
    D)8

    (39)以下選項中敘述錯誤的是(    )。
    A)C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調用一次函數(shù),賦一次初值
    B)在C程序的同一函數(shù)中,各復合語句內可以定義變量,其作用域僅限本復合語句內
    C)C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值
    D)C程序函數(shù)的形參不可以說明為static型變量
    (40)有以下程序
    #include
    main()
    {FILE *fp,
    int k,n,j,a[6]=<1,2,3,4,5,6};
    fp=fopen("d2.dat","w");
    for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);
    fclose(fp);
    fp=fopen("d2.dat","r");
    for(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);
    fc|ose(fp);
    printf("%d,%d\n",k,n);
    )
    程序運行后的輸出結果是(    )。
    A)1,2    
    B)3,4    
    C)5,6    
    D)123.456

    二、填空題(每空2分,共30分)
    請將每空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。

    (1)數(shù)據(jù)結構分為線性結構與非線性結構,帶鏈的棧屬于  【1】  。
    (2)在長度為n的順序存儲的線性表中插入一個元素,最壞情況下需要移動表中  【2】  個元素。
    (3)常見的軟件開發(fā)方法有結構化方法和面向對象方法。對某應用系統(tǒng)經(jīng)過需求分析建立數(shù)據(jù)流圖(DFD),則應采用  【3】  方法。
    (4)數(shù)據(jù)庫系統(tǒng)的核心是  【4】  。
    (5)在進行關系數(shù)據(jù)庫的邏輯設計時,E—R圖中的屬性常被轉換為關系中的屬性,聯(lián)系通常被轉換為  【5】  。
    (6)若程序中已給整型變量a和b賦值10和20,請寫出按以下格式輸出a、b值的語句  【6】  。
    ****a=10.b=20****
    (7)以下程序運行后的輸出結果是  【7】  。
    #include
    main()
    a%=9;printf("%d\n",a);
    )

    (8)以下程序運行后的輸出結果是  【8】  。
    #include
    main()
    {int i,j;
    for(i=6;i>3;i--)j=i;
    printf(”%d%d\n”,i,j);
    }

    (9)以下程序運行后的輸出結果是  【9】  。
    #include
    main()
    {int i,n[]={0,0,0,0,0);
    for(i=1;i<=2;i++)
    {n[i]=n[i-1]*3+1;
    printf("%d",n[i]);
    }
    printf("\n");
    }

    (10)以下程序運行后的輸出結果是  【10】  。
        #include
        main()
        {chara;
        for(a=0;a<15;a+=5)
        {putchar(a+'A');)
        printf("\n");
        )

    (11)以下程序運行后的輸出結果是  【11】  。
        #include    
        void fun(int x)
        {if(x/5>o)fun(x/5);
        prinff("%dt",x);
        )
        main()
        {fun(11);printf("\n");}

    (12)有以下程序
        #include
        main()    
        {int c[3]={0},k,i;
        while((k=getchar())!='\n')
        c[k-'A']++;
        for(i=0;i<3;i++)printf(”%d”,c[i]);printf("\n");
    若程序運行時從鍵盤輸入ABcAcC<回車>,則輸出結果為  【12】  。

    (13)以下程序運行后的輸出結果是  【13】  。
        #include
        main()
        {int n[2],i,j;
        for(i=0;i<2;i++)n[i]=0;
        for(i=0;i<2;i++)
        for(j=0;j<2;j++)n[j]=n[i]+1;
        printf("%d\n",n[1]);
        }    

    (14)以下程序調用fun函數(shù)把x中的值插入到a數(shù)組下標為k的數(shù)組元素中。主函數(shù)中,n存放a數(shù)組中數(shù)據(jù)的
        個數(shù)。請?zhí)羁铡?BR>        #include
        void fun(int s[],int *n,int k,int x)
        { int i;    
        for(i=*n-1;i>=k;i--)s[ 【14】 ]=s[i];
        s[k]=x;
        *n=*n+  【15】    ;
        }
        main()
        {int a[20]={1,2,3,4,5,6,7,8,9,10,11},i,x=0,k=6,n=11;
        fun(a,&n,k,X);
        for(i=0;i        }