计算机等级 百分网手机站

全国计算机二级C语言检测试题

时间:2017-06-27 11:54:56 计算机等级 我要投稿

2017全国计算机二级C语言检测试题

  C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。下面是小编收集的全国计算机二级C语言检测试题,希望大家认真阅读!

  一、选择题

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

  A.调用printf( )函数时,必须要有输出项

  B.使用putchar( )函数时,必须在之前包含头文件stdio.h

  C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出

  D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码

  正确答案:B

  答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。

  2). 以下结构体类型说明和变量定义中正确的是( )

  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为用户自定义类型,其为正确的定义形式。

  3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( )

  A.一对一

  B.一对多

  C.多对一

  D.多对多

  正确答案:B

  答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。

  4). 关于C语言的变量,以下叙述中错误的是( )

  A.所谓变量是指在程序运行过程中其值可以被改变的量

  B.变量所占的存储单元地址可以随时改变

  C.程序中用到的所有变量都必须先定义后才能使用

  D.由三条下划线构成的符号名是合法的变量名

  正确答案:B

  答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。

  5). 当变量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)必有一个成立,表达式的值也为真。

  6). 在C语言中,函数返回值的类型最终取决于

  A.函数定义时在函数首部所说明的函数类型

  B.return语句中表达式值的类型

  C.调用函数时主调函数所传递的实参类型

  D.函数定义时形参的类型

  正确答案:A

  答案解析:在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的`表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。

  二、操作题

  1: 第1题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。

  答案:

  void fun(int a, int b, long *c)

  {

  *c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;

  }

  2: 第2题请编写函数fun,它的功能是计算:s=(ln(1)+ln(2)+ln(3)+…+ln(m))(0.5),s作为函数值返回。

  答案:

  double fun(int m)

  {

  int I;

  double s=0.0, log(double x);

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

  s=s+log(i);

  s=sqrt(s);

  return s;

  }

  3: 第3题请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。

  S=1+x+x(2)/2!+x(3)/3!+…x(n)/n!

  答案:

  double fun(double x, int n)

  {

  double s=1.0, p=1.0;

  int I,j,t;

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

  {

  t=1;

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

  t=t*j;

  p=p*x;

  s=s+p/t;

  }

  return s;

  }

  4: 第4题规定输入字符串中只包含字母和*号。请编写函数fun,它的功能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。

  答案:

  void fun(char *a)

  {

  int i=0;

  char *p=a;

  while(*p&&*p==‘*’)

  p++;

  while(*p)

  {

  a[i]=*p;

  i++;

  p++;

  }

  a[i]=‘\0’;

  }

  5: 第5题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做。字符串中间和尾部的*号不删除。

  答案:

  void fun(char *a, int n)

  {

  int i=0,k=0;

  char *t=a;

  while(*t==‘*’)

  {

  k++;

  t++;

  }

  t=a;

  if(k>n)

  t=a+k-n;

  while( *t)

  {

  a[i]=*t;

  i++;

  t++;

  }

  a[i]=‘\0’;

  }

  6: 第6题请编写函数fun,其功能使:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。

  答案:

  double fun(double x[9])

  {

  double sum=0.0;

  int I,j=1;

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

  if(j<=8)

  {

  sum+=sqrt((x[i]+x[i+1])/2.0);

  j++;

  }

  return sum;

  }