首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

09年4月全国计算机等级二级C语言笔试练习(4)

2008-11-13 
C语言笔试练习题

    特意为大家整理的09年4月全国计算机等级二级C语言考前练习,希望对大家的备考有好的帮助!

1.以下程序运行后,输出结果是()
  #include
  ss(char *s)
  {char *p=s;
  while(*p)p++;
  return(p-s);
  }
  main()
  {char*a="abded";
  inti;
  i=ss(a);
  printf("%d\n",i);
  }
  A)8
  B)7
  C)6
  D)5

  2.若有如下程序:
  int sub()
  {static int n=1;
  int x=1;
  x*=n;n++;
  return x;}
  main()
  {int n,t=1;
  for(n=1;n<6;n++)t*=sub();
  printf("%d\n",t);}
  则程序运行后的输出结果是()
  A)15
  B)120
  C)34560
  D)-30976

  3.在C语言中,函数的隐含存储类别是()
  A)static
  B)auto
  C)extern
  D)register

  4.有以下程序:
  intf1(doublea)
  {returna*a; }
  intf2(doublex,doubley)
  {doublea,b;
  a=f1(x);
  b=f1(y);
  returna+b;
  }
  main()
  {doublew;
  w=f2(1.1,2.0);
  …
  }
  变量w中的值是()
  A)5.21
  B)5
  C)5.0
  D)0.0

  5.下面被调用函数sub的函数值的类型是()
  sub(float a)
  {float b;
  b=a*a+1;
  return b;}
  A)单精度型
  B)双精度型
  C)空类型
  D)整型

  6.若有以下定义语句:
  doublea[5];inti=0;
  能正确给a数组元素输入数据的语句是()
  A)scanf("%lf%lf%lf%lf%lf",a);
  B)for(i=0;i<=5;i++)scanf("%lf",a+i);
  C)while(i<5)scanf("%lf",&a[i++]);
  D)while(i<5)scanf("%lf",a+i);

  7.以下程序的输出结果是()
  main()
  { charss[16]="test\0\n\"";
  printf("%d,%d\n",strlen(ss),sizeof(ss));
  }
  A)4,16
  B)7,7
  C)16,16
  D)4,7

  8.以下说法正确的是()
  A)宏定义是C语句,所以要在行末加分号
  B)可以使用#undef命令来终止宏定义的作用域
  C)在进行宏定义时,宏定义不能层层置换
  D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换

  9.以下程序的输出结果是()
  #include
  main()
  {struct stru{int a,b;
  char c[6];
  };
  printf("%d\n",sizeof(stru));
  }
  A)2
  B)4
  C)8
  D)10

  10.若有如下定义:
  int s[3];
  则下面表达式中不能代表数组元素s[1]的地址的是()
  A)&s[1]
  B)&s[0]+1
  C)s+1
  D)s++

  答案:1.D 2.B 3.C 4.C 5.D 6.C 7.A 8.B 9.D 10.D 

       11.若以下对fun函数的调用是正确的:
  x=fun(fun(a,b,c),(a+b,a+c),a+b+c);
  则fun函数的形参个数为()
  A)3
  B)4
  C)5
  D)6

  12.若有说明:int*p, m=5; n;,以下正确的程序段是()
  A)p=&m;
  scanf("%d",&p)
  B)p=&n;
  scanf("%d",&p)
  C)scanf("%d",&p)
  p=&n;
  D)p=&n;
  p=&m;

  13.以下程序调用findmax函数返回数组中的最大值
  findmax(int*a,int n)
  { int*p,*s;
  for(p=a,s=a;p-a  if()s=p;
  return(*s);
  }
  main()
  { intx[5]={12,21,13,6,18};
  printf("%d\n",findmax(x,5));
  }
  在下划线处应填入的是()
  A)p>s
  B)*p>*s
  C)a[p]>a[s]
  D)p-a>p-s

  14.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是()
  A)p=2*(int*)malloc(sizeof(int));
  B)p=(int*)calloc(2*sizeof(int));
  C)p=(int*)malloc(2* sizeof(int));
  D)p=2*(int*)calloc(sizeof(int));

  15.下列程序的输出结果是()
  main()
  {char *p1,*p2,str[50]="xyz";
  p1="abcd";
  p2="ABCD";
  strcpy(str+2,strcat(p1+2,p2+1));
  printf("%s",str);
  }
  A)xyabcAB
  B)abcABz
  C)Ababcz
  D)XycdBCD

  16.以下叙述中不正确的是()
  A)一个变量的作用域完全取决于变量定义语句的位置
  B)全局变量可以在函数以外的任何部位进行定义
  C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用
  D)一个变量说明为static存储类是为了限制其他编译单位的引用

  17.交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符()
  A)~
  B)&
  C)^
  D)|

  18.下面的说法不正确的是()
  A)函数调用时,先求出实参表达剑缓蟠胄尾巍6褂么蔚暮曛皇墙屑虻サ淖址婊?BR>  B)函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递
  C)对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏名有类型
  D)调用函数只可得到一个返回值,而用宏可以设法得到几个结果

  19.fscanf函数的正确调用形式是()
  A)fscanf(fp,格式字符串,输出表列);
  B)fscanf(格式字符串,输出表列,fp);
  C)fscanf(格式字符串,文件指针,输出表列);
  D)fscanf(文件指针,格式字符串,输入表列);

  20.以下程序的运行结果是()
  # define MAX 10
  int a[MAX],i;
  main()
  { printf("\n");sub1();sub3(a);sub2();sub3(a);
  }
  sub2()
  { int a[MAX],i,max;
  max=5;
  for(i=0;i  }
  sub1()
  {for(i=0;i  }
  sub3(int a[])
  { int i;
  for(i=0;i  printf("\n");
  }
  A)0 2 4 6 8 10 12 14 16 18
  0 1 2 3 4
  B)0 1 2 3 4
  0 2 4 6 8 10 12 14 16 18
  C)0 1 2 3 4 5 6 7 8 9
  0 1 2 3 4
  D)0 2 4 6 8 10 12 14 16 18
  0 2 4 6 8 10 12 14 16 18

  答案:11.A 12.D 13.B 14.C 15.D 16.B 17.C 18.B 19.D 20.D

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行