您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第十二章 全国计算机等级考试(二级C语言) > 【12.3 第二套笔试题】

12.3 第二套笔试题

 

第二套笔试题

一、选择题((1)~(40)每小题1分,(41)~(50)每小题2分,共60分)下列各题ABCD四个选项中,只有一个选项是正确的,将正确选项涂在答题卡的相应位置上,答在试卷上不得分。

1算法的空间复杂度是指     

A.算法程序的长度                                        B.算法程序中的指令条数

C.算法程序所占的存储空间                          D.执行过程中所需要的存储空间

2用链表表示线性表的优点是     

A.便于随机存取

B.花费的存储空间较顺序存储少

C.便于插入和删除操作

D.数据元素的物理顺序与逻辑顺序相同

3数据结构中,与所使用的计算机无关的是数据的     

A.存储结构                                                  B.物理结构              

C.逻辑结构                                                  D.物理和存储结构

4结构化程序设计主要强调的是     

A.程序的规模                                               B.程序的效率   

C.程序设计语言的先进性                             D.程序的易读性

5软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指   

A.模块间的关系

B.系统结构部件转换成软件的过程描述

C.软件层次结构

D.软件开发过程

6检查软件产品是否符合需求定义的过程称为     

A.确认测试                                                  B.集成测试        

C.验证测试                                                  D.验收测试

7数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符中,不属于数据流图合法图符的是     

A.控制流                                                      B.加工                     

C.数据存储                                                  D.源程序

8应用数据库的主要目的是     

A.解决数据保密问题                                    B.解决数据完整性问题

C.解决数据共享问题                                    D.解决数据量大的问题

9在数据库设计中,将E-R图转换成关系数据模型的过程属于     

A.需求分析阶段                                           B.逻辑设计阶段

C.概念设计阶段                                           D.物理设计阶段

10在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中,数据独立性最高的阶段是     

A.数据库系统阶段                                      B.文件系统阶段

C.人工管理阶段                                          D.数据项管理阶段

11以下叙述中,正确的是     

AC语言比其他语言高级

BC语言可以不用编译就能被计算机识别执行

CC语言以接近英语国家的自然语言和数学语言作为语言的表达形式

DC语言出现的最晚,具有其他语言的一切优点

12C语言中,用于结构化程序设计的三种基本结构是     

A.顺序结构、选择结构、循环结构                    Bifswitchbreak

Cforwhiledo...while                             Difforcontinue

13在一个C语言程序中,     

Amain( )函数必须出现在所有函数之前

Bmain( )函数可以在任何地方出现

Cmain( )函数必须出现在所有函数之后

Dmain( )函数必须出现在固定位置

14下列叙述中,正确的是     

AC语言中既有逻辑类型,也有集合类型

BC语言中没有逻辑类型,但有集合类型

CC语言中有逻辑类型,但没有集合类型

DC语言中既没有逻辑类型,也没有集合类型

15以下关于C语言用户标识符的叙述中,正确的是     

A.用户标识符中可以出现下画线和中画线(减号)

B.用户标识符中不可以出现中画线,但可以出现下画线

C.用户标识符中可以出现下画线,但不可以放在用户标识符的开头

D.用户标识符中可以出现下画线和数字,它们都可以放在用户标识符的开头

16)以下程序片段(n所赋值是八进制数)的输出结果是     

int m=32767,n=032767

printf("%d,%o/n",m,n);

A32767,32767                                            B32767,032767

C32767,77777                                            D32767,077777

17)下列关于单目运算符++--的叙述中,正确的是     

A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以是char型变量、int型变量和float型变量

18)以下程序片段的输出结果是     

int m=0xabc,n=0xabc;

m-=n;

printf("%x\n",m);

A0X0                                                               B0x0                       

C0                                                             D0XABC

19)以下程序片段执行时,若从键盘上输入10A10<CR>,则输出结果是     

int m=0,n=0;

char  c='a';

scanf("%d%c%d",&m,&c,&n);

printf("%d,%c,%d\n",m,c,n);

A10,A,10                B10,a,10                   C10,a,0              D10,A,0

20)以下程序的输出结果是     

main()

{    

    int i;

    for(i=0;i<3;i++)

        switch(i)

        {

            case 1: printf("%d",i);

            case 2: printf("%d",i);

            default: printf("%d",i);

        }

}

A011122                 B012                        C012020            D120

21)以下程序的输出结果是     

main()

{

    int i=1,j=1,k=2;

    if((j++||++)&& i++)

         printf("%d,%d,%d\n",i,j,k);

}

A1,1,2                    B2,2,1                      C2,2,2               D2,2,3

22)以下程序的输出结果是     

main()

