| 网站首页 | 文秘公文 | 免费试题 | 教学用文 | 优秀教案 | 各类考试 | 
您现在的位置: 东星资源网 >> 各类考试 >> 计算机等级考试 >> 历年试题 >> 正文
05年9月等级考试二级C语言考前密卷2(七)
05年9月等级考试二级C语言考前密卷2(七)

  (28)选项中,非法的字符常量是 ______。
  A)'\t'    B)'\17'      C)"\n"      D)'\xaa'
  答案:C
  评析:C语言中字符常量是以单引号括起来的单个字符,或为以"\"与三位八进制数值或两位十六进制数值代替单个字符。
  
  (29)程序的输出结果是______ 。
  #include<stdio.h>
  main()
  {
  int a=200;
  #define a lOO
  printf("%d",a);
  #undef a
  printf ("%dt",a);
  }
  A)200 100    B)100 100      C)100 200      D)200 200
  答案:C
  评析:#define宏名的范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题#undef的作用,使a的作用范围在#define a 100到#undefa之间,故答案为c。
  
  (30)若有说明:int i,j=2,*p=&i;,则能i=j赋值功能的语句是______。
  A)i=*p;    B)*p=*&j;     C)i=&j;      D)i=**p;
  答案:B
  评析:指针是用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,*p的值即为i的值。又"&"和"∥两个运算符的优先级别相同,按自右而左的方向。&j先&j运算,得j的地址,再+运算,取所得地址里面的值,故t&j与i等价。
  
  (31)假定int类型变量占用两个字节,若有定义:int x={0,2,4};,则数组x在内存中所占字节数是______。
  A)3       B)6         C)10        D)20
  答案:D
  评析:当数组定义后,系统就为其分配内存空间,而内容。,本题中数组x为其元素初始化,它所分配的存储空间仍为2+10=20个字节。
  
  (32)的程序段后,m的值是______。
  int a={{l,2,3},{4,5,6}};
  int m,*p;
  p=&a[0][0];
  m=p[41;
  A)4       B)5         C)3         D)不
  答案:B
  评析:程序中定义了指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。P等价于*(p+4),即二维数组a中个元素的值,而a是2*3的二维数组,其个元素为a,即5。
  
  (33)程序的输出结果是______。
  main()
  {int i,a
  for(i=9;i>=O;i--) a[i]=lO-i;
  printf("%d%d%d",a,a,a);
  }
  A)258      B)74l        C)852        D)369
  答案:C
  评析:在本题运行时主要注意的是当i=9时,a[i]=10-9=1;i=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3:……依此类推,,直到i=0时,a[i]=10-0=10;此时,i的值已变为.1,判断for的循环条件,不成立,然后输出a,a,a分别为8,5,2。
  
  (34)下面程序的输出结果为______ 。
  #include<string.h>
  main()
  {
  char pl="abc",p2[]="ABC",str[50]= "xyz";
  strcpy(str,strcat(pl,p2));
  printf("%s",str);
  }
  A)xyzabcABC  B)abcABC       C)xyzabc      D)xyzABC
  答案:B
  评析:strcpy(strl,s1):作用是将字符串s1拷贝到字符数组strl中去。strcat(字符数组1,字符数组2):把。字符串2接到字符串l的后面,结果字符数组1中,函数调用后返回字符数组l的地址。
  本题定义了三个字符数组pl,p2,str,strcat(p1,p2)函数的作用是将字符串数组p2接到字符串p1的后面,结果字符数组p1,再sffcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,打印输出字符串str即可abcABC。
  
  (35)数组定义中不的是______。
  A)int a[2Ⅱ3];        B)int b[]={0,1,2);
  C)int c[100][100]={0};    D)int d[]={{l,2},{l,2,3},{1,2,3,4}};
  答案:D
  评析:一维数组的定义为:
  类型说明符数组名[常量表达式];
  选项A符合此定义;c语言中多维数组赋初值时可以赋值,也可以不指定除维以外的其它维的大小,故选项c数组元素都赋初值,则定义数组时对维的长度可以不指定,但维的长度省,选项B,而选项D是错误的。
  
  (36)程序的输出结果是______。
  main()
  { jnt a:{{1,3,5},{2,4,6},{3,5,7}};
  printf("%d%d%d%d\n",a[0],a,a,a[0]);
  }
  A)0650     B)1470       C)5430       D)输出值不定
  答案:A
  评析:对未给出初始值的整数数组元素,被缺省初始化为零。
  
  (37)在说明语句:int *f();中,标识符f代表的是______。
  A)用于指向整型数据的指针变量  B)用于指向一维数组的行指针
  C)用于指向函数的指针变量    D)返回值为指针型的函数名
  答案:D
  评析:带回指针值的函数,其定义为:
  类型标识符 *函数名(参数表);
  例如:int *f(x,y);
  ,f是函数名,调用它以后能指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧分别为。运算符和()运算符,而()优先级高于s,f先与(),显然是函数函数前面有。,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。
  
  (38)程序的输出结果是______。
  main()
  { char st[20]= "hello\0\t\\";
  printf("%d%d\n",strlen(st),sizeof(st));
  }
  A)99       B)520       C)1320       D)2020
  答案:B
  评析:c语言中字符串是以'\0'字符结束的,且strlen()函数计算的是'\0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配大小的内存空间,而内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。本题的sizeof(st)为20。
  
  (39)下面程序运行后的输出结果是______。
  int d=1:
  fun(int p)
  { static int d=5;d+=p;
  printf("%d",d);return d;
  }
  main()
  {int a=3;printf("%d\n",fun(a+fun(d)));}
  A)6 9 9     B)6 6 9       C)6 15 15      D)6 6 15
  答案:C
  评析:静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,在编译时的,而在函数调用时,每调用一次函数重新给一次初值,一次赋值语句。
  本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在次调用函数fun时,d初值为5,p由主函数传递的值为1,则d=d+p=5+l=6,d是静态局部变量,在函数调用结束后,它仍保留d=6。调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。
  
  (40)选项中,赋值的是______。
  A)char s1;sl="chest";    B)char s2[]。{'C','t','e','s','t');
  C)char s3[20]= "Chest";    D)char*s4="Ctest\n"'
  答案:A
  评析:c语言中将字符串常量直接赋给数组。但在赋初值时可以。
  
  (41)程序输出的是______。
  alnovep(int *p,int(*a),int n)
  {int i,j;
  for(i=0;i<n;i++)
  for(j=0 ;j<n;j++){ *p=a[i][j];p++;}
  }
  main()
  {int *p,a={{1,3,5},{2,4,6}};
  p=(int*)malloc(100);
  amovep(p,a,3);
  printf("%d%d\n",p,p);free(p);
  }
  A)56       B)25        C)34         D)程序错误
  答案:A
  评析:本题main函数中定义了指针p和二维数组a,函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=l,a[0]=3,a[0]=5,a[0]=2,a[l]=4,a=6,a[O]=0,a=0,a=0a
  malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p,p为56。
  
  (42)下面程序的输出结果是______。
  #define a 121
  const b=12:
  enum c{a1,a2};
  main()
  {
  printf("%d,%d,%d.",sizeOf(a),sizeOf(b),sizeof(enum C));
  }
  A)121,0,4   B)2,2,2      C)0,2,4      D)0,2,2
  答案:B
  评析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;const b=12;,数据类型可以缺省,默整型;enum c{al,a2};定义了枚举类型enum c,al,a2为枚举元素,在c编译时,对枚举元素按常量,它们的值按定义顺序依次为0,1。它们的字节数均为2,2,2。
  
  (43)程序的输出结果是______。
  struct HAR
  {int x,y;struct HAR *p;} h
  main()
  { h[0].X=1; h[O].y=2;
  h.x=3;h.y=4;
  h[0].p=&h;h.p=h;
  printf("%d%d\n",(h[O].p)->x,(h.p)->y);
  }
  A)12       B)23         C)14         D)32
  答案:D
  评析:本题中是含有两个结点的循环链表。
  c语言中结构体的定义为:.
  struct结构体类型名
  {
  项表:
  };
  
  (44)变量a所占的内存字节数是______ 。
  A)4       B)5          C)6          D)8
  Union U
  { char st
  Int i:
  Long l;
  };
  Struct A
  { int c;
  Union U u;
  }a;
  答案:C
  评析:结构体变量所占内存长度是各占内存长度之和,而共用体变量所占的内存长度等于最长的的长度。本题结构体变量a中c为整型占2个字节,共用体变量u最大长度为4个字节,故选C。
  
  (45)程序的结果是______。
  int a,b;
  void fun()
  { a=100;b=200;)
  main()
  {int a=5,b=7;
  fun();
  printf("%d%d\n",a,b);
  }
  A)100200    B)57         C)200100      D)75
  答案:B
  评析:全程变量是可以在子函数中对其值作,且它也可函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。
  
  (46)程序的输出结果是______。
  #define M(x,y,z) x*y+z
  main()
  { int a=l,b=2,c=3;
  printf("%d\n",M(a+b,b+c,c+a));
  }
  A)19      B)17         C)15        D)12
  答案:D
  评析:c语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其为:#define宏名(形参表) 字符串,本题的M(a十b,b+c,c+a)被字符串a+b*b+c+c+a代替。
  
  (47)若有说明和语句:
  struct st
  {int n;char *ch;);
  struct st a={5,"abc",7,"def',9,"ghK"},*p=a;则值为6的表达式是______。
  A)p++ ->n    B)p一>n++      C)(*p).n++   D)+十p->n
  答案:D
  评析:结构变量的存储特点,p+l意味着地址值为结构体数组a的元素所占的字节数,'即p++使p由a[0]指向a起始地址。本题++p>np指向的结构体变量中n的值使之加l。p指向数组a起始地址,p->n的值为5,再自加l运行,结果为6。
  
  (48)整型变量x和Y的值相等,且为非O值,则选项中结果为0的表达式是______。
  A)x||Y     B)X|Y        C)X&Y        D)X^Y
  答案:D
  评析:"‖"为或运算符,当其左右表达式中只要为非零则整个表达式的值1。︱是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来的。
  
  (49)C语言中,组成数据文件的成分是______。
  A)记录    B)数据行       C)数据块      D)字符(字节)序列
  答案:D
  评析:c语言中的文件是流式文件。流式文件是无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为
  
  (50)下面的程序后,文件test.t中内容是______。
  #include<stdio.h>
  void fun(char *fname,char *st)
  { FILE *myf;int i;
  myf=fopen(fname, "w");
  for(i=0;i<strlen(st);i++)fputc(st[i],myf);
  fclose(myf);
  }
  main()
  {fun("test.t","new world");fun("test.t","hello,");}
  A)hello,  B)new worldhello C)new world  D)hello,rid
  答案:A
  评析:c语言中文件有文本文件与二进制文件,对文件的使用前先打开,打开有只读、写入、读写等
  
  二、填空题(每空2分,共40分)
  
  请将每空的答案写在答题卡的【1】至【20】序号的横线上,答在试卷上分。
  
  (1)算法所需的存储单元多少和算法的工作量大小分别称为算法的 【1】  。
  答案:【1】空间度和
  评析:算法的性是指对在有限内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间性,算法的计算量是算法的性。
  
  (2)数据结构包括数据的逻辑结构、数据的 【2】 对数据的操作运算。
  答案:【2】存储结构
  评析:数据结构包括3个,即数据的逻辑结构、数据的存储结构及对数据的操作运算。
  
  (3)类可以从直接或间接的祖先中继承所有属性和方法。采用方法了软件的  【3】 。
  答案:【3】可重用性
  评析:继承的优点:相似的可以共享程序代码和数据结构,从而大大了程序中的冗余,软件的可重用性。
  
  (4)面向的模型中,最的概念是和  【4】 。
  答案:【4】类
  评析:面向模型中,最的概念是和类。是现实世界中实体的模型化;将属性集和方法集相同的所有组合在一起,可以构成类。
  
  (5)软件活动包括几类:改正性、 【5】 和预防性
  答案:【5】
  评析:软件活动包括几类:改正性和预防性是指用户对软件的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、软件性能、改进加工软件的可性。
  
  (6)语句:X++;、++X;、X=X+1;、X=l+X;,后都使变量X中的值增l,请写出一条同一功能的赋值语句(与列举的相同) 【6】  。
  答案:【6】X+=1:
  评析:在c语言中使变量增l的方法有:自增运算符与赋值语句。自增运算符有前置与后置,赋值语句也有两种类型。
  本题中的主要增l有:x++;、++x;、X=X+I;、x=1+x;、x+=l;。
  
  (7)设Y是int型变量,请写出判断Y为奇数的关系表达式  【7】
  答案:【7】Y%2==1 或Y%2!=0
  评析:判断变量为奇数可以用变量与2取模,判断结果是为1或不为0。本题做法如下:Y%2==1或Y%2 1=0。
  
  (8) 程序的输出是 【8】  。
  main()
  {
  char strl[]="How do you do",*pl=strl:
  strcpy(strl+strlen(strl)/2,"es she");
  printf("%s\n",p1);
  }
  答案:【8】How does she
  评析:strcpy(strl,s1):字符串拷贝函数,作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中长度,不包括'\O'在内。本题中strlen(strll的值为13,则strcpy(strl+strlen(strl)/2,"es she",);于strcpy(strl+6,"es she");,可得答案为How does she。
  
  (9)程序运行后的输出结果是 【9】   。
  main()
  {int i=10,J=0;
  do
  {j=j+i;i--;}
  while(i>2);
  printf("%d\n",j);
  }
  答案:【9】52
  评析:do...while语句的为:
  do
  {
  语句:
  }while(条件表达式)
  当条件表达式为非零时,循环体,直到条件表达式为零时退出循环。
  
  (10)设有如下程序:
  main()
  {int nl,n2;
  scanf("%df",&n2);
  while(n2!=0)
  { nl=n2%lO;
  n2=n2/10:
  printf("%d",n1);
  }
  }
  程序运行后,从键盘上输入1298,则输出结果为  【10】   。
  答案:【10】8921
  评析:本题的程序的功能是将输入的整数反向输出。
  
  (11)程序输出的最后值 【11】  。
  Int  ff(int n)
  {static int f=1:
  f=f*n:
  retun f
  }
  main()
  { int i;
  for(i=1;i<=5;i++)printf("%d\n",ff(i));
  }
  答案:【ll】120
  评析:
  静态变量的类型说明符是static,静态局部变量属于静态存储,它特点:
  ①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。
  ②对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。
  ③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:c语言中的非静态变量在定义时,系统并不会自动给它赋初值)
  ④静态局部变量在函数调用结束后仍然,但函数是引用它的。
  本题中函数的功能是:与for语句一起求整数的阶乘。
  
  (12)函数的功能是:求x的y次方,请填空.
  double fun(double x,int y)
  {int i;
  double z;
  for(i=1,z=x;i<y;i++)z=z* 【12】  ;
  return z:
  )
  答案:【12】x
  评析:函数的定义为:
  函数类型函数名(形参表)
  {
  类型说明语句;
  语句:
  }
  本题中函数的功能是:累积变量以求得变量的Y次方。
  
  (13)下列程序的输出结果是 【13】   。
  main()
  {
  int a[]={2,4,6},*ptr=&a[0],x=8,y,z;
  for(y=O;y<3;y++)
  z=(*(ptr+y)<x)?*(ptr十y):x;
  printf("%d\n",z);
  }
  答案:【13】6
  评析:条件运算符的优先级高于赋值运算符,本题先计算关系表达式(*(ptr+y)<x)?*(ptr+y):x的值,再赋给变量z。当y=O时,*(ptr+y)=2,而x=8,(*ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,Z=2;当y=l时,*(ptr+y)=4,(*(pty+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,z=4;当y=2时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,z=6;循环结束。输出z的结果为6。
  
  (14)程序运行后的输出结果是 【14】  。
  main()
  { char s[]="9876",*p;
  for(p=s;p<s+2;p++)printf("%s\n",p);
  }
  答案:【14】9876
  876
  评析:指针是数据类型,数据类型的变量用来存放内存中分配的存储单元的首地址。
  指针的定义:
  类型说明符 *指针变量名;
  
  (15)若有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以拷贝。(注:不使用逗号表达式)
  while(s[i]){d[j]= 【15】    ;j++;}
  d[j]=0;
  答案:【15】s[i++]
  评析:本题中字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增后置来
  
  (16)若有如下结构体说明:
  struct STRU
  { int a,b;char c:double d:
  struct STRU *pl,*p2;
  };
  请填空,以对t数组的定义,t数组的每个元素为该结构体类型。
  【16】  t[20]
  答案:【16】struct STRU
  评析:结构体类型是构造数据类型,是用户定义的类型。
  结构体类型的定义:
  struct结构体类型名
  {
  项表:
  };
  定义结构体变量的的为:
  struct结构体类型名 变量1,变量2,...
  变量包括:变量、指针变量、数组变量等。
  
  (17)下面的程序可对指定字符串中的字符串从大到小排序,请将程序填完整(注:程序采用了冒泡排序算法)
  #include<stdio.h>
  #include<string.h>
  main()
  { char *str="ABCDabcd",temp;
  Int n,i;
  n=strlen(str);
  while(n-->1)
  for(i=0;i<n;i++)
  if(str[i]<str[i+1])
  { temp= 【17】 ;
  str[i]=str[i+1];
  _【18】  =temp;
  }
  Printf(_【19】  );
  }
  答案:【17】str[i]
  【18】str[i+1]
  【19】"%s",str
  评析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其过程是将相邻两个字符当前字符小于下字符,则中间变量temp将字符两两交换,空应填:str[i],空应填:str[i+1]。打印输出的字符串str,空应填;"%s",str。
  
  (18)程序段打开文件后,先fseek函数将文件位置指针定位在文件末尾,然后调  用ftell函数返回当前文件位置指针的位置,从而文件长度,请填空。
  FILE *myf;long fl;
  myf=_【20】  ("test.t","rb");
  fseek(myf,(),SEEK_END);fl+ftell(myf);
  fclose(myf);
  printf("%l d\n",f1);
  答案:【20】fopen
  评析:C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。
  打开文件的函数为:fopen(),调用为:fp=fopen("文件名","使用文件");
  关闭文件的函数为:fclose(),调用为:fclose(fp);fp为文件指针。 --下载<<05年9月等级考试二级C语言考前密卷2(七)>>Word文档 ,本文由东星资源网收集,版权归原作者所有
文章录入:admin    责任编辑:admin 
  • 上一个文章:

  • 下一个文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    相关历年试题 最新热点 最新推荐
    名师指点:历年考研数学重点…
    迈入六月天 2010考研大纲出来…
    我的暑期我做主:2010考研数…
    2010年考研数学线性代数解题…
    专家指导:2010年考研数学命…
    2010年考研数学指导:掌握学…
    名师指点:搜索2010考研数学…
    六月备考:为你量身定制2010…
    2010年考研数学复习名师忠言…
    我的暑期我做主:成就2010年…
      各类考试导航:
    英语四六级考试试题   英语作文   技巧心得   复习指南
    公务员考试最新资讯   申论试题   行政职业能力   公务员面试试题   专业科目试题   公共科目试题   考试攻略   时事政治
    成人高考语文复习   英语复习   史地复习   理化复习   数学(文)   数学(理)   政治复习
    计算机等级考试最新动态   历年试题   政策说明   经验交流
    职称英语理工类   卫生类   综合类   经验交流
    商务英语
    护士执业考试临床护理   基础护理学   心理护理    中医护理
    考研资料工程硕士   MBA   法律硕士    在职研究生   同等学历   心得指南