C语言 百分网手机站

C语言考试题及答案(2)

时间:2020-11-07 10:58:57 C语言 我要投稿

2017年C语言考试题及答案

  A.k=3 a=2 b=3

  B.k=3 a=3 b=2

  C.k=2 a=3 b=2

  D.k=2 a=2 b=3

  (36) 下面程序的输出是

  main()

  { unsigned a=32768;

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

  }

  A.a=32768

  B.a=32767

  C.a=-32767

  D.a=-1(37) 若有以下定义:

  float x;int a,b;

  则正确的switch 语句是

  A.switch(x)

  B.switch(x)

  { case1.0:printf("*\n"); { case1,2:printf("*\n");

  case2.0:printf("**\n"); case3:printf("**\n");

  } }

  C.switch (a+

  B.

  D.switch (a+

  B.;

  { case 1:printf("\n"); { case 1:printf(."*\n");

  case 1+2:printf("**\n"); case 2:printf("**\n");

  } }

  (38) 若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行符,/u代表空格):

  1u2

  AuBuC

  则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是

  A.scanf("x=%d y+%d",&x,&y);a=getchar();b=getchar();c=getchar();

  B.scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();

  C.scanf("%d%d%c%c%c,&x,&y,&a,&b,&

  C.;

  D.scanf("%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&

  C.;

  (39) 以下程序输出的结果是

  #include

  #include

  main()

  { char w[][10]={"ABCD","EFGH","IJKL","MNOP"},K;

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

  printf("%s\n",&w[k][k]);

  }

  A.ABCD

  B.ABCD

  FGH EFG

  KL IJ

  M

  C.EFG

  D.FGH

  JK KL

  O

  (40) 若有以下的定义:

  int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a;

  则值为3的表式是

  A.p+=2, *(p++)

  B.p+=2,*++p

  C.p+=3, *kp++

  D.p+=2,++*p

  (41) 假定所有变量均已正确说明,下列程序段运行后x的值是

  a=b=c=0;x=35;

  if(!a)x--;

  else if(

  B.;

  if(

  C.x=3;

  else x=4;

  A.34

  B.4

  C.35

  D.3

  (42) 在以下一组运算符中,优先级最高的运算符是

  A.<=

  B.=

  C.%

  D.&&

  (43) 若有以下定义和语句:

  int w[2][3],(*pw)[3];

  pw=w;

  则对w数组元素非法引用是

  A.*(w[0]+2)

  B.*(pw+1)[2]

  C.pw[0][0]

  D.*(pw[1]+2)

  (44) 若有以下程序片段:

  char str[]="ab\n\012\\\"";

  printf(Ý",strlen(str));

  上面程序片段的输出结果是

  A.3

  B.4

  C.6

  D.12

  (45) 函数调用:strcat(strcpy(str1,str2),str3)的功能是

  A.将串str1复制到串str2中后再连接到串str3之后

  B.将串str1连接到串str2之后再复制到串str3之后

  C.将串str2复制到串str1中后再将串str3连接到串str1之后

  D.将串str2连接到串str1之后再将串str1复制到串str3中

  (46) 以下对C语言函数的有关描述中,正确的是

  A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

  B.C函数既可以嵌套定义又可以递归调用

  C.函数必须有返回值,否则不能使用函数

  D.C程序中有调用关系的所有函数必须放在同一个源程序文件中

  (47) 以下叙述中不正确的是

  A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

  B.在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。

  C.在C中,外部变量的隐含类别是自动存储类别。

  D.在C中,函数形参可以说明为register变量。

  (48) 以下程序的输出结果是

  #include

  subl(char a,char

  B.{char c; c=a;a=b;b=c;}

  sub2(char* a,char

  B.{char c; c=*a;*a=b;b=c;}

  sub3(char* a,char*

  B.{char c; c=*a;*a=*b;*b=c;} { char a,b;

  a=’A’;b=’B’;sub3(&a,&

  B.;putchar(a);putchar(

  B.;

  a=’A’;b=’B’;sub2(&a,

  B.;putchar(a);prtchar(

  B.;

  a=’A’;b=’B’;sub1(a,

  B.;putchar(a);putchar(

  B.;

  }

  A.BABBAB

  B.ABBBBA

  C.BABABA

  D.BAABBA

  (49) 设有如下定义:

  struct sk

  {int a;float b;}data,*p;

  若有p=&data;,则对data中的a域的正确引用是

  A.(*p).data.a

  B.(*p).a

  C.p->data.a

  D.p.data.a

  (50) 以下对枚举类型名的定义中正确的是

  A.enum a={one,two,three};

  B.enum a {one=9,two=-1,three};

  C.enum a={"one","two","three"};

  D.enum a {"one","two","three"};二、填空题(每空2分,共40分)

  请将每空的正确答案写在答题卡 【1】 至 【20】序号的.横线上,答在试卷上不得分。

  (1) 与十进制数101等值的二进制数为 【1】 。

  (2) DOS命令分为内部命令和外部命令,XCOPY命令属于 【2】 。

  (3) 设当前盘为A盘,当前系统提示符为">",在不改变当前盘的情况下,显示C盘的当前目录的路径,应使用命令 【3】 。

  (4) 自动批处理文件名必须是 【4】 。

  (5) 设当前盘当前目录下有两个文件W.TXT,现要将文件P.TXT连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为 【5】 。

  (6) 请写出以下数学式的C语言表达式 6

  ──.

  a

  ───

  b.c

  (7) 若已知a=10,b=20,则表达式!ab)

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

  else

  printf("####x=%\n",x);

  (11) 在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是 11 函数.──

  (12) 若函数fun的类型void,且有以下定义和调用语句:

  #define M 50

  main()

  { int a[M];

  . . .

  fun(a);

  . . .

  }

  定义fun函数首部可以用三种不同的形式,请写出这三种形式: 12 .13 .14

  ─ ─ ─

  (注意:①形参的名字请用q,②使用同一种风格).

  (13) 若给fun函数的形参s传送字符串:"uuuu6354abc",则函数的返回值是 15

  ─.

  log fun(char s[]) {long n;int sign;

  for(;isspace(*s);s++); sign+(*s==’-’)?-1:1;

  if(*s==’+’‖*s==’-’s++; for(n=0;isdigit(*s);s++)

  n=10*n+(*s-’0’); return sign * n;

  (14) 以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n 所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空.

  void fun (char *w,char x,int *n)

  { int i,p;

  p=0;

  w[*n]=x;

  while (x>w[p]) 16

  ──;

  for(i=*n;i>p;i--)w[i]= 17

  ─;

  w[p]=x;

  ++ *n;

  }

  (15) fun1函数的调用语句为:fun1(&a,&b,&c); 它将三个整数按由大到小的顺序调整后依次放入a,b,c,三个变量中,a中放量大数.请填空.

  void fun2 (int *x,int *y)

  { int t;

  t=*x; *x=*y;*y=t;

  }

  void fun1 (int *pa,int *pb,int *pc)

  { if(*pc>*pb) fun2( 18)

  ───;

  if(*pa<*pc)fun2(19)

  ──;

  if(*pa<*pb)fun2(20)

  ──; }

  参考答案

  一、选择题((1)--(40)题每题1分,(41)--(50)题每题2分,共60分。

  (1)C (2)D (3)A (4)D (5)D (6)C 7)B (8)A (9)C (10)A

  (11)B (12)C (13)A (14)B (15)A (16)C (17)D (18)C (19)D (20)C

  (21)D (22)B (23)C (24)D (25)A (26)D (27)D (28)D (29)A (30)B

  (31)A (32)A (33)A (34)B (35)C (36)C (37)C (38)D (39)D (40)A

  (41)B (42)C (43)B (44)C (45)C (46)A (47)C (48)A (49)B (50)B

  二、填空题(每空2分,共40分)

  (1) 1100101或(1100101)2

  (2) 外部命令(答 外部 不扣分)

  (3)cd c:(cd与C:中间至少要有一个空格)

  (4)AUTOEXEC.BAT

  (5)COPY W.TXT+P.TXT 或copy w.txt+p.txt w.txt

  (6)a/(b*c)或a/(a*b)或a/b/c 或a/c/b

  (7)1

  (8)###a=26,b=13,c=19

  (9)*(p+5)或p[5]

  (10)if(a<=b){x=1;printf("####x=%d\n",x);}else {y=2;printf("****y=%d\n",y);}

  或if(a>b){y=2;printf("****y=%d\n",y);}else{x=1;printf("####"x=%d\n",x);}

  或if(a<=b) printf("####"x=%d\n",x=1);else printf("****y=%d\n",y=2);

  或if(a>b) printf("****y=%d\n",y=2);else printf("####"x=%d\n",x=1);

  (11)rewind或 fseek

  (12)(13)(14) void fun(int *q); 或 void fun(q) int *q;

  void fun(int q[]); void fun(q) int q[];

  void fun(int q[M]); void fun(q) int q[M];

  说明:以上两组答案中(A)三个答案可以任意次序 (B)标识符q可以用字母或下划线开头以字母、数字和下划线组成的名字代替。(C)两种风格可以混用。

  (15)6354

  (16)p++ 或 ++p 或 p=p+1 或p+=1或p=1+p

  (17)w[i-1]或 *(w+i-1)

  (18) pc ,pb 或 pb , pc

  (19)pc , pa 或 pa , pc

  (20)pb , pa或 pa , pb

【2017年C语言考试题及答案】相关文章:

1.C语言经典例题及答案

2.C语言笔试试题及答案

3.计算机二级《C语言》备考试题及答案

4.常用C语言测试题及答案

5.全国职称理工C词汇考试题及答案

6.最新C语言知识辅导练习题及答案

7.最新C语言考试强化训练题及答案

8.C语言程序设计模考试题

9.中软c语言面试题及参考答案