07年4月等級考試二級C語言考前密卷(5)

字號:

一、選擇題
    (1)假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為
    A)log2n
    B)n2
    C)O(n1.5)
    D)n(n-1)/2
    (2)算法分析的目的是
    A)找出數(shù)據(jù)結(jié)構(gòu)的合理性
    B)找出算法中輸入和輸出之間的關(guān)系
    C)分析算法的易懂性和可靠性
    D)分析算法的效率以求改進(jìn)
    (3)線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是
    A)每個(gè)元素都有一個(gè)直接前件和直接后件
    B)線性表中至少要有一個(gè)元素
    C)表中諸元素的排列順序必須是由小到大或由大到小
    D)除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件
    (4)在單鏈表中,增加頭結(jié)點(diǎn)的目的是
    A)方便運(yùn)算的實(shí)現(xiàn)
    B)使單鏈表至少有一個(gè)結(jié)點(diǎn)
    C)標(biāo)識表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置
    D)說明單鏈表是線性表的鏈?zhǔn)酱鎯?shí)現(xiàn)
    (5)軟件工程的出現(xiàn)是由于
    A)程序設(shè)計(jì)方法學(xué)的影響
    B)軟件產(chǎn)業(yè)化的需要
    C)軟件危機(jī)的出現(xiàn)
    D)計(jì)算機(jī)的發(fā)展
    (6)軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于
    A)硬件資源
    B)通信資源
    C)支持軟件
    D)輔助資源
    (7)在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示
    A)模塊之間的調(diào)用關(guān)系
    B)程序的組成成分
    C)控制程序的執(zhí)行順序
    D)數(shù)據(jù)的流向
    (8)分布式數(shù)據(jù)庫系統(tǒng)不具有的特點(diǎn)是
    A)數(shù)據(jù)分布性和邏輯整體性
    B)位置透明性和復(fù)制透明性
    C)分布性
    D)數(shù)據(jù)冗余
    (9)關(guān)系表中的每一橫行稱為一個(gè)
    A)元組
    B)字段
    C)屬性
    D)碼
    (10)下列數(shù)據(jù)模型中,具有堅(jiān)實(shí)理論基礎(chǔ)的是
    A)層次模型
    B)網(wǎng)狀模型
    C)關(guān)系模型
    D)以上3個(gè)都是
    (11)以下敘述不正確的是
    A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成
    B)一個(gè)C源程序必須包含一個(gè)main函數(shù)
    C)C程序的基本組成單位是函數(shù)
    D)在C程序中,注釋說明只能位于一條語句的后面
    (12)在C語言中,int,char和short三種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)
    A)由用戶自己定義
    B)均為2個(gè)字節(jié)
    C)是任意的
    D)由所用機(jī)器的機(jī)器字長決定
    (13)以下敘述正確的是
    A)在C程序中,每行中只能寫一條語句
    B)若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)
    C)在C程序中,無論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無誤地表示
    D)在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符
    (14)C語言中的標(biāo)識符只能由字母,數(shù)字和下劃線三種字符組成,且第一個(gè)字符
    A)必須為字母
    B)必須為下劃線
    C)必須為字母或下劃線
    D)可以是字母,數(shù)字和下劃線中任一字符
    (15)已知各變量的類型說明如下:
    int k,a,b;
    unsigned long w=5;
    double x=1.42;
    則以下不符合C語言語法的表達(dá)式是
    A)x%(-3)
    B)w+=-2
    C)k=(a=2,b=3,a+b)
    D)a+=a-=(b=4)*(a=3)
    (16)x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是
    A)INPUT x、y、z;
    B)scanf("%d%d%d",&x,&y,&z);
    C)scanf("%d%d%d",x,y,z);
    D)read("%d%d%d",&x,&y,&z);
    (17)設(shè)x、y均為整型變量,且x=10 y=3,則以下語句的輸出結(jié)果是
    printf("%d,%d\n",x--,--y);
    A)10,3
    B)9,3
    C)9,2
    D)10,2
    (18)以下程序的輸出結(jié)果是
    main()
    { int a=4,b=5,c=0,d;
    d=!a&&!b||!c;
    printf("%d\n",d);}
    A)1
    B)0
    C)非0的數(shù)
    D)-1
    (19)執(zhí)行下列程序時(shí)輸入:123<空格>456<空格>789<回車> 輸出結(jié)果是
    main()
    { char s[100]; int c, i;
    scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
    printf("%c,%d,%s\n",c,i,s);}
    A)123,456,789
    B)1,456,789
    C)1,23,456,789
    D)1,23,456
    (20)下面有關(guān)for循環(huán)的正確描述是
    A)for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
    B)for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達(dá)式
    C)在for循環(huán)中,不能用break語句跳出循環(huán)體
    D)for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號括起來
    (21)以下程序的輸出結(jié)果是
    main()
    { int i,j,x=0;
    for(i=0;i<2;i++)
    { x++;
    for(j=0;j<3;j++)
    { if(j%2)continue;
    x++;
    }
    x++;
    }
    printf("x=%d\n",x);
    }
    A)x=4
    B)x=8
    C)x=6
    D)x=12
    (22)設(shè)有以下程序段
    int x=0,s=0;
    while(!x!=0)s+=++x;
    printf("%d",s);
    則
    A)運(yùn)行程序段后輸出0
    B)運(yùn)行程序段后輸出1
    C)程序段中的控制表達(dá)式是非法的
    D)程序段執(zhí)行無限次
    (23)對下Ⅰ,Ⅱ兩個(gè)語句描述正確的是
    Ⅰ.while(1)Ⅱ.for(;;)
    A)都是無限循環(huán)
    B)Ⅰ是無限循環(huán),Ⅱ錯(cuò)誤
    C)Ⅰ循環(huán)一次,Ⅱ錯(cuò)誤
    D)以上答案都錯(cuò)
    (24)若有以下定義,則能使值為3的表達(dá)式是
    int k=7,x=12;
    A)x%=(k%=5)
    B)x%=(k-k%5)
    C)x%=k-k%5
    D)(x%=k)-(k%=5)
    (25)設(shè)有:
    int a=1,b=2,c=3,d=4,m=2,n=2;
    執(zhí)行 (m=a>b)&&(n=c>d)后n的值是
    A)1
    B)2
    C)3
    D)4
    (26)以下描述中正確的是
    A)由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句
    B)do-while循環(huán)由do開始,用while結(jié)束,在while(表達(dá)式)后面不能寫分號
    C)在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
    D)do-while循環(huán)中,根據(jù)情況可以省略while
    (27)以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值
    fun(int *a, int n)
    { int i,j=0,p;
    p=j;
    for(i=j;i    if(a[i]  return(p);}
    在下劃線處應(yīng)填入的是
    A)i=p
    B)a[p]=a[i]
    C)p=j
    D)p=I
    (28)以下敘述正確的是
    A)函數(shù)可以嵌套定義但不能嵌套調(diào)用
    B)函數(shù)既可以嵌套調(diào)用也可以嵌套定義
    C)函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
    D)函數(shù)可以嵌套調(diào)用但不可以嵌套定義
    (29)若有說明語句
    char a[]="It is mine";
    char *p="It is mine";
    則以下不正確的敘述是
    A)a+1表示的是字符t的地址
    B)p指向另外的字符串時(shí),字符串的長度不受限制
    C)p變量中存放的地址值可以改變
    D)a中只能存放10個(gè)字符
    (30)以下程序的運(yùn)行結(jié)果是
    sub(int x,int y,int *z)
    {*z=y-x;}
    main()
    { int a,b,c;
    sub(10,5,&a);
    sub(7,a,&b);
    sub(a,b,&c);
    printf("%4d,%4d,%4d\n",a,b,c);}
    A)5,2,3
    B)-5,-12,-7
    C)-5,-12,-17
    D)5,-2,-7
    (31)若二維數(shù)組a有m列,則計(jì)算任一元素a[i][j]在數(shù)組中相對位置的公式為 (假設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上)
    A)i*m+j
    B)j*m+i
    C)i*m+j-1
    D)i*m+j+1
    (32)下列說法正確的是
    int i,x;
    for(i=0,x=0;i<=9 &&x!=876;i++)scanf("%d",x);
    A)最多的執(zhí)行10次
    B)最多執(zhí)行9次
    C)是無限循環(huán)
    D)循環(huán)體一次也不執(zhí)行
    (33)若有下面的程序片段:
    int[12]={0},*p[3],**pp,i;
    for(i=0;i<3;i)
    p[i]=&a[i*4];
    pp=p;
    則對數(shù)組元素的錯(cuò)誤引用是
    A)pp[0][1]
    B)a[10]
    C)p[3][1]
    D)*(*(p+2)+2)
    (34)若有說明:int a[3][4]={0};則下面正確的敘述是
    A)只有元素a[0][0]可得到初值0
    B)此說明語句不正確
    C)數(shù)組a中各元素都可得到初值,但其值不一定為0
    D)數(shù)組a中每個(gè)元素均可得到初值0
    (35)對下面程序描述正確的一項(xiàng)是 (每行程序前面的數(shù)字表示行號)
    1 main()
    2 {
    3 float a[3]={0.0};
    4 int i;
    5 for(i=0;i<3;i++)scanf("%d",&a[i]);
    6 for(i=1;i<3;i++)a[0]=a[0]+a[i];
    7 printf("%f\n",a[0]);
    8 }
    A)沒有錯(cuò)誤
    B)第3行有錯(cuò)誤
    C)第5行有錯(cuò)誤
    D)第7行有錯(cuò)誤
    (36)以下不正確的說法是
    C語言規(guī)定:
    A)實(shí)參可以是常量,變量或表達(dá)式
    B)形參可以是常量,變量或表達(dá)式
    C)實(shí)參可以為任何類型
    D)形參應(yīng)與其對應(yīng)的實(shí)參類型一致
    (37)已有如下數(shù)組定義和f函數(shù)調(diào)用語句,則在f函數(shù)的說明中,對形參數(shù)組array的正確定義方式為
    int a[3][4];
    f(a);
    A)f(array[3][4])
    B)f(int array[3][])
    C)f(int array[][4])
    D)f(int array[][])
    (38)下面程序的輸出結(jié)果為
    main()
    { int a,b;b=(a=3*5,a*4,a*5);
    printf("%d",b);}
    A)60
    B)75
    C)65
    D)無確定值
    (39)在位運(yùn)算中,操作數(shù)右移一位,其結(jié)果相當(dāng)于
    A)操作數(shù)乘以2
    B)操作數(shù)除以2
    C)操作數(shù)乘以4
    D)操作數(shù)除以4
    (40)有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是
    struct node
    { char data;
    struct node *next;
    } a,b,*p=&a,*q=&b;
    A)a.next=q;
    B)p.next=&b;
    C)p->next=&b;
    D)(*p).next=q;