读书人

2013年计算机二级C单选模拟题1(附答案

发布时间: 2013-03-21 09:37:44 作者: luck

  一 单项选择题

  1.以下程序的输出结果是( C )。

  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

  2.下列程序执行后的输出结果是( C )。

  void func1(int i);

  void func2(int i);

  char st[ ]="hello,friend!";

  void func1(int i)

  {printf("%c", st[i]);

  if(i<3){i+=2;func2(i);}

  }

  void func2(int i)

  {printf("%c", st[i]);

  if(i<3){i+=2;func1(i);}

  }

  main()

  {int i=0; func1(i); printf("\n");}

  A) hello

  B) hel

  C) hlo

  D) hlm

  3.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( B )。

  A) 地址传递

  B) 单向值传递

  C) 由实参传给形参,再由形参传回实参

  D) 传递方式由用户指定

  4.以下函数值的类型是( A )。

  fun( float x )

  {float y;

  y=3*x-4;

  return y;

  }

  A) int

  B) 不确定

  C) void

  D) float

  5.设有以下函数:

  f( int a)

  {int b=0;

  static int c=3;

  b++; c++;

  return(a+b+C);

  }

  如果在下面的程序中调用该函数,则输出结果是( A )。

  main()

  {int a=2, i;

  for(i=0;i<3;i++) printf("%d\n", f(a));

  }

  A) 7

  B) 7

  C) 7

  D) 7

  8 9 10 7

  9 11 13 7

  6.以下程序的输出结果是( B )。

  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

  7.以下所列的各函数首部中,正确的是( C )。

  A) void play(var a:Integer, var b:Integer)

  B) void play(int a, B)

  C) void play(int a, int B)

  D) Sub play(a as integer, b as integer)

  8.以下程序的输出结果是( C )。

  fun(int x, int y, int z)

  {z=x*x+y*y; }

  main()

  {int a=31;

  fun(5, 2, a);

  printf("%d", a);

  }

  A) 0

  B) 29

  C) 31

  D) 无定值}

  9.当调用函数时,实参是一个数组名,则实参向形参传递的是( B )。

  A) 数组的长度

  B) 数组的首地址

  C) 数组每一个元素的地址

  D) 数组每个元素中的值

  10.以下程序的输出结果是( A )。

  long fun( int n)

  {long s;

  if(n= =1 || n= =2) s=2;

  else s=n-fun(n-1);

  return s;

  }

  main()

  {printf("%ld\n", fun(3)); }

  A) 1

  B) 2

  C) 3

  D) 4

  11.有如下函数调用语句:

  func(rec1, rec2+rec3, (rec4, rec5));

  在该函数调用语句中,含有的实参个数是( A )。

  A) 3

  B) 4

  C) 5

  D) 有语法错

  12.有如下程序:

  int func(int a,int B)

  {return(a+B);}

  main( )

  {int x=2,y=5,z=8,r;

  r=func(func(x,y),z);

  printf(“%d\n”,r);

  }

  该程序的输出的结果是( D )。

  A) 12

  B) 13

  C) 14

  D) 15

  13.以下程序的输出结果是( B )。

  long fib(int n)

  {if(n>2) return(fib(n-1)+fib(n-2));

  else return(2);

  }

  main( )

  {printf(“%ld\n”,fib(3));}

  A) 2

  B) 4

  C) 6

  D) 8

  14.在C语言中,变量的隐含存储类别是( A )。

  A) auto

  B) static

  C) extern

  D) 无存储类别

  15.在下列的函数调用中,不正确的是( D )。

  A) max(a,B);

  B) max(3,a+B);

  C) max(3,5);

  D) int max(a,B);

  16.以下程序的输出结果是( C )。

  func(int x, int y)

  {int z;

  z=x+y;

  return z;

  }

  main( )

  {int a=10, b=20, c=30, s;

  s=func((a--, b++, a+B), c--);

  printf(“%d\n”, s);

  }

  A) 30

  B) 40

  C) 60

  D) 50

  17.现有以下程序:

  #include

  inverse(char str[ ])

  {char t;

  int i, j;

  for(i=0, j=strlen(str); i

  {t=str[i];

  str[i]=str[j-1];

  str[j-1]=t;

  }

  }

  main( )

  {char str[100];

  scanf(“%s”, str);

  inverse(str);

  printf(“%s\n”, str);

  }

  如果输入an anple,该程序的输出结果是( D )。

  A) an anple

  B) elpna na

  C) an

  D) na

  18.在下列叙述中,正确的一条是( A )。

  A) puts和gets函数只能输入或输出一个字符串

  B) 在C语言中,函数可以递归调用或递归定义

  C) 用scanf函数输入数据时可以规定精度,例如scanf(“%7.2f”,&a);

  D) 外部变量只限于本文件中使用

  19.以下程序的输出结果是( C )。

  power(int x, int n)

  {int p;

  if(n>0) p=power(x, n-1)*x;

  else p=1;

  return (p);

  }

  main( )

  {int x=2, n=3;

  printf(“%d\n”, power(x, n));

  }

  A) 5

  B) 6

  C) 8

  D) 9

  20.在C语言的函数中( C )。

  A) 必须有形参

  B) 形参必须是变量名

  C) 可以有也可以没有形参

  D) 数组名不能作形参


  21.当输入a1b2c3d4e时,以下程序的输出结果为( A )。

  #include

  main( )

  {char str[40];

  printf(“请输入含有四个数字字符的字符串:\n”);

  scanf(“%s”,str);

  insert(str);

  }

  insert(char str[ ])

  {int i;

  for(i=strlen(str);i>0;i--)

  {str[2*i]=str[i];

  str[2*i-1]= ‘ ’;

  }

  printf(“\n结果是:%s”, str);

  }

  A) a 1 b 2 c 3 d 4 e

  B) 1 2 3 4

  C) a 1 b 2

  D) 因输入错误,程序出错

  22.在下列叙述中,错误的一条是( A )。

  A) 主函数main中定义的变量在整个文件或程序中有效

  B) 不同函数中,可以使用相同名字的变量

  C) 函数中的形式参数是局部变量

  D) 在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效

  23.以下程序的输出结果是( A )。

  #include

  main( )

  {int i;

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

  as ( );

  }

  as( )

  {int lv=0;

  static int sv=0;

  printf(“lv=%d, sv=%d”, lv, sv);

  lv++;

  sv++;

  }

  A) lv=0,sv=0,lv=0,sv=1

  B) lv=0,sv=0,lv=1,sv=1

  C) lv=0,sv=0,lv=0,sv=0

  D) lv=0,sv=1,lv=0,sv=1

  24.在下列叙述中,错误的一条是( B )。

  A) 全局变量存放在静态存储区中,在程序开始执行时就给全局变量分配存储区,程序执行完才释放

  B) 在有参函数中,形参在整个程序一开始执行时便分配内存单元

  C) 用数组名作函数实参和形参时,应在主调函数和被调用函数中分别定义数组

  D) 在同一个源文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用

  25.在下列语句中,不正确的是( D )。

  A) c=2*max(a,B);  B) m=max(a,max(b,C));

  C) printf(“%d”,max(a,B));

  D) int max(int x,int max(int y,int z));

  26.若输入1.5、2.5,以下程序的输出结果为( C )。

  main( )

  {int max(float x, float y);

  float a, b;

  int c;

  scanf(“%f, %f” , &a, &B);

  c=max(a, B);

  printf(“%d”, C);

  }

  max(float x, float y)

  {float z;

  z=x>y ? x : y;

  return(z);

  }

  A) 1

  B) 2.5

  C) 2

  D) 3

  27、下列程序结构中,正确的是( D )。

  A) main()

  {float a,b,c;

  scanf(“%f,%f”,&a,&B);

  c=add(a,B);

  …

  }

  int add(float x,float y)

  { … }

  B) main()

  {float a,b,c;

  scanf(“%f,%f”,&a,&B);

  c=add(a,B);

  …

  }

  float add(float x,float y)

  { … }

  C) float add();

  main()

  {float a,b,c;

  scanf(“%f,%f”,&a,&B);

  c=add(a,B);

  …

  }

  float add(float x,float y)

  { … }

  D) float add(float x,float y)

  { … }

  main()

  {float a,b,c;

  scanf(“%f,%f”,&a,&B);

  c=add(a,B);

  …

  }

  28.在下列叙述中,错误的一条是( B )。

  A) scanf函数可以用来输入任何类型的多个数据

  B) 数组名作函数参数时,也采用“值传递”方式

  C) 如果形参发生改变,不会改变主调函数的实参值

  D) 函数的实参与形参的类型应一致

  29.以下程序的输出结果是( B )。

  main()

  {int i=1,j=3;

  printf(“%d”,i++);

  {int i=0;

  i+=j*2;

  printf(“%d,%d”,i,j);

  }

  printf(“%d,%d\n”,i,j);

  }

  A) 1,6,3,1,3

  B) 1,6,3,2,3

  C) 1,6,3,6,3

  D) 1,7,3,2,3

  30.C语言中形参的缺省存储类别是( A )。

  A) 自动(auto)

  B) 静态(static)

  C) 寄存器(register)

  D) 外部(extern)

  31.设有如下函数:

  ggg(float x)

  {printf(“\n%d”, x*x);}

  则函数的类型为( C )。

  A) 与参数x的类型相同

  B) void

  C) int

  D) 无法确定

  32.C语言规定,程序中各函数之间( A )

  A) 既允许直接递归调用也允许间接递归调用

  B) 不允许直接递归调用也不允许间接递归调用

  C) 允许直接递归调用不允许间接递归调用

  D) 不允许直接递归调用允许间接递归调用

  33.下面程序的输出结果是( A )。

  main()

  {int i=2,p;

  p=f(i,i+1);

  printf(“%d”,p);

  }

  int f(int a,int B)

  {int c;

  c=a;

  if(a>B) c=1;

  else

  if(a==B) c=0;

  else c=-1;

  return(C);

  }

  A) -1

  B) 0

  C) 1

  D) 2

  34.以下程序的输出结果为( B )。

  f(int b[ ], int n)

  {int i, r;

  r=1;

  for(i=0; i<=n; i++) r=r*b[i];

  return(r);

  }

  main()

  {int x, a[ ]={2,3,4,5,6,7,8,9};

  x=f(a, 3);

  printf(“%d\n”, x);

  }

  A) 720

  B) 120

  C) 24

  D) 6

  35.下列程序执行后的输出结果是( D )。

  f(int a)

  {int b=0;

  static c=3;

  a=c++, b++;

  return(a);

  }

  main( )

  {int a=2, i, k;

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

  k=f(a++);

  printf(“%d\n”, k);

  }

  A) 3

  B) 0

  C) 5

  D) 4

  36.下列程序执行后输出的结果是( A )。

  int d=1;

  fun(int p)

  {int d=5;

  d+=p++;

  printf(“%d”, D);

  }

  main( )

  {int a=3;

  fun(a);

  d+=a++;

  printf(“%d\n”, D);

  }

  A) 84

  B) 96

  C) 94

  D) 85

  37.以下程序的输出结果是( B )。

  fun(int k)

  {if(k>0) fun(k-1);

  printf(“%d”, k);

  }

  main( )

  {int w=5;

  fun(w);

  }

  A) 54321

  B) 012345

  C) 12345

  D) 543210

  38.以下说法中正确的是( C )。

  A) C语言程序总是从第一个定义的函数开始执行

  B) 在C语言程序中,被调用的函数必须在main()函数中定义

  C) C语言程序总是从main()函数开始执行

  D) C语言程序中的main()函数必须放在程序的开始部分

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

  int abc(int u, int v);

  main()

  {int a=24, b=16, c;

  c=abc (a, B);

  printf(“%d\n”, C);

  }

  int abc(int u, int v)

  {int w;

  while(v)

  {w= u%v; u=v; v=w;}

  return u;

  }

  A) 6

  B) 7

  C) 8

  D) 9


  二 填空题

  1.下列程序的输出结果是 5 6 。

  int t(int x, int y, int cp, int dp)

  {cp=x*x+y*y;

  dp=x*x-y*y;

  }

  main( )

  {int a=4, b=3, c=5, d=6;

  t(a, b, c, D);

  printf("%d %d\n", c, D);

  }

  2.以下程序的运行结果是 8,17 。

  #include

  main()

  {int k=4, m=1, p;

  p=func(k, m); printf("%d,", p);

  p=func(k, m); printf("%d\n", p);

  }

  func(int a, int B)

  {static int m=0, i=2;

  i+=m+1;

  m=i+a+b;

  return m;

  }

  3.以下程序输出的最后一个值是 120 。

  int ff(int n)

  {static int f=l;

  f=f*n;

  return f;

  }

  main()

  {int i;

  for(i=1;i<=5;i++) printf("%d\n",ff(i));

  }

  4.以下函数的功能是:求x的y次方,请填空。

  double fun(double x, int y)

  {int i;

  double z;

  for(i=1, z=x; i

  return z;

  }

  5.若变量n中的值为24,则prnt函数共输出 5 行,最后一行有 4 个数。

  void prnt(int n, int aa[ ])

  {int i;

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

  {printf("%6d", aa[i]);

  if(!(i%5)) printf("\n");

  }

  printf("\n");

  }

  6.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。

  #define N 3

  #define M 4

  void LineMax(int x[N][M])

  {int i, j, p;

  for(i=0; i

  {p=0;

  for(j=1; j

  if(x[i][p]

  printf("The max value in line %d is %d\n", i, x[i][p] );

  }

  }

  main()

  {int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

  LineMax(x)

  }

  7.函数pi的功能是根据以下近似公式求π值:

  (π*π)/6=1+1/(2*2)+1/(3*3)+ … +1/(n*n)

  请在下面的函数中填空,完成求π的功能。

  #include “math.h”

  double pi(long n)

  {double s=0.0;

  long i;

  for(i=1;i<=n; i++) s=s+ 1.0/i*i ;

  return(sqrt(6*s));

  }

  8.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部 void fun( double b[10][22]) 。要求形参名为b。

  main()

  {double s[10][22];

  int n;

  …

  fun(s);

  …

  }

  9.输入12时,程序输出结果为 12 is not prime number. ;若输入17,输出结果为 17 is prime number. 。

  main()

  {int number;

  scanf(“%d”, &number);

  if(prime(number)) printf(“\n%d is prime number.”, number);

  else printf(“\n%d is not prime number.”, number);

  }

  int prime(int number)

  {int flag=1, n;

  for(n=2; n

  if(number%n= =0) flag=0;

  return(flag);

  }

  10.理解下面的程序,填空完善程序。

  main()

  {int a, b, c;

  scanf(“%d %d”, &a,%b );

  c= max (a,

  B);

  printf(“a=%d b=%d max=%d\n”, a, b,

  C);

  }

  int max(x, y)

  int x,int y ;

  {int z;

  if(x>y) z=x;

  else z=y;

  return z ;

  }

  11.下面程序的输出结果是 2,5,1,2,3,-2 。

  main()

  {int a=3, b=2, c=1;

  c-=++b;

  b*=a+c;

  {int b=5, c=12;

  c/=b*2;

  a-=c;

  printf(“%d, %d, %d,”, a, b,

  C);

  a+=--c;

  }

  printf(“%d, %d, %d”, a, b,

  C);

  }

  12.下面的findmax函数返回数组s中值为最大的元素的下标,数组中元素的个数由t传人,请填空。

  findmax(int s[ ], int t)

  {int k, p;

  for(p=0, k=p; p

  if(s[p]>s[k]) p=k ;

  return k;

  }

  13.下面程序的输出结果是 7 。

  fun(int x)

  {int p;

  if(x= =0||x= =1) return(3);

  p=x-fun(x-2);

  return p;

  }

  main()

  {printf(“%d\n”, fun(9));}

  14.函数fun的功能是:使一个字符串按逆序存放,请填空。

  void fun(char str[ ])

  {char m;

  int i, j;

  for(i=0, j=strlen(str); i< strlen(str) ; i++, j--)

  {m=str[i];

  str[i]= str[j-1] ;

  str[j-1]=m;

  }

  printf(“%s\n”, str);

  }

更多关注:

2013上半年重庆计算机软件专业技术资格考试

2013年广西计算机应用能力考试1月份考试

2012年下半年西藏软件水平考试成绩查询入口

更多精彩请关注读书人网计算机频道!


读书人网 >二级考试

热点推荐