歷年全國計算機等級考試二級C語言筆試模擬題及答案

字號:

(11)以下敘述中正確的是
    A.程序設計的任務就是編寫程序代碼并上機調試
    B.程序設計的任務就是確定所用數(shù)據(jù)結構
    C.程序設計的任務就是確定所用算法
    D.以上三種說法都不完整
    (12)以下選項中,能用作用戶標識符的是
    A.void
    B.8_8
    C._0_
    D.unsigned
    (13)閱讀以下程序
     #include
     main()
     { int case; float printF;
     printf(“請輸入2個數(shù):”);
     scanf(“%d %f”,&case,&pjrintF);
     printf(“%d %f\n”,case,printF);
     }
     該程序編譯時產生錯誤,其出錯原因是
    A.定義語句出錯,case是關鍵字,不能用作用戶自定義標識符
    B.定義語句出錯,printF不能用作用戶自定義標識符
    C.定義語句無錯,scanf不能作為輸入函數(shù)使用
    D.定義語句無錯,printf不能輸出case的值
    (14)表達式:(int)((double)9/2)-(9)%2的值是
    A.0
    B.3
    C.4
    D.5
    (15)若有定義語句:int x=10;,則表達式x-=x+x的值為
    A.-20
    B.-10
    C.0
    D.10
    (16)有以下程序
     #include
     main()
     { int a=1,b=0;
     printf(“%d,”,b=a+b);
     printf(“%d\n”,a=2*b);
     }
     程序運行后的輸出結果是
    A.0,0
    B.1,0
    C.3,2
    D.1,2
    17)設有定義:int a=1,b=2,c=3;,以下語句中執(zhí)行效果與其它三個不同的是
    A.if(a>B. c=a,a=b,b=c;
    B.if(a>B. {c=a,a=b,b=c;}
    C.if(a>B. c=a;a=b;b=c;
    D.if(a>B. {c=a;a=b;b=c;}
    (18)有以下程序
     #include
     main()
     { int c=0,k;
     for (k=1;k<3;k++)
     switch (k)
     { default: c+=k
     case 2: c++;break;
     case 4: c+=2;break;
     }
     printf(“%d\n”,C.;
     }
     程序運行后的輸出結果是
    A.3
    B.5
    C.7
    D.9
    (19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是
    A.if((a>b)&&(b>C.) k=1;
    else k=0;
    B.if((a>b)||(b>C. k=1;
    else k=0;
    C.if(a<=B. k=0;
    else if(b<=C.k=1;
    D.if(a>B. k=1;
    else if(b>C.k=1;
     else k=0;
    20)有以下程序
     #include
     main()
     { char s[]={“012xy”};int i,n=0;
     for(i=0;s[i]!=0;i++)
    if(s[i]>=’a’&&s[i]<=’z’) n++;
     printf(“%d\n”,n);
     }
     程序運行后的輸出結果是
    A.0
    B.2
    C.3
    D.5
    (21)有以下程序
     #include
     main()
     { int n=2,k=0;
     while(k++&&n++>2);
     printf(“%d %d\n”,k,n);
     }
     程序運行后的輸出結果是
    A.0 2
    B.1 3
    C.5 7
    D.1 2
    (22)有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是
    A.char a=’a’;
    B.char a=’\n’;
    C.char a=’aa’;
    D.char a=’\x2d’;
    (23)有以下程序
    #include
    main()
    { char c1,c2;
     c1=’A’+’8’-‘4’;
     c2=’A’+’8’-‘5’;
     printf(“%c,%d\n”,c1,c2);
    }
    已知字母A的ASCII碼為65,程序運行后的輸出結果是
    A.E,68
    B.D,69
    C.E,D
    D.輸出無定值
    (24)有以下程序
     #include
     void fun(int p)
     { int d=2;
     p=d++; printf(“%d”,p);}
     main()
     { int a=1;
     fun(a); printf(“%d\n”,a);}
     程序運行后的輸出結果是
    A.32
    B.12
    C.21
    D.22
    (25)以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找大值并作為函數(shù)值返回,但程序中有錯導致不能實現(xiàn)預定功能
    #define MIN -2147483647
     int findmax (int x[],int n)
     { int i,max;
     for(i=0;i
     { max=MIN;
     if(max
     return max;
     }
     造成錯誤的原因是
    A.定義語句int i,max;中max未賦初值
    B.賦值語句max=MIN;中,不應給max賦MIN值
    C.語句if(max
    D.賦值語句max=MIN;放錯了位置
    (26)有以下程序
     #include
     main()
     { int m=1,n=2,*p=&m,*q=&n,*r;
     r=p;p=q;q=r;
     printf(“%d,%d,%d,%d\n”,m,n,*p,*q);
     }
     程序運行后的輸出結果是
    A.1,2,1,2
    B.1,2,2,1
    C.2,1,2,1
    D.2,1,1,2
    (27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是
    A.p=a
    B.q[i]=a[i]
    C.p=a[i]
    D.p=&a[2][1]
    (28)有以下程序
     #include
     #include
     main()
     { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
     printf(“%d,”,strlen(p));printf(“%s\n”,p);
     }
     程序運行后的輸出結果是
    A.9,One*World
    B.9,One*Dream
    C.10,One*Dream
    D.10,One*World
    (29)有以下程序
     #include
     main()
     { int a[ ]={2,3,5,4},i;
     for(i=0;i<4;i++)
     switch(i%2)
     { case 0:switch(a[i]%2)
     {case 0:a[i]++;break;
     case 1:a[i]--;
     }break;
     case 1:a[i[=0;
    }
    for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);
    }
    A.3 3 4 4
    B.2 0 5 0
    C.3 0 4 0
    D.0 3 0 4
    (30)有以下程序
     #include
    #include
     main()
    { char a[10]=”abcd”;
     printf(“%d,%d\n”,strlen(a),sizeof(a));
    }
    程序運行后的輸出結果是
    A.7,4
    B.4,10
    C.8,8
    D.10,10
    (31)下面是有關C語言字符數(shù)組的描述,其中錯誤的是
    A.不可以用賦值語句給字符數(shù)組名賦字符串
    B.可以用輸入語句把字符串整體輸入給字符數(shù)組
    C.字符數(shù)組中的內容不一定是字符串
    D.字符數(shù)組只能存放字符串
    (32)下列函數(shù)的功能是
     fun(char * a,char * b)
     { while((*b=*a)!=’\0’) {a++,b++;} }
    A.將a所指字符串賦給b所指空間
    B.使指針b指向a所指字符串
    C.將a所指字符串和b所指字符串進行比較
    D.檢查a和b所指字符串中是否有’\0’
    (33)設有以下函數(shù)
     void fun(int n,char * s) {……}
     則下面對函數(shù)指針的定義和賦值均是正確的是
    A.void (*pf)(); pf=fun;
    B.viod *pf(); pf=fun;
    C.void *pf(); *pf=fun;
    D.void (*pf)(int,char);pf=&fun;
    (34)有以下程序
     #include
     int f(int n);
     main()
     { int a=3,s;
     s=f(a);s=s+f(a);printf(“%d\n”,s);
     }
     int f(int n)
     { static int a=1;
     n+=a++;
     return n;
     }
     程序運行以后的輸出結果是
    A.7
    B.8
    C.9
    D.10
    (35)有以下程序
     #include
     #define f(x) x*x*x
     main()
     { int a=3,s,t;
     s=f(a+1);t=f((a+1));
     printf(“%d,%d\n’,s,t);
     }
     程序運行后的輸出結果是
    A.10,64
    B.10,10
    C.64,10
    D.64,64
    (36)下面結構體的定義語句中,錯誤的是
    A.struct ord {int x;int y;int z;}; struct ord a;
    B.struct ord {int x;int y;int z;} struct ord a;
    C.struct ord {int x;int y;int z;} a;
    D.struct {int x;int y;int z;} a;
    (37)設有定義:char *c;,以下選項中能夠使字符型指針c正確指向一個字符串的是
    A.char str[ ]=”string”;c=str;
    B.scanf(“%s”,C.;
    C.c=getchar();
    D.*c=”string”;
    (38)有以下程序
    #include
    #include
    struct A
    { int a; char b[10]; double c;};
    struct A f(struct A t);
    main()
    { struct A a={1001,”ZhangDa”,1098.0};
    a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.C.;
    }
    struct A f(struct A t)
    ( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
    程序運行后的輸出結果是
    A.1001,ZhangDa,1098.0
    B.1001,ZhangDa,1202.0
    C.1001,ChangRong,1098.0
    D.1001,ChangRong,1202.0
    (39)若有以下程序段
    int r=8;
    printf(“%d\n”,r>>1);
    輸出結果是
    A.16
    B.8
    C.4
    D.2
    (40)下列關于C語言文件的敘述中正確的是
    A.文件由一系列數(shù)據(jù)依次排列組成,只能構成二進制文件
    B.文件由結構序列組成,可以構成二進制文件或文本文件
    C.文件由數(shù)據(jù)序列組成,可以構成二進制文件或文本文件
    D.文件由字符序列組成,其類型只能是文本文件
    二、填空題(每空2分,共30分)
    (1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中共有【1】 個結點。
    (2)程序流程圖中的菱形框表示的是 【2】 。
    (3)軟件開發(fā)過程主要分為需求分析、設計、編碼與測試四個階段,其中 【3】 階段產生“軟件需求規(guī)格說明書。
    (4)在數(shù)據(jù)庫技術中,實體集之間的聯(lián)系可以是一對一或一對多或多對多的,那么“學生”和“可選課程”的聯(lián)系為 【4】 。
    (5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。其中可以作為主關鍵字的是 【5】 。
    (6)若有定義語句:int a=5;,則表達式:a++的值是 【6】 。
    (7)若有語句double x=17;int y;,當執(zhí)行y=(int)(x/5)%2;之后y的值為 【7】 。
    (8)以下程序運行后的輸出結果是 【8】 。
    #include
    main()
    { int x=20;
     printf(“%d”,0
     printf(“%d\n”,0
    (9)以下程序運行后的輸出結果是 【9】 。
    #include
    main()
    { int a=1,b=7;
     do {
     b=b/2;a+=b;
     } while (b>1);
     printf(“%d\n”,a);}
    (10)有以下程序
    #include
    main()
    { int f,f1,f2,i;
     f1=0;f2=1;
     printf(“%d %d”,f1,f2);
     for(i=3;i<=5;i++)
     { f=f1+f2; printf(“%d”,f);
    f1=f2; f2=f;
     }
     printf(“\n”);
    }
    程序運行后的輸出結果是 【10】 。
    (11)有以下程序
    #include
    int a=5;
    void fun(int b)
    { int a=10;
     a+=b;printf(“%d”,a);
    }
    main()
    { int c=20;
     fun(c);a+=c;printf(“%d\n”,a);
    }
    程序運行后的輸出結果是 【11】 。
    (12)設有定義:
    struct person
    { int ID;char name[12];}p;
    請將scanf(“%d”, 【12】 );語句補充完整,使其能夠為結構體變量p的成員ID正確讀入數(shù)據(jù)。
    (13)有以下程序
    #include
    main()
    { char a[20]=”How are you?”,b[20];
     scanf(“%s”,b);printf(“%s %s\n”,a,b);
    }
    程序運行時從鍵盤輸入:How are you?<回車>
    則輸出結果為 【13】 。
    (14)有以下程序
    #include
    typedef struct
    { int num;double s}REC;
    void fun1( REC x ){x.num=23;x.s=88.5;}
    main()
    { REC a={16,90.0 };
     fun1(a);
     printf(“%d\n”,a.num);
    }
    程序運行后的輸出結果是 【14】 。
    (15)有以下程序
    #include
    fun(int x)
    { if(x/2>0) run(x/2);
     printf(“%d ”,x);
    }
    main()
    { fun(6);printf(“\n”); }
    程序運行后的輸出結果是 【15】 。
    (1)C(2)B(3)D(4)A(5)B
    (6)A(7)C(8)B(9)C(10)D
    (11)D(12)C(13)A(14)B(15)B
    (16)D(17)C(18)A(19)A(20)B
    (21)D(22)C(23)A(24)C(25)D
    (26)B(27)A(28)C(29)C(30)B
    (31)D(32)A(33)A(34)C(35)A
    (36)B(37)A(38)D(39)C(40)C
    二、填空題
    (1)14
    (2)邏輯條件
    (3)需求分析
    (4)多對多
    (5)身份證號
    (6)5
    (7)1
    (8)1 0
    (9)5
    (10)0 1 123