計算機等級考試二級C語言考前密卷(6)

字號:

一、選擇題
    (1)循環(huán)鏈表的主要優(yōu)點是
    A)不再需要頭指針了
    B)從表中任一結(jié)點出發(fā)都能訪問到整個鏈表
    C)在進行插入、刪除運算時,能更好的保證鏈表不斷開
    D)已知某個結(jié)點的位置后,能夠容易的找到它的直接前件
    (2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
    A)ABCED B)DCBEA
    C)DBCEA D)CDABE
    (3)n個頂點的強連通圖的邊數(shù)至少有
    A)n-1 B)n(n-1)
    C)n D)n+1
    (4)在結(jié)構(gòu)化程序設計思想提出之前,在程序設計中曾強調(diào)程序的效率,現(xiàn)在,與程序的效率相比,人們更重視程序的
    A)安全性 B)一致性
    C)可理解性 D)合理性
    (5)模塊獨立性是軟件模塊化所提出的要求,衡量模塊獨立性的度量標準則是模塊的
    A)抽象和信息隱蔽 B)局部化和封裝化
    C)內(nèi)聚性和耦合性 D)激活機制和控制方法
    (6)軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成
    A)定義、開發(fā)、運行維護
    B)設計階段、編程階段、測試階段
    C)總體設計、詳細設計、編程調(diào)試
    D)需求分析、功能定義、系統(tǒng)設計
    (7)在軟件工程中,白箱測試法可用于測試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是
    A)路徑的集合 B)循環(huán)的集合
    C)目標的集合 D)地址的集合
    (8)在數(shù)據(jù)管理技術(shù)發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)具有
    A)特定的數(shù)據(jù)模型 B)數(shù)據(jù)無冗余
    C)數(shù)據(jù)可共享 D)專門的數(shù)據(jù)管理軟件
    (9)數(shù)據(jù)庫設計包括兩個方面的設計內(nèi)容,它們是
    A)概念設計和邏輯設計
    B)模式設計和內(nèi)模式設計
    C)內(nèi)模式設計和物理設計
    D)結(jié)構(gòu)特性設計和行為特性設計
    (10)實體是信息世界中廣泛使用的一個術(shù)語,它用于表示
    A)有生命的事物 B)無生命的事物
    C)實際存在的事物 D)一切事物
    (11)以下說法錯誤的是
    A)一個算法應包含有限個步驟
    B)在計算機上實現(xiàn)的算法是用來處理數(shù)據(jù)對象的
    C)算法中指定的操作,不能通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次后實現(xiàn)
    D)算法的目的是為了求解
    (12)下列選項中不是結(jié)構(gòu)化程序基本結(jié)構(gòu)的是
    A)順序結(jié)構(gòu)
    B)跳轉(zhuǎn)分支結(jié)構(gòu)
    C)選擇結(jié)構(gòu)
    D)循環(huán)結(jié)構(gòu)
    (13)已知int k,m=1;執(zhí)行語句k=-m++;后,k的值是
    A)-1
    B)0
    C)1
    D)2
    (14)已知int m;float k;正確的語句是
    A)(int k)%m
    B)int(k)%m
    C)int(k%m)
    D)(int)k%m
    (15)下面各選項中,均是C語言標識符的選項組是
    A)33 we auto
    B)_23 me _3ew
    C)_43 3e_ else
    D)ER -DF 32
    (16)已知int k;float m=-3;執(zhí)行語句k=m%2;后,變量k的值是
    A)-1
    B)0
    C)1
    D)語句有錯誤
    (17)不能進行++和--運算的數(shù)據(jù)類型為
    A)指針
    B)整型
    C)長整型
    D)常量
    (18)已知int k=10,m=3,n;則下列語句輸出結(jié)果是
    printf("%d\n",n=(k%m,k/m));
    A)2
    B)3
    C)4
    D)5
    (19)已知int a;float b;所用的scanf調(diào)用語句格式為:
    scanf("a//%d,b=%f",&a,&b);
    為了將數(shù)據(jù)3和25.08分別賦給x和y,正確的輸入應當是
    A)3,25.08
    B)a=3,b=25.08
    C)a//3,b=25.08
    D)a//3b=25.08
    (20)當k的值不為0時,在下列選項中能夠?qū)的值賦給變量m,n的是
    A)m=k=n
    B)(m=k)&&(n=k)
    C)(m=k)||(n=k)
    D)(k=m)&&(n=k)
    (21)下列程序的運行結(jié)果是
    #include "stdio.h"
    main()
    { int x=-9,y=5,z=8;
    if(x  if(y<0)z=0;
    else z+=1;
    printf("%d\n",z);}
    A)6
    B)7
    C)8
    D)9
    (22)現(xiàn)有定義int k=1;則執(zhí)行語句while(++k<4);后,k的值為
    A)4
    B)5
    C)6
    D)8
    (23)以下程序的運行結(jié)果為
    #include "stdio.h"
    main()
    {int m,n;
    for(m=0,n=10;m  printf("%d,%d\n",m,n);}
    A)6,7
    B)7,6
    C)9,7
    D)7,9
    (24)閱讀下列程序,程序的輸出結(jié)果是
    #include "stdio.h"
    main()
    {
     int m,n;
     float k;
    for(m=6;m>2;m--)
     { k=0;
    for(n=m;n>1;n--)
    k=k+m*n;
     }
    printf("%f\n",k);
    }
    A)5.000000
    B)15.000000
    C)25.000000
    D)35.000000
    (25)下列程序的輸出結(jié)果是
    #include "stdio.h"
    main()
    {int i,a=0,b=0;
    for(i=1;i<10;i++)
    {if(i%2==0)
    {a++;
    continue;}
    b++;}
    printf("a=%d,b=%d",a,b);}
    A)a=4,b=4
    B)a=4,b=5
    C)a=5,b=4
    D)a=5,b=5
    (26)下列選項可以正確表示字符型常量的是
    A)′\r′
    B)"a"
    C)"\897"
    D)296
    (27)下面對C語言的描述中,正確的是
    A)函數(shù)一定有返回值,否則無法使用函數(shù)
    B)C語言函數(shù)既可以嵌套定義又可以遞歸調(diào)用
    C)在C語言中,調(diào)用函數(shù)時,只能將實參的值傳遞給形參
    D)C語言程序中有調(diào)用關系的所有函數(shù)都必須放在同一源程序文件中
    (28)閱讀下面程序段,則執(zhí)行后的結(jié)果為
    #include "stdio.h"
    main()
    {int m=4,n=2,k;
    k=fun(m,n);
    printf("%d\n",k);}
    fun(int m,int n)
    {return(m*m*m-n*n*n);}
    A)64
    B)8
    C)56
    D)0
    (29)閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是
    #include "stdio.h"
    main()
    { char fun(char,int);
     char a=′A′;
     int b=13;
     a=fun(a,b);
     putchar(a);}
    char fun(char a,int b)
    {char k;
     k=a+b;
     return k;}
    A)A
    B)M
    C)N
    D)L
    (30)編寫求兩個雙精度數(shù)之和的函數(shù),選項中正確的是
    A)double add(double a,double b)
    {double s;
     s=a+b;
     return s; }
    B)double add(double a,b)
    {double s;
     s=a+b;
     return (s);}
    C)double add(double a double b)
    {double s;
    s=a+b;
    returns;}
    D)double add(a,b)
     {double a,b,s;
    s=a+b;
    return (s);}
    (31)已知int a;則下面的說明指針變量p的語句正確的是
    A)int p=&a
    B)int *p=a
    C)int *p=&a
    D)int *p=*a
    (32)已知char **t;則變量t是
    A)指向char變量的指針
    B)指向指針的char變量
    C)指向指針的指針
    D)以上說法都不對
    (33)閱讀下面程序,執(zhí)行后的結(jié)果為
    #include "stdio.h"
    void fun(int *a,int *b)
    { int k;
     k=5;
     *a=k;
     *b=*a+k;}
    main()
    { int *a,*b,x=10,y=15;
    a=&x;
    b=&y;
    fun(a,b);
    printf("%d,%d\n",*a,*b);}
    A)10,15
    B)5,15
    C)5,10
    D)15,10
    (34)閱讀下面程序,在程序執(zhí)行后的結(jié)果為
    #include "stdio.h"
    int *fun(int *a,int *b)
    { int m;
    m=*a;
    m+=*b-3;
    return(&m);}
    main()
    {int x=21,y=35,*a=&x,*b=&y;
    int *k;
    k=fun(a,b);
    printf("%d\n",*k);}
    A)53
    B)21
    C)35
    D)14
    (35)已知int a[10];則對a數(shù)組元素的正確引用是
    A)a[10]
    B)a
    C)a+5
    D)a[10-10]
    (36)在C語言中,一維數(shù)組的定義方法為
    類型說明符 數(shù)組名
    A)[常量表達式]
    B)[整型常量]
    C)[整型變量]
    D)[整型常量]或[整型表達式]
    (37)閱讀下列程序,則運行結(jié)果為
    #include "stdio.h"
    fun()
    { static int x=5;
     x++;
     return x;}
    main()
    { int i,x;
     for(i=0;i<3;i++)
     x=fun();
     printf("%d\n",x);}
    A)5
    B)6
    C)7
    D)8
    (38)下列程序的輸出結(jié)果是
    #include "stdio.h"
    #defineM(x,y)x%y
    main()
    { int a,m=12,n=100;
    a=M(n,m);
    printf("%d\n",a--);}
    A)2
    B)3
    C)4
    D)5
    (39)閱讀下面程序,則程序段的功能是
    #include "stdio.h"
    main()
    { int c[]={23,1,56,234,7,0,34},i,j,t;
    for(i=1;i<7;i++)
    { t=c[i];j=i-1;
    while(j>=0 && t>c[j])
    {c[j+1]=c[j];j--;}
    c[j+1]=t;}
    for(i=0;i<7;i++)
    printf("%d ",c[i]);
    putchar(′\n′);}
    A)對數(shù)組元素的升序排列
    B)對數(shù)組元素的降序排列
    C)對數(shù)組元素的倒序排列
    D)對數(shù)組元素的隨機排列
    (40)閱讀下列程序,則執(zhí)行后的結(jié)果為
    #include "stdio.h"
    main()
    { int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
    printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
    A)3e,6
    B)62,5
    C)56,5
    D)3E,6
    (41)下列選項中錯誤的說明語句是
    A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′};
    B)char a[]={"toyou\0"};
    C)char a[]="toyou\0";
    D)char a[]=′toyou\0′;
    (42)下述對C語言字符數(shù)組的描述中錯誤的是
    A)字符數(shù)組的下標從0開始
    B)字符數(shù)組中的字符串可以進行整體輸入/輸出
    C)可以在賦值語句中通過賦值運算符“=”對字符數(shù)組整體賦值
    D)字符數(shù)組可以存放字符串
    (43)閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為
    #include "stdio.h"
    #include "string.h"
    main()
    {char a[30]="nice to meet you!";
    strcpy(a+strlen(a)/2,"you");
    printf("%s\n",a);}
    A)nice to meet you you
    B)nice to
    C)meet you you
    D)nice to you
    (44)閱讀下面程序,則執(zhí)行后的結(jié)果是
    #include "stdio.h"
    main()
    {char str[]="tomeetme",*p;
    for(p=str;p  printf("\n");}
    A)tomeetme
    B)tmem
    C)oete
    D)tome
    (45)下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)如下:t to meet me<回車>
    則程序輸出的結(jié)果是
    #include "stdio.h"
    main(argc,argv)
    int argc;char *argv[];
    {int i;
    printf("%d\n",argc);}
    A)3
    B)4
    C)2
    D)以上答案都不正確
    (46)閱讀下面程序,則執(zhí)行后的結(jié)果為
    #include "stdio.h"
    long fun(int n)
    {if(n>2)
    return(fun(n-1)+fun(n-2));
    else return(2);}
    main()
    {printf("%ld\n",fun(5));}
    A)10
    B)15
    C)20
    D)以上3個答案都不正確
    (47)已知如下定義,則sizeof(a)的值是
    struct{int i;
    char c;
    double a; } a;
    A)8
    B)9
    C)10
    D)11
    (48)已知函數(shù)的原形如下,其中結(jié)構(gòu)體a為已經(jīng)定義過的結(jié)構(gòu),且有下列變量定義
    struct a *f(int t1,int *t2,strcut a t3,struct a *t4)
    struct a p,*p1;int i;
    則正確的函數(shù)調(diào)用語句為
    A)&p=f(10,&i,p,p1);
    B)p1=f(i++,(int *)p1,p,&p);
    C)p=f(i+1,&(i+2),*p,p);
    D)f(i+1,&i,p,p);
    (49)下面程序段的輸出為
    #include "stdio.h"
    main()
    { printf("%d\n",12<<2);}
    A)0
    B)47
    C)48
    D)24
    (50)假定當前盤符下有兩個文本文件,如下
    文件名 a1.txt a2.txt
    內(nèi)容 123# 321#
    則下面程序段執(zhí)行后的結(jié)果為
    #include "stdio.h"
    void fc(FILE *p)
    { char c;
     while((c=fgetc(p))!=′#′)putchar(c);}
    main()
    { FILE *fp;
    fp=fopen("a1.txt","r");
    fc(fp);
    fclose(fp);
    fp=fopen("a2.txt","r");
    fc(fp);
    fclose(fp);
    putchar(′\n′);}
    A)123321
    B)123
    C)321
    D)以上答案都不正確 二、填空題
    (1)常用的黑箱測試有等價分類法、 【1】 、因果圖法和錯誤推測法4種。
    解析: 黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導出測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法4種。
    (2)測試的目的是暴露錯誤,評價程序的可靠性;而 【2】 的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
    解析: 軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定;調(diào)試也稱排錯,它是一個與測試有聯(lián)系又有區(qū)別的概念。具體來說,測試的目的是暴露錯誤,評價程序的可靠性,而調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。
    (3)軟件維護活動包括以下幾類:改正性維護、適應性維護、 【3】 維護和預防性維護。
    解析: 軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。改正性維護是指在軟件交付使用后,為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實施中的誤使用,應當進行的診斷和改正錯誤的過程;適應性維護是指為了使軟件適應變化,而去修改軟件的過程;完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性;預防性維護是為了提高軟件的可維護性、可靠性等,為以后的進一步改進軟件打下良好基礎。
    (4)在面向?qū)ο蟮脑O計中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為【4】 。
    解析: 在面向?qū)ο蠹夹g(shù)中,主要用到對象(object)、類(class)、方法(method)、消息(message)、繼承(inheritance)、封裝(encapsulation)等基本概念。其中消息是用來請求對象執(zhí)行某一處理或回答某些信息的要求。
    (5)關鍵字ASC和DESC分別表示 【5】 的含義。
    解析: ASC表示升序排列,DESC表示降序排列,多用在索引定義和SELECT語句中的ORDER子句中。
    (6)定義int a=5,b;,則執(zhí)行表達式b=++a*--a之后,變量b的值為 【6】 。
    【命題目的】考查對于基本運算符的掌握情況。
    【解題要點】++和--做前綴使用的時候,先對變量進行增1或減1,之后進行其他的運算。
    【考點鏈接】賦值運算符的優(yōu)先級僅僅高于逗號運算符。
    (7)以下程序的輸出結(jié)果是 【7】 。
    #include "stdio.h"
    main()
    {int a=065;
     printf("%d\n",--a);
    }
    【命題目的】考查對于數(shù)據(jù)的格式化輸出的掌握情況。
    【解題要點】八進制的65轉(zhuǎn)換為十進制的53之后減1輸出。
    【考點鏈接】0開頭的是八進制整數(shù)。
    (8)閱讀下面程序,則執(zhí)行后的輸出結(jié)果是 【8】 。
    #include "stdio.h"
    main()
    {int x,y,z;
    x=1;y=2;z=3;
    if(x>y)if(x>z)printf("%d",x);
    else printf("%d",y);
    printf("%d\n",z);
    }
    【命題目的】考查對于if語句的掌握情況。
    【解題要點】C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf("%d\n",z);語句。
    (9)如下語句printf("%c\n",′B′+40);在執(zhí)行后的輸出結(jié)果是 【9】 。
    【命題目的】考查對于字符常量運算的掌握情況。
    【解題要點】在C程序中的字符量可參與任何整數(shù)運算。
    【考點鏈接】%c是以字符的形式輸出。
    (10)閱讀下面程序,則程序的執(zhí)行結(jié)果為 【10】 。
    #include "stdio.h"
    main()
    {int a=30,b=20,z;
    z=fun(a+b,a-b);
    printf("%d\n",z);
    }
    fun(int a,int b)
    {int z;
    z=a/b;
    return z;
    }
    【命題目的】考查對于函數(shù)的調(diào)用和返回值的掌握情況。
    【解題要點】函數(shù)調(diào)用的時候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實參類型要一致,在沒有給出函數(shù)返回值類型的情況下,默認為整形,當返回值為整型的函數(shù)放到主函數(shù)后面時,可以不需要事先說明就調(diào)用這個函數(shù)。
    【考點鏈接】retrun既可以返回一個普通常量,也可以返回一個指針變量。
    (11)下面的程序?qū)崿F(xiàn)的是指針p所指向的地址的n個數(shù)中,求出的和最小的數(shù)據(jù),請?zhí)羁铡?BR>    fun(int *p,int n)
    {int *q;
     int max,min;
     max=min=*p;
     for(q=p; 【11】 ;q++)
     if( 【12】 )max=*q;
     else if( 【13】 )min=*q;
    }
    【命題目的】考查對于函數(shù)的地址傳遞的掌握情況。
    【解題要點】通過地址傳遞可以在被調(diào)函數(shù)中對調(diào)用函數(shù)中的變量進行引用。
    (12)下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位放在一維數(shù)組中返回,二進制的最低位放在下標為0的元素中,其他依次類推,請?zhí)羁铡?BR>     fun(int x,int b[])
    { int k=0,r;
    do{
     r=x% 【14】 ;
     b[ 【15】 ]=r;
     x/= 【16】 ;
    }while(x);
    }
    【命題目的】考查對于數(shù)組操作的綜合運用。
    【解題要點】深刻理解十進制轉(zhuǎn)化為二進制的方法,即取余法;數(shù)組名作為實參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值。
    【考點鏈接】do…while循環(huán),先執(zhí)行循環(huán)體,后判斷循環(huán)條件。
    (13)下面函數(shù)的功能是將一個字符串的內(nèi)容顛倒過來,請?zhí)羁铡?BR>    void fun(char str[])
    {int i,j, 【17】 ;
     for(i=0,j= 【18】 ;i { k=str[i];
    str[i]=str[j];
    str[j]=k;
    }
    }
    (14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
    #include "stdio.h"
    fun(int k,int *p)
    { int a,b;
    if(k==1||k==2)
     *p=1;
    else{ fun(k-1,&a);
    fun(k-2,&b);
    *p=a+b;
     }
    }
    main()
    { int x;
     fun(6,&x);
     printf("%d\n",x);
    }
    (14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
    #include "stdio.h"
    fun(int k,int *p)
    { int a,b;
    if(k==1||k==2)
     *p=1;
    else{ fun(k-1,&a);
    fun(k-2,&b);
    *p=a+b;
     }
    }
    main()
    { int x;
     fun(6,&x);
     printf("%d\n",x);
    }
    (15)閱讀下列程序,則程序的輸出結(jié)果為【20】。
    #include "stdio.h"
    struct ty
    {int data;
     char c;
    };
    main()
    { struct ty a={30,′x′};
     fun(a);
     printf("%d%c",a.data,a.c);
    }
    fun(struct ty b)
    { b.data=20;
    b.c=′y′;
    }
    【命題目的】考查對于結(jié)構(gòu)體的掌握情況。
    【解題要點】本題的參數(shù)傳遞屬于值傳遞,所以函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。