{

    int a=5,b=4,c=3,d=2;

    if(a>b>c)

        printf("%d\n",d);

    else if((c-1>=d)==1)

             printf("%d\n",d+1);

         else

             printf("%d\n",d+2);

}

A2                                                             B3                    

C4                                                             D.编译时出错,无结果

23)以下程序的输出结果是     

main()

{

    int p[7]={11,13,14,15,16,17,18},i=0,k=0;

    while(i<7 && p[i]%2)

    {

        k=k+p[i];

        i++;

    }

    printf("%d\n",k);

}

A58                        B56                          C45                   D24

24)以下程序的输出结果是     

main()

{

    int i=0,s=0;

    do

    {

        if(i%2) { i++; continue; }

        i++;

        s+=i;

    } while(i<7);

    printf("%d\n",s);

}

A16                        B12                          C28                   D21

25)以下程序的输出结果是     

main()

{

    int i=10,j=1;

    printf("%d,%d\n",i--,++j);

}

A9,2                       B10,2                       C9,1                  D10,1

26)有以下程序:

main()

{

    char a,b,c,*d;

    a='\'; b='\xbc';

    c='\0xab'; d="\017";

    printf("%c%c%c\n",a,b,c,*d);

}

若编译时出现错误,则以下叙述中,正确的是     

A.程序中只有a='\';语句不正确

B.程序中只有b='\xbc';语句不正确

C.程序中只有d="\0127";语句不正确

D.程序中a='\';c='\0xab';语句都不正确

27)以下程序的输出结果是     

int f1(int x,int y)

{return  x>y?x:y; }

int f2(int x,int y)

{return  x>y?y:x; }

main()

{

    int a=4,b=3,c=5,d,e,f;

    d=f1(a,b);

    d=f1(d,c);

    e=f2(a,b);

    e=f2(e,c);

    f=a+b+c-d-e;

    printf("%d,%d,%d\n",d,f,e);

}

A3,4,5                                                       B5,3,4                     

C5,4,3                                                       D3,5,4

28)以下程序的输出结果是     

void f(int x,int y)

{

    int t;

    if(x<y) { t=x; x=y; y=t;}

}

main()

{

    int a=4,b=3,c=5;

    f(a,b);

    f(a,c);

    f(b,c);

    printf("%d,%d,%d\n",a,b,c);

}

A3,4,5                                                       B5,3,4                     

C5,4,3                                                       D4,3,5

29)若有如下程序片段:

#include <stdio.h>

int a=4,b=3,*p,*q,*w;

p=&a; q=&b; w=q; q=NULL;

则以下选项中,错误的语句是     

A*q=0;                   Bw=p;                      C*p=a;                     D*p=*w;

30)以下程序的输出结果是      

int *f(int *x,int *y)

{

    if(*x<*y) return x;

    else return y;

}

main()

{

    int a=7,b=8,*p=&a,*q=&b,*r;

    r=f(p,q);

    printf("%d,%d,%d\n",*p,*q,*r);

}

A7,8,8                                                       B7,8,7                     

C8,7,7                                                       D8,7,8

31)以下程序的输出结果是     

main()

{

    char *s[]={"one","two","three"},*p;

    p=s[1];

    printf("%c,%s\n",*(p+1),s[0]);

}

An,two                                                      Bt,one                     

Cw,one                                                      Do,two

32)以下程序的输出结果是     

main()

{   

    int x[8]={8,7,6,5,0,0},*s;

    s=x+3;

    printf("%d\n",s[2]);

}

A.随机值                 B0                            C5                     D6

33)以下选项中,能正确定义数组并赋初值的语句是     

Aint N=5,b[N][N];                                      Bint a[1][2]={{1},{3}};

Cint c[2][1]={{1,2},{3,4}};                        Dint d[3][2]={{1,2},{34}};

34)以下程序的输出结果是     

main()

{

   int m[][3]={1,4,7,2,5,8,3,6,9};

   int i,j,k=2;

   for(i=0;i<3;i++)

       printf("%d",m[k][i]);

}

A4 5 6                    B2 5 8                      C3 6 9               D7 8 9

35)若以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#define  N  10

void  arrin(int x[N])

{

    int  i=0;

    while(i<N)

      scanf("%d", _______);

}

则在下画线处应填入的是     

Ax+i                       B&x[i+1]                  Cx+(i++)           D&x[++i]

36)以下程序的输出结果是     

main()

{

    char s[]="\n123\\";

    printf("%d,%d\n",strlen(s),sizeof(s));

}

A.赋初值的字符串有错                               B6,7                 

C5,6                                                          D6,6

37)以下函数的功能是     

fun(char *s1,char *s2)

