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

字號:

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