就业数据资源平台
当前位置:首页 > C语言程序设计
2011计算机等级考试二级C语言考前密卷(9)

  (1)根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成
  A)动态结构和静态结构      B)紧凑结构和非紧凑结构
  C)线性结构和非线性结构  D)内部结构和外部结构
  (2)设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为
  A)12                                 B)13
  C)14                                D)15
  (3)在下列几种排序方法中,要求内存量最大的是
  A)插入排序
  B)选择排序
  C)快速排序
  D)归并排序
  (4)下列叙述中,不属于结构化程序设计方法的主要原则的是
  A)自顶向下
  B)由底向上
  C)模块化
  D)限制使用goto语句
  (5)下列不属于软件调试技术的是
  A)强行排错法
  B)集成测试法
  C)回溯法
  D)原因排除法
  (6)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为
  A)PAD图    B)N-S图
  C)结构图    D)数据流图
  (7)软件复杂性度量的参数包括
  A)效率
  B)规模
  C)完整性
  D)容错性
  (8)下列叙述中,不属于数据库系统的是
  A)数据库
  B)数据库管理系统
  C)数据库管理员
  D)数据库应用系统
  (9)数据库系统的核心是
  A)数据库
  B)数据库管理系统
  C)数据模型
  D)软件工具
  (10)视图设计一般有3种设计次序,下列不属于视图设计的是
  A)自顶向下    B)由外向内
  C)由内向外    D)自底向上
  (11)下列常数中不能作为C语言常量的是
  A)0xabc
  B)2.5e-0.2
  C)32
  D)0747
  (12)设int型的数据长度为2个字节,则unsigned int 类型数据的取值范围是
  A)-127~128
  B)0~255
  C)0~65535
  D)0~32768
  (13)已知int t=6,s;则执行语句s=(++t)+(t++);后,s的值是
  A)12
  B)13
  C)14
  D)15
  (14)已知int x=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为
  A)0
  B)1
  C)4
  D)5
  (15)已知int i,a;执行语句i=(a=3,a++,--a,a+4,a+5,++a);后,变量i的值为
  A)2
  B)3
  C)4
  D)5
  (16)下列说法中正确的是
  A)一个C程序是从命令行开始执行的
  B)C程序中有些执行语句不用分号(;)结束
  C)分号不是C语句的一部分,是C语句之间的分隔符
  D)命令行必须用“#”开头,最后不能加“;”号,命令行不是C程序中的语句
  (17)已知int x=2;执行语句x*=x+=++x;后,x的值是
  A)16
  B)26
  C)36
  D)46
  (18)已知int a=20,b=5;则执行以下语句后的输出结果是
  printf("%d\n",a%=(b%=2));
  A)0
  B)1
  C)2
  D)3
  (19)现有以下程序段
  #include <stdio.h>
  main()
  { int a,b,c;
  scanf("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);
  printf("a=%d,b=%d,c=%d\n",a,b,c); }
  若输出的结果为a=20,b=30,c=40,则以下能够正确输入数据的是
  A)a=10]20,b=20]30,c=40<CR>
  B)20,30,40<CR>
  C)a=20,b=30,c=40<CR>
  D)a=10]20,b=30]20,c=40<CR>
  [注]: “]”表示空格,<CR>表示回车
  (20)已知int x=5,y=3;则表达式(x||y)&&78的结果为
  A)1
  B)0
  C)5
  D)78
  (21)有如下程序段
  #include "stdio.h"
  main()
  {int a=10,b=50,c=30;
  a=a>30?1:2;
  b=b>30?1:2;
  c=c>30?1:2;
  printf("%d,%d,%d\n",a,b,c);}
  则执行结果为
  A)2,1,2
  B)1,2,1
  C)1,1,2
  D)2,1,1
  (22)阅读如下程序段
  #include "stdio.h"
  main()
  { int a=45,b=40,c=50,d;
  d=a>30?b:c;
  switch(d)
  { case 30 : printf("%d,",a);
  case 40 : printf("%d,",b);
  case 50 : printf("%d,",c);
  default : printf("#");}}
  则输出的结果是
  A)40,50,
  B)50,#
  C)40,#
  D)40,50,#
  (23)若有定义int k=10;则下列程序的输出结果为
  do{
  printf("%d",k--); } while(!k);
  A)9
  B)10
  C)10987654321
  D)没有输出
  (24)阅读下列程序段,则程序的输出结果是
  #include "stdio.h"
  main()
  { int a=10,b=10,k;
  for(k=0;a>8;b=++k)
  printf("%d,%d,",a--,--b);
  printf("\n");}
  A)10,10,10,0,

  B)10,9,9,0,
  C)10,10,9,1,
  D)9,9,9,1,
  (25)下列程序的运行结果是
  #include "stdio.h"
  main()
  {int a,b,m;
  for(a=5;a>=1;a--)
  { m=0;
  for(b=a;b<=5;b++)
  m=m+a*b;}
  printf("%d\n",m);}
  A)30
  B)15
  C)20
  D)10
  (26)有字符串如下,"\n\\\407as1\"\xabc",则字符串的长度为
  A)6
  B)7
  C)8
  D)9
  (27)阅读下面程序段
  #include "stdio.h"
  main()
  { char c;
  c=(′z′-′a′)/2+′A′;
  putchar(c);}
  输出结果为
  A)M
  B)N
  C)O
  D)Q
  (28)下列说法中不正确的是
  A)C语言规定,不能在一个函数的内部再定义函数
  B)在没有声明函数返回值类型的情况下,C默认的函数返回值类型为int型
  C)函数的类型可以是整型、实型、字符型,但不能是指针型
  D)函数可以没有形参,但函数名后的一对圆括号不能省略
  (29)现有如下程序,则程序的输出结果为
  #include "stdio.h"
  int f(int a,int b)
  {int c;
  if(a>0&&a<10)c=(a+b)/2;
  else c=a*b/2;
  return c;}
  main()
  { int a=8,b=20,c;
  c=f(a,b);
  printf("%d\n",c);}
  A)随机数
  B)80
  C)28
  D)14
  (30)阅读如下程序段,则程序段的执行后的输出结果为
  #include "stdio.h"
  main()
  { char c;
  int i;
  char count();
  int p(char);
  for(i=0;i<30;i++)c=count();
  p(c);}
  char count()
  { char str=′A′;
  str+=1;
  return(str);}
  p(char c)
  {putchar(c);
  putchar(′\n′);}
  A)A
  B)B
  C)a
  D)b
  (31)阅读如下程序段,则执行后的结果为
  #include "stdio.h"
  main()
  {int a,*p,*q,**w;
  p=&a;
  q=&a;
  w=&p;
  *p=5%6;
  *q=5;
  **w=3;
  printf("%d\n",a);}
  A)无确定值
  B)1
  C)5
  D)3
  (32)现有定义int a=10,*p=&a;则不能使a的内容增1的语句是
  A)*p++;
  B)*p=*p+1;
  C)++*p;
  D)*p+=1;
  (33)现有下列程序段
  #include "stdio.h"
  void JFT(int *a,int *b,int *c,int *d,int *e)
  {int i,j,k,m;
  for(i=0;i<*a;i++)
  for(j=0;j<*b;j++)
  for(k=0;k<*c;k++)
  for(m=0;m<*d;m++)*e++;}
  main()
  {int a=10,b=10,c=10,d=10,e=0;
  JFT(&a,&b,&c,&d,&e);
  printf("%d\n",e);}
  则程序段的输出结果是
  A)10000
  B)1000
  C)10001
  D)0
  (34)已知:int c[5][6];则对数组元素引用不正确的是
  A)c[0+2][2*1]
  B)c[1][3]
  C)c[4-2][0]
  D)c[5][2]
  (35)以下能对二维数组c进行正确的初始化的语句是
  A)int c[3][]={{3},{3},{4}};
  B)int c[][3]={{3},{3},{4}};
  C)int c[3][2]={{3},{3},{4},{5}};
  D)int c[][3]={{3},{},{3}};
  (36)阅读下列程序段,则程序段实现的功能是
  #include "stdio.h"
  main()
  { int k[10];
  int j;
  for(j=0;j<10;j++)
  scanf("%d",&k[j]);
  for(j=9;j>=0;j--)
  printf("%d,",k[j]);}
  A)输入10个数据的顺序输入并输出
  B)输入10个数据的逆序存放
  C)输入10个数据的逆序输出
  D)以上叙述均错误
  (37)阅读程序,则执行后的结果为
  #include "stdio.h"
  main()
  {int i,m,n;
  for(i=0;i<3;i++)
  {m=test1();
  n=test2();}
  printf("%d,%d\n",m,n);}
  test1()
  { int x=0;
  x++;
  return x;}
  test2()
  {static int x=0;
  x++;
  return x;}
  A)1,1
  B)1,3
  C)3,1
  D)3,3
  (38)以下关于宏替换叙述中,错误的是
  A)宏替换占用编译时间
  B)替换文本中可以包含已定义过的宏名
  C)宏名可以由+号组成
  D)宏替换只能是字符替换


  (39)阅读下面程序,则程序的输出结果为
  #include "stdio.h"
  main()
  { int c[]={1,2,3,4,5,6};
  int *p;
  p=c;
  printf("%d,",*p);
  printf("%d\n",*++p);}
  A)1,2
  B)2,1
  C)1,1
  D)2,2
  (40)有如下定义,则函数fun的首部可以是
  #define N 5
  #define M 6
  main()
  {doublec[M][N];
  fun(c); }
  A)fun(double a)
  B)fun(double a[M][])
  C)fun(double *a)
  D)fun(double (*a)[N])
  (41)下面关于字符串的说明中,错误的是
  A)char a[15]= "jft";
  B)char a[]="jft";
  C)char *a=:"jft";
  D)char a[]={′j′,′f′,′t′};
  (42)已知:char a[20]= "abc",b[20]= "defghi";则执行下列语句后的输出结果为

  printf("%d",strlen(strcpy(a,b)));
  A)11
  B)6
  C)5
  D)以上答案都不正确
  (43)阅读如下程序段,则程序在先后输入love和china后,输出结果是
  #include <stdio.h>
  #include <string.h>
  main()
  {char a[30],b[30];
  int k;
  gets(a);
  gets(b);
  k=strcmp(a,b);
  if(k>0)puts(a);
  else if(k<0)puts(b);}
  A)love
  B)china
  C)lovechina
  D)没有输出结果
  (44)阅读下面程序,则执行后的结果为
  #include "stdio.h"
  #include "string.h"
  #define N 10
  #define M 10
  char *find(char (*a)[M],int n)
  {char *q; int i;
  q=a[0];
  for(i=0;i<n;i++)
  if(strcmp(a[i],q)<0)q=a[i];
  return q;}
  main()
  {char s[N][M]={"tomeetme","you","and","he","china"};
  char *p;
  int n=5,i;
  p=find(s,n);
  puts(p);}
  A)he
  B)and
  C)you
  D)tomeetme
  (45)当定义一个结构变量时系统分配给它的内存是
  A)各个成员占用内存的总和
  B)成员中占内存量最大者所需的容量
  C)定义的同时并不分配空间
  D)结构中最后一个成员所需内存量
  (46)有以下说明语句
  struct a{ char x;
  double y; } ptype;
  则下列选项中错误的是
  A)a是用户定义的结构体标识
  B)struct a是用户定义的结构类型
  C)ptype是用户定义的结构类型名
  D)x和y都是结构成员名
  (47)已知有如下定义:struct a{char x; double y;}data,*t;,若有t=&data,则对data中的成员的正确引用是
  A)(*t).data.x
  B)(*t).x
  C)t->data.x
  D)t.data.x
  (48)若有以下程序段,则选项中值为2的是
  struct a{int n,*next;};
  int x=1,y=2,z=3;
  struct a s[3],*p=s;
  s[0].next=&x;s[1].next=&y;s[2].next=&2;
  A)*(p++)->next
  B)*(++p)->next
  C)(*p).next
  D)(p++)->next
  (49)下面程序段的输出为
  #include "stdio.h"
  main()
  { int a=8,b;
  b=a|1;
  b>>=1;
  printf("%d,%d\n",a,b);}
  A)4,4
  B)4,0
  C)8,4
  D)8,0
  (50)阅读下面程序,此程序的功能为
  #include "stdio.h"
  main(int argc,char *argv[])
  { FILE *p1,*p2;
  int c;
  p1=fopen(argv[1],"r");
  p2=fopen(argv[2],"a");
  c=fseek(p2,0L,2);
  while((c=fgetc(p1))!=EOF)fputc(c,p2);
  fclose(p1);
  fclose(p2);}
  A)实现将p1打开的文件中的内容复制到p2打开的文件
  B)实现将p2打开的文件中的内容复制到p1打开的文件
  C)实现将p1打开的文件中的内容追加到p2打开的文件内容之后
  D)实现将p2打开的文件中的内容追加到p1打开的文件内容之后

就业数据资源平台