{

    int i=0;

    while(s1[i]==s2[i] && s2[i]!='\0')

        i++;

    return(s1[i]==s2[i] && s2{i}!=='\0');

}

A.将s2所指字符串赋给s1

B比较s1s2所指字符串的大小,若s1s2所指定符串大,函数值为1,否则函数值为0

C.比较s1s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D.比较s1s2所指字符串的长度,若s1s2所指字符串长,函数值为1,否则函数值为0

38)以下叙述中,正确的是     

A.全局变量的作用域一定比局部变量的作用域范围大

B.静态(static)类别变量的生存期贯穿于整个程序的运行期间

C.函数的形参都属于全局变量

D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值

39)设有如下说明:

typedef struct

{  int  n;  char  c;  double  x;} STD;

则以下选项中,能正确定义结构体数组并赋初值的语句是     

ASTD tt[2]={{1,'A',62},2, 'B',75};

BSTD tt[2]= {1,"A",62},{2, "B",75};

Cstruct tt[2]={{1,'A'},{2, 'B'}};

Dstruct tt[2]={{1,"A",62.5},{2, "B",75.0}};

40)以下程序的输出结果是     

main()

{

    union

{

             unsigned int n;

             unsigned char c;

         } u1;

    u1.c='A';

    printf("%c\n",u1.n);

}

A.产生语法错误                                         B.随机值                  

CA                                                            D65

41)以下程序的输出结果是     

main()

{

    char str[]="xyz",*ps=str;

    while(*ps)

       ps++;

    for(ps--;ps-str>=0;ps--)

       puts(ps);

}

Ayz                        Bz                            Cz                     Dx

         xyz                yz                  yz               xy

         xyz                xyz

42)以下程序的输出结果是     

main()

{

    int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;

    pa=a;

    for(i=0;i<3;i++)

        if(i<2) pa[1][i]=pa[1][i]-1;

        else pa[1][i]=1;

    printf("%d\n",a[0][1]+a[1][1]+a[1][2]);

}

A7                                                            B6                           

C8                                                             D.无确定值

43)以下程序的输出结果是     

void fun(int *a,int i,int j)

{

    int t;

    if(i<j)

    {

        t=a[i]; a[i]=a[j]; a[j]=t;

        fun(a,++i,--j);

    }

}

main()

{

    int a[]={1,2,3,4,5,6},i;

    fun(a,0,5);

    for(i=0;i<6;i++)

        printf("%d ",a[i]);

}

A6 5 4 3 2 1                                               B4 3 2 1 5 6                    

C4 5 6 1 2 3                                               D1 2 3 4 5 6

44)有以下程序:

main(int argc,char *argv[])

{

    int n,i=0;

    while(argv[1][i]!='\0')

    {

        n=fun();

        i++;

    }

    printf("%d\n",n*argc);

}

int fun()

{

    static int s=0;

    s+=1;

    return s;

}

程序经编译、连接后、生成可执行文件exam.exe,若输入以下命令行:

exam 123<CR>

则运行结果为     

A6                                                            B8                           

C3                                                             D4

45)以下程序片段中,能够通过调用函数fun( ),使main( )函数中的指针变量p指向一个合法的整型单元的是     

Amain()                                                    Bmain

          {                                      {

              int *p;                                 int *p;

              fun(p);                                 fun(&p);

          }                                      }

          int fun(int *p)                            int fun(int **p)

          {int s; p=&s;}                             {int  s; *p=&s;}

C#include <stdlib.h>                    D#include <stdlib.h>

          main()                                 main()

          {                                      {

              int *p;                                 int *p;

              fun(&p);                                fun(p);

          }                                      }

          int fun(int  **p)                       int fun(int  *p)

          {*p=(int *)malloc(2);}                 {p=(int *)malloc(sizeo(int));}

46)若要说明一个类型名STP,使得定义语句STP s等价于char *s,则以下选项中,正确的是     

Atypedef  STP  char  *s;                        Btypedef  *char  STP;

Ctypedef  stp  *char;                                Dtypedef  char*  STP;

47)设有如下定义:

struct  ss

{  

    char name[10];

    int age;

    char sex;

} std[3],*p=std;

以下各输入语句中,错误的是     

Ascanf("%d",&(*p).age);                                   Bscanf("%s",&std.name);

Cscanf("%c",&std[0].sex)                                   Dscanf("%c",&(p->sex));

48)设char型变量x中的值为10100111,则表达式(2+x)^(3)的值是     

A10101001                                                B10101000

C11111101                                                D01010101

49)以下叙述中,不正确的是     

AC语言中的文本文件以ASCII码形式存储数据

BC语言中,对二进制文件的访问速度比文本文件快

CC语言中,随机读写方式不适用于文本文件

