编程猫 加入收藏  -  设为首页
您的位置:编程猫 > 编程 > 正文
2015年计算机二级《C语言》考试上机测试选择题
2015年计算机二级《C语言》考试上机测试选择题
提示:

2015年计算机二级《C语言》考试上机测试选择题

  一、选择题(每小题1分,共40小题,共40分)

  1.算法的空间复杂度是指( )。

  A.算法程序的长度

  B.算法程序中=的指令条数

  C.算法程序所占的存储空间

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

  2.下列叙述中正确的是( )。

  A.一个逻辑数据结构只能有一种存储结构

  B.逻辑结构属于线性结构,存储结构属于非线性结构

  C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

  D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

  3.简单的交换排序方法是( )。

  A.快速排序

  B.选择排序

  C.堆排序

  D.冒泡排序

  4.关于结构化程序设计原则和方法的描述错误的是( )。

  A.选用的结构只准许有一个入口和一个出口

  B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

  C.不允许使用GOT0语句

  D.语言中若没有控制结构,应该采用前后一致的方法来模拟

  5.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。

  A.可重用性差

  B.安全性差

  C.非持久性

  D.冗余性

  6.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。

  A.模拟现实世界中不同事物之间的联系

  B.强调模拟现实世界中的算法而不强调概念

  C.使用现实世界的概念抽象地思考问题从而自然地解决问题

  D.不强调模拟现实世界中的算法而强调概念

  7.对如下二叉树进行后序遍历的结果为( )。

  2015年计算机二级《C语言》考试上机测试题(1)

  A.ABCDEF

  B.DBEAFC

  C.ABDECF

  D.DEBFCA

  8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。

  A.模块间的关系

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

  C.软件层次结构

  D.软件开发过程

  9.两个或两个以上模块之间关联的紧密程度称为( )。

  A.耦合度

  B.内聚度

  C.复杂度

  D.数据传输特性

  10.下列描述错误的是( )。

  A.继承分为多重继承和单继承

  B.对象之间的通信靠传递消息来实现

  C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

  D.类是具有共同属性、共同方法的对象的集合



  11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。

  A.DB包含DBS和DBMS

  B.DBMS包含DB和DBS

  C.DBS包含DB和DBMS

  D.没有任何关系

  12.下列合法的声明语句是( )。

  A.int_abc=50;

  B.double int=3+5e2.5;

  C.long do=1L:

  D.float 3_asd=3e-3;

  13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。

  A.x&&Y

  B.x<=Y

  C.x‖y+z&&y-z

  D.!((x  14.若ch为char型变量,k为int型变量(已知字符a的ASCIl码是97),则执行下列语句后输出的结果为( )。

  ch=’b’;

  k=10:

  printf("%X,%o,",ch,ch,k);

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

  A.因变量类型与格式描述符的类型不匹配,输出无定值

  B.输出项与格式描述符个数不符,输出为0值或不定值

  C.62,142,k一%d

  D.62,142,k一%l0

  15.有下列程序: 、

  fun(int X,int y){return(x+y);)

  main()

  { int a=1,b=2,c=3,sum;

  sum=fun((a++,b++,a+b),c++);

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

  }

  执行后的输出结果是( )。

  A.6

  B.7

  C.8

  D.9

  16.假定x和Y为double型,则表达式x=2,y—x+3/2的值是( )。

  A.3.500000

  B.3

  C.2.000000

  D.3.000000

  17.有如下程序:

  main()

  {int x=1,a=0,b=0;

  switch(x)

  {

  case 0:b++;

  case l:a++;

  case 2:a++;b++;

  )

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

  )

  该程序的输出结果是( )。

  A.a=2,b=1

  B.a=1,b=1

  C.a=1,b=0

  D.a=2,b=2

  18.下列程序的输出结果是( )。

  main()

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

  if(i++= =1&&(++j= =3= =‖k++= =3))

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

  )

  A.1 2 3

  B.2 3 4

  C.2 2 3

  D.2 3 3

  19.下列程序的输出结果是( )。

  #include

  main()

  { int a=0,i;

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

  { switch(i)

  { case 0:

  case 3:a+=1;

  case l:

  case 2:a+=2;

  default:a+=3;

  )

  printf("%d",i);

  )

  A.19 B.1 C.6 D.8

  20.有以下程序:

  main()

  {int X,i;

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

  {x=i;

  if(X%2=O)

  if(x%3=O)

  if(X%7=0) .

  printf("%d,i)";

  )

  )

  输出结果是( )。

  A.28

  B.27

  C.42

  D.41



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

  main()

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

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

  for(j=0;j<=i;j++)s+=a[i][j];

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

  }

  A.18

  B.19

  C.20

  D.21

  22.有下列程序:

  main()

  { int k=5;

  while(--k) printf("%d",k=1);

  printf("/n");

  )

  执行后的输出结果是( )。

  A.1

  B.2

  C.4

  D.死循环

  23.若有定义:“int a[2][3];”,则对a数组的第i行第J列元素的正确引用为( )。

  A.*(*(a+i)+j)

  B.(a+i)[j]

  C.*(a+i+j)

  D.*(a+i)+j

  24.下列能正确进行字符串赋值的是( )。

  A.char s[5]={"ABCDE"};

  B.char s[5]={’A’,’B’,’C’,’D’,’E’}; 、

  C.char*S;S="ABCDE";

  D.char*s;printf("%《",s);

  25.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。

  2015年计算机二级《C语言》考试上机测试题(1)


   struct node

  {har data;

  struct node*next;)*P,*q,*r;

  现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( )。

  A.q-:>next=r->next;p--:>next=r;rm:>next=q;

  B.q-:>next=r;q->next=r->next;r->next=q;

  C.q-:>next=r->next;r->next=q;p->next=r;

  D.q-:>next=q;p->next=r;q->next=r->next;

  26.有下列程序:

  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

  27.有下列程序:

  int funl(double a){return a*=a;} 、

  int fun2(double x,double y)

  {double a=0,b=0;

  a=funl(x);b=funl(y);return(int)(a+b);

  )

  main()

  {double w;w=fun2(1.1,2.0),……}

  程序执行后变量w中的值是( )。 、

  A.5.21 B.5 C.5.0 D.0.0

  28.有下列程序:

  main()

  {int i,s=0,t[]={1,2,3,4,5,6,7,8,9};

  for(i=0;i<9;i+=2)s+=*(t+i);

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

  }

  程序执行后的输出结果是( )。

  A.45

  B.20

  C.25

  D.36

  29.有下列程序:

  int fun(int n)

  {if(n= =1))return l;

  else

  return(n+fun(n-1)):

  }

  main()

  { int x;

  seanf("%d",&x);x=fun(x);printf("%d\n",x);

  }

  执行程序时,给变量x输入l0,程序的输出结果是( )。

  A.55

  B.54

  C.65

  D.45

  30.有下列程序:

  int fun(int x[],int n)

  { static int sum=0,i;

  for(i=0;i   return sum;

  }

  main()

  {int a[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;

  s=fun(a,5)+fun(b,4);printf("%d\n",s);

  程序执行后的输出结果是( )。 、

  A.45

  B.50

  C.60

  D.55



  31.有下列程序:

  main()

  f char*P[]={"3697","2584");

  int i,j;long num=0;

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

  {j=0;

  while(p[i][j]!=’\0’)

  {if((p[i][j]-t\0’)%2)num=10*num+p[j][j]-’0’;

  j+=2;

  )

  )

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

  )

  程序执行后的输出结果是( )。

  A.35 B.37 C.39 D.3975

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

  main()

  { char st[20]="hell0\O\t\\\”;

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

  }

  A.9 9

  B.5 20

  C.13 20

  D.20 20

  33.若有下的定义:"int t[3][2];",能正确表示t数组元素地址的表达式是( )。

  A.&t[3][2]

  B.t[3]

  C.t[l]

  D.t[2][2]

  34.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是( )。

  A.文件开始

  B.文件末尾

  C.文件当前位置

  D.以上都不对

  35.下述程序的输出结果是( )。

  #include

  main()

  {int i;

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

  {if(i*i>=20)&&(i*i<=lOO))

  break;

  }

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

  )

  A.49

  B.36

  C.25

  D.64

  36.若有定义“int b[8],*p=b;”,则p+6表示( )。

  A.数组元素b[6]的值

  B.数组元素b[6]的地址

  C.数组元素b[7]的地址

  D.数组元素b[0]的值加上6

  37.设变量已正确定义,则以下能正确计算f=n!的程序是( )。

  A.f=0; for(i=1;i<=n;i++)f*=i;

  B.f=1;for(i=1;i  C.f=1;for(i=n;i>1;i++)f*=i;

  D.f=1;for(i=n;i>=2;i--)f*=i;

  38.下述程序执行的输出结果是( )。

  #include

  main()

  {char a[2][4]; ,

  strcpy(a。"are");strcpy(a[1],"you");

  a[o][3]=’&’;

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

  )

  A.are&you

  B.you

  C.are

  D.&

  39.设x=011050,则x=x&01252的值是( )。

  A.0000001000101000

  B.1111110100011001

  C.0000001011100010

  D.1100000000101000

  40.在“文件包含,,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是( )。

  A.直接按系统设定的标准方式搜索目录

  B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

  C.仅仅搜索源程序所在目录

  D.仅仅搜索当前目录

2018年计算机二级C语言考前冲刺题(1)
提示:

2018年计算机二级C语言考前冲刺题(1)

  11[单选题] 有以下程序:   程序运行时输入:-11-220,则输出结果是(  )。   A.1,1   B.1,0   C.3,-3   D.3,0   参考答案:C   参考解析:分析程序结构,在do …while循环中,嵌套一个switch语句,switch语句中两个case语句分别执行break和continue,其中break语句是跳出switch语句,接着执行do…while循环体剩下的部分;而continue语句是直接进入do…while的下一个循环,由此可知每次循环,当t=0时,执行break语句,接着将z值累加x;当t=1时,执行continue语句,将y值累加x,所以当x输入-1、-2、0时,t=0,z值累加为-3;当x输入1、2时.t=1,y值累加为3,输出y、z的值分别为3、-3,故答案选C。   12[单选题] 以下选项中叙述错误的是(  )。   A.C程序函数中定义的自动变量,系统不自动赋确定的初值   B.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内   C.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值   D.C程序函数的形参不可以说明为static型变量   参考答案:C   参考解析:A选项描述正确,自动变量未赋初值,为随机值;B选项描述正确,变量定义除在函数开始位置外,在复合语句开始也可以;C选项描述是错误的,函数内的静态变量,只在第一次调用时候赋值,以后调用保留上次值;D选项描述也正确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。因此C选项正确。   13[单选题] 程序中若有以下的说明定义和语句:   则不能给变量t的s成员赋整数99,给num成员赋空串的语句组是(  )。   参考答案:A   参考解析:结构体变量使用 “.”运算符引用结构体成员变量,结构体指针使用“->”运算符引用结构体成员变量,main函数中声明结构体STR变量t,和结构体STR指针*p,并将t的地址赋给p,所以使用P访问成员变量时,使用“->”运算符;使用* P访问成员变量时,使用“.”运算符。另外,由于成员变量num是字符数组,所以不能直接进行赋值,若要对num赋空字符串值,可以把num中第一个元素赋值为0或‘\0’,或者使用strcpy复制函数将空字符串“”复制到num中,故选项B、C、D正确,选项A错误,因此答案为A。   14[单选题] 以下关于循环语句的叙述中正确的是(  )。   A.do…while语句的循环体至少执行一次   B.while语句的循环体至少执行一次   C.for语句的循环体至少执行一次   D.上述A、B、c说法均正确   参考答案:A   参考解析:while(表达式)当表达式为false时,循环体一次都不执行,故选项B、D错误;for(表达式1;表达式2;表达式3)语句,当表达式2为false时,循环体一次都不执行,故选项C错误;do-while语句循环体至少执行一次,故答案选A。   15[单选题] 以下叙述中错误的是( )。   A.用户定义的函数中可以没有return语句   B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值   C.用户定义的函数中若没有return语句,则应当定义函数为void类型   D.函数的return语句中可以没有表达式   参考答案:B   参考解析:本题重点考察函数返回值的相关知识,函数的值只能通过return语句返回主调函数,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此B选项正确。   16[单选题] 以下叙述中正确的是( )。   A.C语句必须在一行内写完   B.C程序中的每一行只能写一条语句   C.C语言程序中的注释必须与语句写在同一行   D.简单C语句必须以分号结束   参考答案:D   参考解析:C语句可以跨行来写,但是必须以分号结束,所以A选项错误。C程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C选项错误。   17[单选题] 以下不合法的数值常量是(  )。   A.8.0E0.5   B.1e1   C.011   D.0xabed   参考答案:A   参考解析:A选项中E后面的指数必须为整型数据,所以A错误。C选项中011表示的是八进制常量.Oxabcd表示的是十六进制常量。   18[单选题] 有以下程序:   程序计算的是(  )。 .   A.s=1!+2!+3!+4!+5!   B.s=1+2+3+4+5   C.s=1$2*3*4*5   D.s=1!*2!*3!*4!*5!   参考答案:A   参考解析:函数fun()中的变量f是静态变量,所以只初始化一次,之后每次调用fun(),f的初值就是上一次fun()结束时的值,对于fun()函数,当传人n=1时,f=1,返回值为1;当传入n=2时,f=1×2=2,返回值为2;当传人13=3时,f=2×3=6,返回值为6;当传人n=4时,f=6×4=24,返回值为24,所以每次调用fun函数时,f变量在上一次fun函数运行结束时保留值的基础上,再与n乘积,并重新赋值给f,所以可以将f理解为记录当前的累乘值,即当main函数中i:1时,f=11=1;当main()函数i=2时,f=2!=2,当main函数中i=3时,f=3!=6……另外main函数中的S记录调用fun函数的返回值之和,所以s=1!+2!+…+i!,由于i最大值为5,所以s=1!+2!+3!+4!+5!,答案为A。   19[单选题] 下列诜项中.能正确定义数组的语句是( )。   参考答案:D   参考解析:C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。因此D选项正确。   20[单选题] 有以下程序:   程序的运行结果是(  )。   A.123   B.12300   C.1   D.321   参考答案:A   参考解析:首先使用fopen函数以可写方式打开文件d1.dat,返回文件指针fp,然后在for循环通过fprintf函数调用fp指针,将数组a的3个元素写入文件d1.dat中,最后再写入换行符\n,关闭文件,此时文件中的内容:“123\n”,然后调用fopen函数以只读方式打开d1.dat,返回文件指针fp指向文件的开头,再调用fscanf函数从文件中读入一个整数:123,(遇到第一个非数值字符结束),关闭文件后输出读人的整数n,结果为:123,答案为A。

计算机二级C语言模拟题及答案
提示:

计算机二级C语言模拟题及答案

2017年计算机二级C语言模拟题及答案   1.1 单选题   1.下列变量名中,非法的是( C )。   A.A25 B.My_car   C.My-str D.abc   2.下列常量中,十六进制int型常量是( A )。   A.0x5f B.x2a   C.046 D.7a   3.下列常量中,不是字符常量的是( B )。   A.'\n' B."y"   C.'x' D.'\7'   4.在函数体内定义了下述变量a,a的存储类为( D )。   int a;   A.寄存器类 B.外部类   C.静态类 D.自动类   5.下列关于变量存储类的描述中,错误的是( C )。   A.任何变量定义后都具有一个确定的存储类   B.变量的存储类确定了变量的作用域和寿命   C.定义变量时没有存储类说明符者一律为自动类   D.内部静态类变量和外部静态类变量的存储类说明符都是static   6.下列关于变量数据类型的描述中,错误的是( A )。   A.定义变量时int型数据类型可以省略   B.变量的数据类型可以决定该变量占内存的字节数   C.变量的数据类型是可以被强制的   D.变量的数据类型是有高低之分的   7.长双精度浮点型常量的后缀是( C )。   A.U B.F   C.L D.无   8.下列运算符中,不能用于浮点数操作的是( D )。   A.++ B.+   C.*= D.&(双目)   9.下列运算符中,优先级最高的是( A )。   A.*(双目) B.||   C.>> D.%=   10.下列运算符中,优先级最低的是( B )。   A.== B.?:   C.| D.&&   11.已知:int a(3);下列表达式中,错误的是( C )。   A.a%2==0 B.a--+2   C.(a2)++ D.a>>=2   12.已知:int b(5),下列表达式中,正确的是( D )。   A.b="a" B.++(b1)   C.b%2.5 D.b=3,b+1,b+2   6   13.下列关于类型转换的'描述中,错误的是( C )。   A.类型转换运算符是()   B.类型转换运算符是单目运算符   C.类型转换运算符通常用于保值转换中   D.类型转换运算符作用于表达式左边   1.1 判断题   ×1.C++语言和C语言都是面向对象的程序设计语言。   √2.面向对象方法具有封装性、继承性和多态性。   √3.C语言是C++语言的一个子集。C++语言继承了C语言。   ×4.C++语言程序与C语言程序一样都是函数串。   ×5.C++语言支持封装性和继承性,不支持多态性。   √6.C++语言比C语言对数据类型要求更加严格了。   √7.C++语言对C语言进行了一次改进,使得编程更加方便了。   ×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。   √9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。   √10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。   通过对1.5题中3个程序的修改,回答下列问题   从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。   答:C++程序要包含iostraem.h,main()函数前应加类型说明符void。   C++程序中所出现的变量是否必须先说明后使用?在函数体内说明变量时是否都要放在函数体的开头?   答:C++程序中所出现的变量必须先说明后使用。在函数体内说明变量时不一定要放在函数体的开头。   使用cout和插入符(<<)输出字符串常量时应注意什么?   答:可输出一个字符串常量,也可输出多个字符串常量。每输出一个字符串常量要使用一次插入符(<<)。   程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?   答:不能使用。因为它的值不确定。   5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?   答:不一定正确。可能还有算法错。 ;

2018年计算机二级考试C语言试题及答案(1)
提示:

2018年计算机二级考试C语言试题及答案(1)

   2018年计算机二级考试C语言试题及答案(1)   选择题   1). 在软件设计中,不属于过程设计工具的是( )   A.PDL(过程设计语言)   B.PAD图   C.N-S图   D.DFD图   正确答案:D   答案解析:DFD(数据流图Data-Flow-Diagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示。它直接支持系统功能建模。在软件详细设计的过程阶段,要对每个模块规定的功能以及算法的设计给出适当的算法描述。常见的过程设计工具有:图形工具:程序流程图,N-S,PAD,HIPO;表格工具:判定表;语言工具:PDL(伪码)。   2). 数据结构中,与所使用的计算机无关的是数据的( )。   A.存储结构   B.物理结构   C.逻辑结构   D.线性结构   正确答案:C   答案解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。   3). 设有定义: int x=2; 以下表达式中,值不为6的是( )   A.2*x, x+=2   B.x++,2*x   C.x*=(1+x)   D.x*=x+1   正确答案:A   答案解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4;选项B中,值为6。选项C中x*=x+1 等价于x=x*(x+1),所以等于6;选项D与选项C等价,结果也为6。   4). 在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( )   A.63   B.64   C.6   D.7   正确答案:B   答案解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。   5). 下列特征中不是面向对象方法的主要特征的是( )。   A.多态性   B.标识惟一性   C.封装性   D.耦合性   正确答案:D   答案解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。   6). 下列叙述中正确的是( )。   A.调用printf( )函数时,必须要有输出项   B.使用putchar( )函数时,必须在之前包含头文件stdio.h   C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出   D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码   正确答案:B   答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。   7). 以下结构体类型说明和变量定义中正确的是( )   A.typedef struct { int n; char c; } REC; REC t1,t2;   B.struct REC ; { int n; char c; }; REC t1,t2;   C.typedef struct REC; { int n=0; char c=′A′; } t1,t2;   D.struct { int n; char c; } REC; REC t1,t2;   正确答案:A   答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。   8). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( )   A.一对一   B.一对多   C.多对一   D.多对多   正确答案:B   答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。   9). 关于C语言的变量,以下叙述中错误的是( )   A.所谓变量是指在程序运行过程中其值可以被改变的量   B.变量所占的存储单元地址可以随时改变   C.程序中用到的所有变量都必须先定义后才能使用   D.由三条下划线构成的符号名是合法的变量名   正确答案:B   答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。   10). 当变量c的值不为2、4、6时,值也为″真″的表达式是( )   A.(c==2)||(c==4)||(c==6)   B.(c>=2 && c<=6)&& !(c%2)   C.(c>=2 && c<=6)&&(c%2!=1)   D.(c>=2 && c<=6) || (c!=3) || (c!=5)   正确答案:D   答案解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2 && c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。   11). 在C语言中,函数返回值的类型最终取决于   A.函数定义时在函数首部所说明的函数类型   B.return语句中表达式值的类型   C.调用函数时主调函数所传递的实参类型   D.函数定义时形参的类型   正确答案:A   答案解析:在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。