好好学习,天天向上,自学网欢迎您!
当前位置:首页 >  考试 >  计算机类 > 内容页

C语言选择题及答案

2021-08-30 20:05:46计算机类访问手机版469

  C语言选择题答案

  成果的获得离不开我们日常平凡的积极,以下是小编为大师收拾整顿的C语言选择题及答案,但愿对大师的学习起到帮忙!

  选择题

  1.在深度为5的满二叉树叶中,叶子结点的个数为 。

  A.32

  B.31

  C.16

  D.15

  2.软件生命周期中,耗费最多的阶段是 。

  A.详细计划

  B.软件编码

  C.软件测试

  D.软件保护

  3.视图计划一样平常有3种计划次第,下列不属于视图计划次第的是 。

  A.自顶而下

  B.由内向外

  C.由外向内

  D.自底向上

  4.下列数据布局中,能用二分法进行查找的是 。

  A.挨次存储的有序线性表

  B.结性链表

  C.二叉链表

  D.有序线性链表

  5.以下叙述中过错的是 。

  A.关于double范例数组,不成以间接用数组名对数组进行整体输入或输出

  B.数组名代表的是数组所占存储区的首地点,其值不成改动

  C.当顺序执行中,数组元素的下标超越所界说的下标范畴时,系统将给出“下标越界”的堕落信息

  D.可以经由过程赋初值的体式格局断定数组元素的个数

  6.以下只有在使用时才为该范例变量分派内存的存储范例阐明是 。

  A.auto和static

  B.auto和register

  C.register和static

  D.extern和register

  7.下列可作为C语言赋值的语句的是 。

  A.x一3,y=5

  B.a=b=6

  C.i--;

  D.a,c

  8.若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a  A.1

  B.2

  C.3

  D.4

  9.下列叙述中过错的是 。

  A.线性表是由n个元素构成的一个有限序列

  B.线性表是一种线性布局

  C.线性表的所有结点有且仅有一个前件和后件

  D.线性表可以是空表

  10.以下顺序执行后sum的值是 。

  main

  int i,sum;

  fori=1;i<6;i++sum+=i:

  printf"1%dn",sum:

  A.15

  B.14

  C.不断定

  D.0

  11.设j为Int型变量,则下面for循环语句的执行成果是 。

  forj=10;j>3;j--

  ifj%3j--;

  --j;--j;

  printf"%d",j;

  A.6 3

  B.7 4

  C.6 2

  D.7 3

  12.透露表现干系X<=Y<=Z的C语言表达式为 。

  A.X<=Y&&Y<=Z

  B.X<=YANDY<=Z

  C.X<=Y<=Z

  D.X<一Y&Y<一Z

  13.设有如下界说:

  int arr[]=6,7,8,9,10;

  int*ptr:

  ptr=arr;

  *ptr2=2;

  printf"%d,%dn",*ptr,*ptr2:

  则下列顺序段的输出成果为 。

  A.8,10

  B.6,8

  C.7,9

  D.6,2

  14.设有界说语句:

  int x[-6]=2,4,6,8,5,7,*p=X,i;

  要求依次输出X数组6个元素中的值,不克不及完成此操纵的语句是 。

  A.fori=0;i<6;i++printf"%2d",*p++;

  B.fori=0;i<6;i++printf"%2d",*pq-i;

  C.fori=0;i<6;i++printf"%2d",*p++;

  D.fori=0;i<6;i++printf"%2d",*p++;

  15.数字字符0的ASCII值为48,运行以下顺序的输出成果是 。

  main

  char a=’1’,b=’2’;

  printf"%C,",b++;printf"%dn",b—a;

  A.3,2

  B.50,2

  C.2,2

  D.2,50

  16.设有如下界说:

  int*ptr;

  则以下叙述中正确的是 。

  A.ptr是指向一维组数的指针变量

  B.ptr是指向int型数据的指针变量

  C.ptr是指向函数的指针,该函数返回一个int型数据

  D.ptr是一个函数名,该函数的返回值是指int型数据的指针

  17.设有界说的语句:“char c1=92,c2=92;”,则以下表达式中的值为零的是 。

  A.c1^c2

  B.c1&c2

  C.~c2

  D.c1 | c2

  18.以下顺序的输出成果是 。

  void funint*a,int i,int i

  int t;

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

  i++;j--;

  funa,i,j;

  main

  int K[]=2,6,1,8,i;

  funx,0,3;

  fori=0;i<1;i++printf"%2d",x[i];

  printf"n";

  A.1,2,6,8

  B.8,6,2,1

  C.8,1,6,2

  D.8,6,1,2

  19.有以下顺序:

  main

  int i,j;

  forj=10;j<11;j++

  fori=9;i   if!j%ibreak;

  ifi==j-1

  printf"%d",j;

  输出成果是 。

  A.11

  B.10

  C.9

  D.10 11

  11.设j为Int型变量,则下面for循环语句的执行成果是 。

  forj=10;j>3;j--

  ifj%3j--;

  --j;--j;

  printf"%d",j;

  A.6 3

  B.7 4

  C.6 2

  D.7 3

  12.透露表现干系X<=Y<=Z的C语言表达式为 。

  A.X<=Y&&Y<=Z

  B.X<=YANDY<=Z

  C.X<=Y<=Z

  D.X<一Y&Y<一Z

  13.设有如下界说:

  int arr[]=6,7,8,9,10;

  int*ptr:

  ptr=arr;

  *ptr2=2;

  printf"%d,%dn",*ptr,*ptr2:

  则下列顺序段的输出成果为 。

  A.8,10

  B.6,8

  C.7,9

  D.6,2

  14.设有界说语句:

  int x[-6]=2,4,6,8,5,7,*p=X,i;

  要求依次输出X数组6个元素中的值,不克不及完成此操纵的语句是 。

  A.fori=0;i<6;i++printf"%2d",*p++;

  B.fori=0;i<6;i++printf"%2d",*pq-i;

  C.fori=0;i<6;i++printf"%2d",*p++;

  D.fori=0;i<6;i++printf"%2d",*p++;

  15.数字字符0的ASCII值为48,运行以下顺序的输出成果是 。

  main

  char a=’1’,b=’2’;

  printf"%C,",b++;printf"%dn",b—a;

  A.3,2

  B.50,2

  C.2,2

  D.2,50

  16.设有如下界说:

  int*ptr;

  则以下叙述中正确的是 。

  A.ptr是指向一维组数的指针变量

  B.ptr是指向int型数据的指针变量

  C.ptr是指向函数的指针,该函数返回一个int型数据

  D.ptr是一个函数名,该函数的返回值是指int型数据的指针

  17.设有界说的语句:“char c1=92,c2=92;”,则以下表达式中的值为零的是 。

  A.c1^c2

  B.c1&c2

  C.~c2

  D.c1 | c2

  18.以下顺序的输出成果是 。

  void funint*a,int i,int i

  int t;

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

  i++;j--;

  funa,i,j;

  main

  int K[]=2,6,1,8,i;

  funx,0,3;

  fori=0;i<1;i++printf"%2d",x[i];

  printf"n";

  A.1,2,6,8

  B.8,6,2,1

  C.8,1,6,2

  D.8,6,1,2

  19.有以下顺序:

  main

  int i,j;

  forj=10;j<11;j++

  fori=9;i   if!j%ibreak;

  ifi==j-1

  printf"%d",j;

  输出成果是 。

  A.11

  B.10

  C.9

  D.10 11

  20.有以下顺序.

  #include

  main

  char c1,c2,c3,c4,c5,c6;

  scanf"%c%c%c%c",&c1,&c2,&c3,&c4;

  c5=getchar; c6=getchar;

  putcharc1;putcharc2;

  printf"%c%cn",c5,c6;

  顺序运行后,若从键盘输入从第l列入手下手

  123<回车>

  45678<回车>

  则输出成果是 。

  A.1267

  B.1256

  C.1278

  D.1245

  C语言选择题及答案

  21.执行下面的顺序后,a的值为 。

  main

  int a,b;

  fora=1,b=1;a<=10;a++

  ifb%3==l

  b+=3;

  continue;

  b-=5;

  A.7

  B.8

  C.9

  D.10

  22.下列叙述中正确的是 。

  A.用E—R图可以或许透露表现实体集之间一对一的接洽、一对多的接洽、多对多的接洽

  B.用E—R图只能透露表现实体集之间一对一的接洽

  C.用E—R图只能透露表现实体集之间一对多的接洽

  D.用E—R图透露表现的观点数据模型只能转换为干系数据模型

  23。若有运算符:>、1、<<、%、sizeof,则它们按优先级由高至低的正确摆列挨次为 。

  A.%、sizeof、>、<<、=

  B.sizeof、%、>、=、<<

  C.sizeof、<<、>、%、=

  D.sizeof、%、<<、>、=

  24.若变量a,b已正断定义,且b已正确赋值,则合法的语句是 。

  A.b=doubleb;

  B.inta=intb;

  C.a=a++=5;

  D.a=doubleb;

  25.执行下列顺序中的输出语句后,a的值是 。

  main

  int a;

  printf"%dn",a=2*3,a*5,a+7;

  A.17

  B.37

  C.6

  D.13

  26.运行下列顺序时,若输入的数据为“1,2,3”,则输出成果是 。

  main

  float a,b,c,t;

  scanf"%f,%f,%f",&a,&b,&c;

  ifa   t=a;a=b.b=t;

  ifa   t=a;a=c;c=t;

  itb   t=b;b=C;c—=;

  printf"%fn%fn%fn",a,b,c;

  A.1.00

  2.00

  3.00

  B.1.00

  3.00

  2.00

  C.1

  3

  2

  D.3.00000

  2.00000

  1.00000

  27.设有顺序段:

  int k=12:

  whilek=1k=k一1;

  则下列描述中正确的是 。

  A.while循环执行10次

  B.循环是无限循环

  C.循环体语句一次也不执行

  D.循环体语句执行一次

  28.在执行完下列的c语句段之后,则B的值是 。

  char a=’A’;

  int b;

  B=34&&56&&a<’b’;

  A.0

  B.1

  C.TRUE

  D.FALSE

  29.有下列函数界说:

  funfloat h

  printf"%f,%fn",h,h*h;

  该函数的范例是 。

  A.int范例

  B.float范例

  C.void范例

  D.函数无范例阐明,界说有错

  30.有下列顺序段:

  int n,t=1,S=0;

  scanf"%d",&n;

  dos=s+t;t=t-2;whilet!=n;

  为使此顺序段不堕入循环,从键盘输入的数据该当是 。

  A.随意率性正奇数

  B.随意率性负偶数

  C.随意率性正偶数

  D.随意率性负奇数

  31.若有阐明语句:double*p,a;则经由过程scanf语句正确给输入项读人数据的顺序段是 。

  A.*p=&a;scanf"%1f”,p;

  B.*p=&a;scanf"%f",p;

  C.p=&a;scanf"%",*p;

  D.p=&a;scanf"%1f",p;

  32.下列顺序的输出成果是 。

  #include

  main

  int a[2][3]=1,2,3,4,5,6,*p[3],i;

  p=a ;

  fori=0;i<3;i++

  ifi<2

  p[1][i]=p[1][i]-1;

  else

  p[1][i]=1;

  printf"%dn",a[o][1]+a[1][1]+a[1][2];

  A.8

  B.7

  C.12

  D.9

  33.执行下列顺序后,输出的成果是 。

  #include

  #define SX X*X

  void main

  int a=9,k=3,m=2;

  a/=Sk+m/Sk+m:

  printf"%d",a;

  A.1

  B.4

  C.9

  D.0

  34.设x=015,则x=x^017的值是 。

  A.00001111

  B.11111101

  C.00000010

  D.1 1000000

  35.若fp是指向某文件的指针,且还没有读到文件末尾,则函数feoffp的返回值是 。

  A.EOF B.-l

  c.非零值D.0

  36.设变量a、b、c、d和y都已正断定义并赋值。若有以下if语句:

  ifa  ifc==dy=0;

  else y=1;

  该语句所透露表现的寄义是 。

  A.y=0,a   y=1,a≥b

  B.y=0,a   y=1,a≥b且c≠d

  C.y=0,a   y=1,a  D.y=0,a   y=1,c≠d

  37.下列顺序的运行成果是 。

  #include

  void main

  int s=0,k;

  fork=7;k>1;k--

  switchk

  case 1:

  case 4:

  case 7:

  s++:

  break;

  case 2:

  case 3:

  case 6:break;

  case 0:

  case 5:

  s+=2:

  break;

  printf"s=%d",s;

  A.s=3

  B.s=4

  C.s=5

  D.无输出成果

  38.若i、j已界说成mt型,则下列顺序段中内循环体的总执行次数是 。

  fori=6;i>0;i--

  forj=0;j<4;j++…

  A.20

  B.24

  C.25

  D.30

  39.下列叙述中正确的是 。

  A.只能在循环体内和switch语句体内使用break语句

  B.eotinue语句的感化是结束整个循环的执行

  C.在循环体内使用break语句或continue语句的感化不异

  D.从多层循环嵌套中加入时,只能使用got0语句

  40.有以下顺序:

  #include

  void WriteStrchar*fn.char*str

  FILE*fp;

  fp=fopenfn,"w";fputsstr,fp;fclosefp;

  main

  WriteStr"tl.dat","start";

  WriteStr"t1.dat","end";

  顺序运行后,文件t1.dat中的'内容是 。

  A.start

  B.end

  C.startend

  D.endrt

  C语言选择题及答案

  选择题答案与解析:

  1.C。【解析】按照二叉树的性质及界说,一棵深度为k 且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又按照满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。

  2.D。【解析】本题考核对软件生命周期的懂得,软件生命周期整体上可分为界说阶段、开发阶段和保护阶段。此中界说阶段包含可行性研究与筹划制订和需求剖析;开发阶段包含概要计划、详细计划、开发和测试;保护阶段是一个独自阶段,不包括在开发阶段内,它是所耗费用最多的一个阶段。

  3.C。【解析】视图计划的计划次第分3种:自顶向下、自底向上和由内向外。它们为视图计划供给了具体的操纵办法,计划者可按照实际环境机动把握。

  4.A。【解析】二分法查找只用于挨次存储的有序线性表,而挨次查找用在挨次存储的非有序线性表和线性链表。

  5.C。【解析】数组下标从0入手下手,当数组元素的下标超越了界说的范畴时,系统不会出“下标越界”的信息,运行会堕落,因此在编程时务必查抄下标是不是越界。

  6.B。【解析】在用静态static与外部extern界说变量时,系统立刻给其分派内存,而界说自动类auto与逼迫放入存放器register范例变量时,只有当使用时才分派内存。

  7.C。【解析】本题考查赋值语句,而选项A、B是表达式,分歧题意,选项D中逼迫范例转换,应把范例名用括号括起来,选项C中i--也可写成i=i-1,故选择c选项。

  8.C。【解析】本题考查三目运算符a  9.C。【解析】线性表可以是空表,在线性表中,第一个结点没有前驱结点前件,最后一个结点没有后继结点,其他结点有且只有一个前驱点后继点。

  10.C。【解析】sum+=i等价于sun+i,在本题中sum 没有赋初值,而题中只输出sum的值,因此整个成果为不断定值。

  11.B。【解析】当j=10时,for循环建立,j%3为1,if条件也为真,当执行完j--后,j为9,再执行“--j;--J;”后,j的值为7,因此输出7,持续循环执行j--后j为6,当j

  =6时for循环建立,j%3为0,if条件为假,此时执行“-- j;--j;”后,j为4,输出4,再持续循环执行j--后j为3,当j=3时,for循环不建立,加入循环,故选择8选项。

  12.A。【解析】题中X<=Y<=Z的意思为X<=Y 而且Y<=Z,在c语言中,要透露表现“且”的干系,应用“与”逻辑运算符,即“&&”,故选择A选项。

  13.D。【解析】顺序中ptr指针指向数组art的首地点,*ptr=arr[0]=6,*ptr2=2,故选D。

  14.D。【解析】本题要求输出每一个元素的值,D选项中*p++等价于*p=*p+1,其仅仅是对*p加1,并无到达输出其每一个值的感化。

  15.C。【解析】b++是先用表达式的值然后自增l,因此表达式值为’2 ’,b为’3 ’;b-a=’3 ’-’1’=2,因此最后输出的成果为2,2,前一个为字符2,后一个为数字2。

  16.C。【解析】本题中int*ptr的寄义是指向函数

  的指针变量,其为指向函数的指针变量,该函数返回一个int 型数据,故选择C选项。

  17.A。【解析】当值不异时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。

  18.C。【解析】本题用了函数调用,fun中if语句建立则进行i,j的互换,用到主函势中则为把下标为0、3,1、2交换,因此,当执行完后X的数组为8,1,6,2,故选择C选项。

  19.B。【解析】本题考多循环的使用,当j=10,i=9时, 循环建立,第一个if条件为假,第二个if条件i==j-1建立,则输出j的值为10,接者执行i++后,i为10;当i为10,for循环不建立,加入内层循环,此时执行j++后,j为11,循环不建立,加入循环。

  20.D。【解析】scanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容辨别是1,2,3,’n’。

  21.D。【解析】本题考查continue的用法,continue语句的感化是结束本次循环,间接进行下次循环。所以在顺序中,只有当a=10时,才加入循环,故选择D选项。

  22.A。【解析】用E—R图可以描述实体及其彼此之间的接洽,还可以描述多个实体集之间的接洽和一个实体集内部实体之间的接洽。用E—R图透露表现的观点数据模型不但能转换为干系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。所以A的说法正确。

  23.D。【解析】次要考查运算符的优先级。sizeof的优先级最高,其次是%<<>.优先级最低的是“=”。

  24.B。【解析】在C语名中规则进行逼迫范例转换的格局是:范例名变量名;而且给表达式赋值。

  25.C。【解析】本题考查逗号表达式。顺序输出时输出一个%d,所以输出第一个a的值与后续无关。

  26.D。【解析】本题考查if语句。第1个if语句,假如

  a  27.C。【解析】本题考查while,while循环表达式k=1是个赋值表达式而不是逻辑表达式,k的初值为12不合适循环条件,所以循环体一次也不执行。

  28.B。【解析】本题考查3个常识点:将一个字符赋给一个字符变量时,是将该字符对应的ASCIl码存储到内存单位中;罕见ASCII码的值如A和a;只要逻辑与运算符&&的两个运算工具都为真时,返回值就是1。

  29.A。【解析】本题考查函数值的范例,在函数界说时, 由于函数没有阐明其范例,系统默认一律自动按整型int

  处置。

  30.D。【解析】本题次要考查do—while循环,因为变量t的初始值即是1,颠末第一次do-while循环后,执行t= t-1这条语句一次,所以变量t的值为-1,断定干系表达式t!=n是不是建立,假如干系表达式建立,则执行第二次循环,假如干系表达式不建立,加入循环。因而可知,只要输入变量n的值为负奇数,则必定会使t==n建立,故加入do-while循环。

  31.D。【解析】double*p,a界说了一个指向双精度型的指针变量P和双精度型变量a,p=&a透露表现将变量a的地点赋给指针变量p;scanf"%If",p透露表现用键盘输入的数赋给指针变量P所指向的地点单位中,scanf函数要求在输入double型数据,格局把持符必需用%1f。不然,数据不克不及正确输入。所以选项D正确。

  32.B。【解析】本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2 次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for 循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1] [2]=2+4+1=7。

  33.D。【解析】本题次要考查带参数的宏界说,过程如下:由于界说为definex x*x没有括号优先级,所以:a= a/Sk+m/Sk+m=a/k+m*k+m/k+m*k+m =9/3+2*3+2/3+2*3+2=0。

  34.C。【解析】本题考查按位异或运算,异或就是不异为0,差别为1化为二进制00001101,017的二进制为000001111,二者异或成果为00000010。

  35.D。【解析】本题考查leontp函数,其功效是:测试所指的文件的地位指针是不是已到达文件尾,假如已到达文件尾,则函数返回非0值;不然返回0,透露表现文件未结束。

  36.C。【解析】语句“ifc==dy=0;else y=1;”是ifa   37.B。【解析】运行顺序,当k=7时switch7执行case:7,s++后s=1,break跳出。k--,k=7持续循环switch6,执行case 6;间接跳出循环,k--变成5,持续循环switch5,执行case 5背面的语句s+=2,也相当于s= s+2,此时s为3,break跳出,k变成4,持续循环,执行case 4为空,持续执行case 7;s++为4跳出循环,k--变成3,持续循环,执行case 3,空语句往下执行case 6,跳出,k -- 为2,持续循环,执行case 2;空语句往下执行case 3,空语句再执行case 7,跳出循环,k--为1不合适循环,加入,此时S=4。

  38.B。【解析】本题考查for循环的使用。关于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不合适,所以加入j循环;然后i减1,J仍然要从0~3,j=4 时加入J循环直到i变成0,加入i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4 =24次。

  39.A。【解析】本题考查循环跳出的常识点:①break语句可以呈现在switch循环体内及语句体内,它的感化是跳出循环体,不克不及用于其他的语句;②continue语句的感化是结束本次循环,即跳过循环体中下面还没有执行的语句,而接着断定循环条件是不是建立,断定下一次循环是不是持续执行,执行contiune语句不会使整介循环终止;③循环体内使用break语句会使循环提前终止;④从多层循环嵌套中加入时,可使用90t0语句大概break语句。

  40.B。【解析】用"w"体式格局翻开文件,意思是假如文件名不异则覆盖本来的文件,所以当再次输入时覆盖了第一次的内容,B选项正确。