DC语言中,顺序读写方式不适用于二进制文件

50)以下程序要把从键盘输入的字符输出到名为abc.txt的文件中,直到从键盘读入字符#时,结束输入和输出操作,但程序有错。

#include <stdio.h>

main()

{

    FILE *fout;

    char  ch;

    fout=fopen("abc.txt","w");

    ch=fgetc(stdin);

    while(ch!='#')

    {

        fputc(ch,fout);

        ch=fgetc(stdin);

    }

    fclose(fout);

}

出错的原因是     

A.函数fopen( )的调用形式错误                  B.输入文件没有关闭

C.函数fgetc( )的调用形式错误                    D.文件指针stdin没有定义

二、填空题(每空2分,共20分)将正确答案分别写在答题卡中序号为【1】~【20】的横线上,答在试卷上不得分。

1)数据的逻辑结构分为线性结构和1两大类。

2)顺序存储方法是把逻辑上相邻的节点存储在物理位置2的存储单元中。

3)一个类可以从直接或间接的祖先中继承所有属性和方法,采用这个方法提高了软件的3

4)软件工程研究的内容主要包括4技术和软件工程管理。

5)关系操作的特点是5操作。

6)以下语句的输出结果是6

int i=-19,j=i%4;

printf("%d\n",j);

7)若有以下程序,要求给i赋值10,给j赋值20,则应该从键盘输入7

main()

{

    int i,j;

    scanf("i=%d,j=%d",&i,&j);

    printf("i=%d,j=%d\n",i,j);

}

8)以下程序的输出结果是8

main()

{

    int p,a=5;

    if(p=a!=0)

        printf("%d\n",p);

    else

        printf("%d\n",p+2);

}

9)以下程序的输出结果是9

main()

{

    int a=4,b=3,c=5,t=0;

    if(a<b) t=a;a=b;b=t;

    if(a<c) t=a;a=c;c=t;

    printf("%d %d %d\n",a,b,c);

}

10)以下程序的输出结果是10

main()

{

    int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};

    int i,j,s=0;

    for(i=0;i<4;i++)

    {

        for(j=0;j<4;j++)

        {

            if(a[i][j]<0) continue;

            if(a[i][j]==0) break;

            s+=a[i][j];

        }

    }

    printf("%d\n",s);

}

11)以下程序的输出结果是11

main()

{

    char a;

    a='H'-'A'+'0';

    printf("%c\n",a);

}

12)以下程序的输出结果是12

int f(int x,int y)

{  return (y-x)*x; }

main()

{

   int a=3,b=4,c=5,d;

   d=f(f(3,4),f(3,5));

   printf("%d\n",d);

}

13)函数YangHui( )的功能是将杨辉三角形的数据赋给二维数组的下半三角,形式如下所示。

1

1    1

1    2    1

1    3    3    1

1    4    6    4    1

其构成规律是:

0列元素和主对角线元素均为1

其余元素为其左上方和正上方元素之和。

数据的个数每行递增1

将以下程序补充完整。

#defint N 6

void YangHui(int x[N][N])

{

    int i,j;

    x[0][0]=1

    for(i=1;i<N;i++)

    {

        x[i][0]= 13 =1;

        for(j=1;j<i;j++)

            x[i][j]= 14 ;

    }

}

14)以下函数的功能是删除字符串s中的所有数字字符。

void dele(char *s)

{

    int n=0,i;

    for(i=0,s[i];i++)

        if(15 )

            s[n++]=s[i];

    s[n]=16;

}

15)设函数findbig( )已定义为求三个数中的最大值。以下程序将利用函数指针调用findbig( )函数。

main()

{

    int findbig(int,int,int);

    int (*f)(),x,yz,z,big;

    f= 17 ;

    scanf("%d%d%d",&x,&y,&z);

    big=(*f)(x,y,z);

    printf("bing=%d\n",big);

}

16)以下程序的输出结果是18

#define MCRA(m)  2*m

#define MCRB(n,m)  2*MCRA(n)+m

main()

{

    int i=2,j=3;

    printf("%d\n",MCRB(j,MCRA(i)));

}

17)设有以下定义:

struct ss

{ int info; struct ss *link; } x,y,z;

且已建立如下图所示的链表结构:

 

 

 

 

 

 

 

X                           Y                        Z

 

写出删除点y的赋值语句19

18)已有文本文件test.txt,其中的内容为Hello,everyone!。以下程序中,文件test.txt已正确为”读”而打开,由文件指针fr指向该文件,则程序的输出结果是20

#include <stdio.h>

main()

{

    FILE  *fr;

    char  str[40];

    ...

    fgets(str,5,fr);

    printf("%s\n",str);

    fclose(fr);