当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言阅读程序题及答案解析精选
发布时间:2011/7/30 16:35:07 来源:城市学习网 编辑:ziteng

  【2.1】以下程序的输出结果是 。 main( )
  { float a;
  a=1/100000000;
  printf("%g",a);
  }
  A) 0.00000e+00
  B) 0.0
  C) 1.00000e-07
  D) 0
  【2.2】下面程序的输出结果是____。
  #include
  main( )
  { int x=10;
  { int x=20;
  printf ("%d,", x);
  }
  printf("%d\n", x);
  }
  A) 10,20
  B) 20,10
  C) 10,10
  D) 20,20
  【2.3】以下程序的输出结果是____。
  main()
  { unsigned int n;
  int i=-521;
  n=i;
  printf("n=%u\n",n);
  }
  A) n=-521
  B) n=521
  C) n=65015
  D) n=102170103
  【2.4】以下程序的输出结果是 。 main( )
  { int x=10, y=10; printf("%d %d\n", x――, ――y);
  }
  A) 10 10
  B) 9 9
  C) 9 10
  D) 10 9
  【2.5】以下程序的输出结果是____。
  main()
  { int n=1;
  printf("%d %d %d\n",n,n++,n--);
  }
  A) 1 1 1
  B) 1 0 1
  C) 1 1 0
  D) 1 2 1
  【2.6】以下程序的输出结果是____。
  main()
  { int x=0x02ff,y=0x0ff00;
  printf("%d\n",(x&y)>>4|0x005f);
  }
  A) 127
  B) 255
  C) 128
  D) 1
  【2.7】以下程序的输出结果是____。
  main()
  { int a=1;
  char c='a';
  float f=2.0;
  printf("%d\n",(!(a==0),f!=0&&c=='A'));
  }
  A) 0
  B) 1
  【2.8】下面程序的输出结果是____。
  main()
  { int a=1,i=a+1;
  do
  { a++ ;
  }while( !~i++ > 3);
  printf("%d\n",a);
  }
  A) 1
  B) 2
  C) 3
  D) 4
  【2.9】下面程序的输出结果是____。
  main()
  { int a=111;
  a=a^00;
  printf("%d,%o\n",a,a);
  }
  A) 111,157
  B) 0,0
  C) 20,24
  D) 7,7
  【2.10】下面程序的输出结果是____。
  main()
  { char s[12]= "a book";
  printf("%.4s",s);
  }
  A) a book!
  B) a book!<四个空格》
  C) a bo
  D) 格式描述错误,输出不确定

  【2.11】下面程序的输出结果是____。
  main()
  { int a,b;
  scanf("-=",&a,&b);
  printf("a=%d b=%d\n",a,b);
  }
  A) a=12 b=34
  B) a=123 b=45
  C) a=12 b=345
  D) 语句右错误
  【2.12】以下程序段的输出结果是 。 int a=10,b=50,c=30;
  if(a>b)
  a=b;
  b=c;
  c=a;
  printf("a=%d b=%d c=%d\n",a,b,c);
  A) a=10 b=50 c=10
  B) a=10 b=30 c=10
  C) a=50 b=30 c=10
  D) a=50 b=30 c=50
  【2.13】以下程序的输出结果是 。 main()
  { int a=0,b=1,c=0,d=20;
  if(a) d=d-10;
  else if(!b)
  if(!c) d=15;
  else d=25;
  printf("d=%d\n",d);
  }
  A) d=10
  B) d=15
  C) d=20
  D) d=25
  【2.14】下面程序的输出结果为 。
  main()
  { int a=1,b=0;
  switch(a)
  { case 1: switch (b)
  { case 0: printf("**0**"); break;
  case 1: printf("**1**"); break;
  }
  case 2: printf("**2**"); break;
  }
  }
  A) **0**
  B) **0****2**
  C) **0****1****2**
  D) 有语法错误
  【2.15】以下程序的输出结果是 。 main()
  { char *s="12134211";
  int v1=0,v2=0,v3=0,v4=0,k;
  for(k=0;s[k];k++)
  switch(s[k])
  { case '1': v1++;
  case '3': v3++;
  case '2': v2++;
  default: v4++;
  }
  printf("v1=%d, v2=%d, v3=%d, v4=%d\n",v1,v2,v3,v4);
  }
  A) v1=4,v2=2,v3=1,v4=1
  B) v1=4,v2=9,v3=3,v4=1
  C) v1=5,v2=8,v3=6,v4=1
  D) v1=4,v2=7,v3=5,v4=8
  【2.16】下面程序的输出是 。
  main()
  { int x=1,y=0,a=0,b=0;
  switch(x)
  { case 1: switch(y)
  { case 0: a++;break;
  case 1: b++;break;
  }
  case 2: a++;b++;break;
  }
  printf("a=%d,b=%d\n",a,b);
  }
  A) a=2,b=1
  B) a=1,b=1
  C) a=1,b=0
  D) a=2,b=2
  【2.17】下面程序的输出是____。
  main()
  { int num=0;
  while(num<=2)
  { num++;
  printf("%d\n",num);
  }
  }
  A) 1 B) 1 C) 1 D) 1
  2 2 2
  3 3
  4
  【2.18】下面程序的输出结果是____。
  main()
  { int a=1,b=0;
  do
  { switch(a)
  { case 1: b=1;break;
  case 2: b=2;break;
  default : b=0;
  }
  b=a+b;
  }while(!b);
  printf("a=%d,b=%d",a,b);
  }
  A) 1,2
  B) 2,1
  C) 1,1
  D) 2,2
  【2.19】从键盘上输入"446755"时,下面程序的输出是____。
  #include
  main()
  { int c;
  while((c=getchar())!='\n')
  switch(c -'2')
  { case 0:
  case 1: putchar(c+4);
  case 2: putchar(c+4);break;
  case 3: putchar(c+3);
  default: putchar(c+2);break;
  }
  printf("\n");
  }
  A) 888988
  B) 668966
  C) 88898787
  D) 66898787
  【2.20】下面程序的输出结果是____。
  main()
  { int k=0;
  char c='A';
  do
  { switch(c++)
  { case 'A': k++;break;
  case 'B': k--;
  case 'C': k+=2;break;
  case 'D': k=k%2;contiue;
  case 'E': k=k+10;break;
  default: k=k/3;
  }
  k++;
  }while(c<'C') ;
  printf("k=%d\n",k);
  }
  A) k=1
  B) k=2
  C) k=3
  D) k=4 [NextPage]   【2.21】下面程序的输出结果是____。
  main()
  { int x,i;
  for(i=1;i<=100;i++)
  { x=i;
  if(++x%2==0)
  if(++x%3==0)
  if(++x%7==0)
  printf("%d ",x);
  }
  }
  A) 39 81
  B) 42 84
  C) 26 68
  D) 28 70
  【2.22】下面程序的输出结果是____。
  #include
  main( )
  { int i,k,a[10],p[3];
  k=5;
  for(i=0;i<10;i++)
  a[i]=i;
  for(i=0;i<3;i++)
  p[i]=a[i*(i+1)];
  for(i=0;i<3;i++)
  k+=p[i]*2;
  printf("%d\n",k);
  }
  A) 20
  B) 21
  C) 22
  D) 23
  【2.23】假定从键盘上输入"3.6,2.4<回车>",下面程序的输出是____。
  #include
  main()
  { float x,y,z;
  scanf("%f,%f",&x,&y);
  z=x/y;
  while(1)
  { if(fabs(z)>1.0)
  { x=y;
  y=z;
  z=x/y;
  }
  else break;
  }
  printf("%f\n",y);
  }
  A) 1.500000
  B) 1.600000
  C) 2.000000
  D) 2.400000
  【2.24】下面程序的输出结果是____。
  main()
  { int i,j,x=0;
  for(i=0;i<2;i++)
  { x++;
  for(j=0;j<-3;j++)
  { if(j%2)
  continue;
  x++;
  }
  x++;
  }
  printf("x=%d\n",x);
  }
  A) x=4
  B) x=8
  C) x=6
  D) x=12
  【2.25】下面程序的输出结果是____。
  main()
  { int i,j,k=10;
  for(i=0;i<2;i++)
  { k++;
  { int k=0;
  for(j=0;j<=3;j++)
  { if(j%2) continue;
  k++;
  }
  }
  k++;
  }
  printf("k=%d\n",k);
  }
  A) k=4
  B) k=8
  C) k=14
  D) k=18
  【2.26】下面程序的输出结果是____。
  #include
  main( )
  { int n[3][3], i, j;
  for(i=0;i<3;i++ )
  for(j=0;j<3;j++ )
  n[i][j]=i+j;
  for(i=0;i<2;i++ )
  for(j=0;j<2;j++ )
  n[i+1][j+1]+=n[i][j];
  printf("%d\n", n[i][j]);
  }
  A) 14
  B) 0
  C) 6
  D) 不确定
  【2.27】下面程序的输出结果是____。
  #include
  main( )
  { int a[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
  int i,j,n;
  n=9;
  i=n/5;
  j=n-i*5-1;
  printf("a[%d][%d]=%d\n", i,j,a[i][j]);
  }
  A) 6
  B) -3
  C) 2
  D) 不确定
  【2.28】下面程序的输出结果是____。
  int m[3][3]={ {1}, {2}, {3} };
  int n[3][3]={ 1, 2, 3 };
  main( )
  { printf("%d\n", m[1][0]+n[0][0] ); /* ① */
  printf("%d\n", m[0][1]+n[1][0] ); /* ② */
  }
  ① A) 0
  B) 1
  C) 2
  D) 3
  ②
  A) 0
  B) 1
  C) 2
  D) 3
  【2.29】下面程序的输出结果是____。
  #include
  main( )
  { char s1[50]={"some string *"},s2[]={"test"};
  printf("%s\n", strcat(s1,s2));
  }
  A) some string *
  B) test
  C) some stritest
  D) some string *test
  【2.30】下面程序的输出结果是____。
  #include
  f(char *s)
  { char *p=s;
  while(*p!='\0')
  p++;
  return(p-s);
  }
  main()
  { printf("%d\n",f("ABCDEF"));
  }
  A) 3
  B) 6
  C) 8
  D) 0  【2.31】下面程序的输出结果是____。
  #include
  #include
  main( )
  { char str[100] ="How do you do";
  strcpy( str + strlen(str)/2, "es she");
  printf("%s\n", str);
  }
  A) How do you do
  B) es she
  C) How are you
  D) How does she
  【2.32】下面程序的输出结果是____。
  #include
  func(int a,int b)
  { int c;
  c=a+b;
  return(c);
  }
  main()
  { int x=6,y=7,z=8,r;
  r=func((x--,y++,x+y),z--);
  printf("%d\n",r);
  }
  A) 11
  B) 20
  C) 21
  D) 31
  【2.33】下面程序的输出结果是____。
  #include
  void fun(int *s)
  { static int j=0;
  do
  { s[j]+=s[j+1];
  }while(++j<2);
  }
  main()
  { int k,a[10]={1,2,3,4,5};
  for(k=1;k<3;k++)
  fun(a);
  for(k=0;k<5;k++)
  printf("%d",a[k]);
  }
  A) 35756
  B) 23445
  C) 35745
  D) 12345
  【2.34】下面程序的输出结果是____。
  #include
  int k=1;
  main( )
  { int i=4;
  fun(i);
  printf ("\n%d,%d",i,k); /* ① */
  }
  fun(int m)
  { m+=k;k+=m;
  { char k='B';
  printf("\n%d",k-'A'); /* ② */
  }
  printf("\n%d,%d",m,k); /* ③ */
  }
  ① A) 4,1 B) 5,6 C) 4,6 D) A,B,C参考答案都不对
  ② A) 1 B) -59 C) -64 D) A,B,C参考答案都不对
  ③ A) 5,66 B) 1,66 C) 5,6 D) A,B,C参考答案都不对
  【2.35】下面程序的输出结果是____。
  #include
  fun(int n, int *s)
  { int f1, f2;
  if(n==1||n==2)
  *s=1;
  else
  { fun(n-1, &f1);
  fun(n-2, &f2);
  *s=f1+f2;
  }
  }
  main()
  { int x;
  fun(6, &x);
  printf("%d\n", x);
  }
  A) 6
  B) 7
  C) 8
  D) 9
  【2.36】下面程序的输出结果是____。
  int w=3;
  main()
  { int w=10;
  printf("%d\n",fun(5)*w);
  }
  fun(int k)
  { if(k==0) return(w);
  return(fun(k-1)*k);
  }
  A) 360
  B) 3600
  C) 1080
  D) 1200
  【2.37】下面程序的输出结果是____。
  #include
  funa(int a)
  { int b=0;
  static int c=3;
  a=c++,b++;
  return(a);
  }
  main()
  { int a=2,i,k;
  for(i=0;i<2;i++)
  k=funa(a++);
  printf("%d\n",k);
  }
  A) 3
  B) 0
  C) 5
  D) 4
  【2.38】下面程序的输出结果是____。
  #include
  void num()
  { extern int x,y;
  int a=15,b=10;
  x=a-b;
  y=a+b;
  }
  int x,y;
  main()
  { int a=7,b=5;
  x=a-b;
  y=a+b;
  num();
  printf("%d,%d\n",x,y);
  }
  A) 12,2
  B) 5,25
  C) 1,12
  D) 输出不确定
  【2.39】下面程序的输出结果是____。
  main()
  { int a=2,i;
  for(i=0;i<3;i++)
  printf("M",f(a));
  }
  f(int a)
  { int b=0;
  static int c=3;
  b++;
  c++;
  return(a+b+c);
  }
  A) 7 7 7
  B) 7 10 13
  C) 7 9 11
  D) 7 8 9
  【2.40】下面程序的输出结果是____。
  #include
  try( )
  { static int x=3;
  x++;
  return(x);
  }
  main( )
  { int i, x;
  for(i=0; i<=2; i++ )
  x=try( );
  printf("%d\n", x);
  }
  A) 3
  B) 4
  C) 5
  D) 6
 [NextPage]   【2.41】下面程序的输出结果是____。
  #include
  main( )
  { int x=1;
  void f1( ), f2( );
  f1( );
  f2(x);
  printf("%d\n", x);
  }
  void f1(void)
  { int x=3;
  printf("%d ", x);
  }
  void f2( x )
  int x;
  { printf("%d ", ++x);
  }
  A) 1 1 1
  B) 2 2 2
  C) 3 3 3
  D) 3 2 1
  【2.42】下面程序的输出结果是____。
  #include
  #define SUB(X,Y) (X)*Y
  main()
  { int a=3,b=4;
  printf("%d\n",SUB(a++,b++));
  }
  A) 12
  B) 15
  C) 16
  D) 20
  【2.43】下面程序的输出结果是____。
  main()
  { int a[]={1,2,3,4,5,6};
  int *p;
  p=a;
  printf("%d ",*p);
  printf("%d ",*(++p));
  printf("%d ",*++p);
  printf("%d ",*(p--));
  p+=3;
  printf("%d %d ",*p,*(a+3));
  }
  A) 1 2 3 3 5 4
  B) 1 2 3 4 5 6
  C) 1 2 2 3 4 5
  D) 1 2 3 4 4 5
  【2.44】下面程序的输出结果是____。
  main()
  { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
  int *p=a;
  p+=6;
  printf("%d ",*p); /* ① */
  printf("%d ",*(*(a+6))); /* ② */
  printf("%d ",*(a[1]+=2)); /* ③ */
  printf("%d",*(&a[0][0]+6));/* ④ */
  }
  A) 7 7 7 7
  B) ②句语法错误
  C) ③句语法错误
  D) ④句语法错误
  【2.45】下面程序的输出结果是____。
  #define FMT "%X\n"
  #include
  main( )
  { static int a[ ][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
  printf( FMT, a[2][2]); /* ① */
  printf( FMT, *(*(a+1)+1) ); /* ② */
  }
  ①
  A) 9
  B) 11
  C) A
  D) B
  ②
  A) 6
  B) 7
  C) 8
  D) 前面三个参考答案均是错误的
  【2.46】下面程序的输出结果是____。
  #include
  main ( )
  { int a[]={1, 2, 3, 4, 5} ;
  int x, y, *p;
  p=&a[0];
  x=*(p+2);
  y=*(p+4);
  printf("%d,%d,%d\n", *p, x, y);
  }
  A) 1,3,5
  B) 1,2,3
  C) 1,2,4
  D) 1,4,5
  【2.47】下面程序的输出结果是____。
  void ive(x,n)
  int x[],n;
  { int t,*p;
  p=x+n-1;
  while(x{ t=*x;
  *x++=*p;
  *p--=t;
  }
  return;
  }
  main()
  { int i,a[]={1,2,3,4,5,6,7,8,9,0};
  ive(a,10);
  for(i=0;i<10;i++)
  printf("%d ",a[i]);
  printf("\n");
  }
  A) 1 2 3 4 5 6 7 8 9 0
  B) 0 9 8 7 6 5 4 3 2 1
  C) 1 3 5 7 9 2 4 6 8 0
  D) 0 8 6 4 2 9 7 5 3 1
  【2.48】下面程序的输出结果是____。
  #include "string.h"
  fun(char *w,int n)
  { char t,*s1,*s2;
  s1=w;s2=w+n-1;
  while(s1{ t=*s1++;
  *s1=*s2--;
  *s2=t;
  }
  }
  main()
  { static char *p="1234567";
  fun(p,strlen(p));
  printf("%s",p);
  }
  A) 7654321
  B) 1717171
  C) 7171717
  D) 1711717
  【2.49】下面程序的输出结果是____。
  #include
  char *p = "abcdefghijklmnopq" ;
  main( )
  { int i=0;
  while( *p++!='e' );
  printf("%c\n", *p);
  }
  A) c
  B) d
  C) e
  D) f
  【2.50】下面程序的输出结果是____。
  #include
  f(int x, int y)
  { return (y-x);
  }
  main( )
  { int a=5, b=6, c;
  int f(), (*g)()=f;
  printf("%d\n", (*g)(a,b) );
  }
  A) 1
  B) 2
  C) 3
  D) 前面三个参考答案均是错误的  【2.51】下面程序的输出结果是____。
  #include
  main( )
  { int a=1,*p,**pp;
  pp=&p;
  p=&a;
  a++;
  printf ("%d,%d,%d\n", a,*p, **pp);
  }
  A) 2,1,1
  B) 2,1,2
  C) 2,2,2
  D) 程序有错误
  【2.52】下面程序的输出结果是____。
  main()
  { char *alpha[7]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX","YZ"};
  char **p;
  int i;
  p=alpha;
  for(i=0;i<4;i++)
  printf("%c",*(p[i]));
  printf("\n");
  }
  A) AEIM
  B) BFJN
  C) ABCD
  D) DHLP
  【2.53】下面程序的输出结果是____。
  #include
  char *pp[2][3]={ "abc", "defgh", "ijkl", "mnopqr", "stuvw", "xyz"};
  main ( )
  { printf("%c\n",***(pp+1)); /* ① */
  printf("%c\n",**pp[0]); /* ② */
  printf("%c\n",(*(*(pp+1)+1))[4]); /* ③ */
  printf("%c\n",*(pp[1][2]+2)); /* ④ */
  printf("%s\n",**(pp+1)); /* ⑤ */
  }
  ① A) a B) d C) i D) m
  ② A) a B) d C) i D) m
  ③ A) h B) l C) q D) w
  ④ A) k B) o C) u D) z
  ⑤ A) ijkl B) mnopqr C) stuvw D) xyz
  【2.54】下面程序的输出结果是____。
  #include "stdio.h"
  struct str1
  { char c[5];
  char *s;
  };
  main( )
  { struct str1 s1[2]={ {"ABCD""EFGH"},{"IJK","LMN"} };
  struct str2
  { struct str1 sr;
  int d;
  }s2={"OPQ","RST",32767};
  struct str1 *p[2];
  p[0]=&s1[0];
  p[1]=&s1[1];
  printf("%s",++p[1]->s); /* ① */
  printf("%c",s2.sr.c[2]); /* ② */
  }
  ①
  A) LMN
  B) MN
  C) N
  D) IJK
  ②
  A) O
  B) P
  C) Q
  D) R
  【2.55】以下程序的输出结果是____。
  struct st
  { int x,*y;
  }*p;
  int s[]={10,20,30,40};
  struct st a[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};
  main()
  { p=a;
  printf("%d\n",++(*(++p)->y));
  }
  A) 10
  B) 11
  C) 20
  D) 21
  【2.56】以下程序的输出结果是____。
  #include
  main()
  { union EXAMPLE
  { struct
  { int x,y;
  }in;
  int a,b;
  }e;
  e.a=1;e.b=2;
  e.in.x=e.a*e.b;
  e.in.y=e.a+e.b;
  printf("%d,%d\n",e.in.x,e.in.y);
  }
  A) 2,3
  B) 4,4
  C) 4,8
  D) 8,8
  【2.57】下面程序的输出结果是____。
  #include
  main()
  { union
  { int i[2];
  long k;
  char c[4];
  }r,*s=&r;
  s->i[0]=0x39;
  s->i[1]=0x38;
  printf("%c\n",s->c[0]);
  }
  A) 39
  B) 9
  C) 38
  D) 8
  【2.58】下面程序的输出是_____。
  main ( )
  { printf("%d\n", EOF);
  }
  A) -1
  B) 0
  C) 1
  D) 程序是错误的 [NextPage]   【参考答案】
  【2.1】参考答案:D
  注释:程序中除法运算的两个操作数均是整型,运算结果也是整型。
  【2.2】参考答案:B
  注释:C语言允许在程序块(分程序)中说明变量。
  【2.3】参考答案:C
  注释:变量i中的负号传送给变量n后,因n是无符号数,已不作为负号处理。
  【2.4】参考答案:D
  注释:对变量x的――操作是后缀形式,变量x的减1操作要在执行完 printf函数之后才进行,所以变量x的值在输出的时候仍然保持原值10。
  【2.5】参考答案:B
  注释:C语言在执行printf()时,对函数中的表达式表列的处理顺序是从后向前,即先处理n- -,再处理n++,最后处理n,而且每一个表达式作为一个处理单元,也就是说在不同的表达式中自增自减运算是单独考虑的。
  【2.6】参考答案:A
  注释:变量x和变量y做按位与,结果为0x0200,右移4位为0x0020,再与0x005f做按位或,最后结果为0x007f。
  【2.7】参考答案:A
  注释:逗号表达式的结果是用逗号分开的最后一个表达式的值,此题由于 c=='A'的值是0,所以逗号表达式的值为0。
  【2.8】参考答案: B
  【2.9】参考答案: A
  【2.10】参考答案: C
  注释:在输出格式描述"%m.ns"中,m是输出总长度,n是实际字符的个数,这里m没有给出,则输出总长度就是实际输出字符的个数。
  【2.11】参考答案: C
  【2.12】参考答案:B
  【2.13】参考答案:C
  【2.14】参考答案:B
  【2.15】参考答案:D
  【2.16】参考答案:A
  【2.17】参考答案: C
  【2.18】参考答案:A
  【2.19】参考答案: C
  注释:在switch语句中,case本身仅起到语句标号的作用,不会改变语句的流程,执行break语句才能退出当前的switch语句。
  【2.20】参考答案: D
  注释:siwtch语句的表达式中,变量c是后缀的增一运算,第一次执行do-while循环时,执行case 'A'后面的语句。
  【2.21】参考答案: D
  【2.22】参考答案: B
  【2.23】参考答案: B
  注释:fabs()是浮点数绝对值函数。
  【2.24】参考答案: A
  【2.25】参考答案: C
  注释:C语言允许在程序块(分程序)内说明变量,如果在程序块内说明的变量和程序块外的变量同名,在块外说明的变量在块内是不可见的。可将此题和【2.11】进行比较,加深理解。
  【2.26】参考答案: C
  【2.27】参考答案: B
  【2.28】参考答案: ① D ② A
  【2.29】参考答案:D
  【2.30】参考答案: B
  注释:输出结果为字符串长度。
  【2.31】参考答案: D
  注释:字符串拷贝函数strcpy()要求的两个参数都是字符串首地址。本题中第二个参数是字符串常量,接受这个字符串的第一个参量不是直接给出字符数组名,而是进行了地址运算后的结果。由于str字符串的长度是13,除2取整后是6,第一个参数给出的地址是字符数组str的首地址加6,也就是原来字符串中第二个空格的位置,把"es she"从该处放入,字符串str变为"How does she"。
  【2.32】参考答案: C
  注释:main函数调用func函数时,第一个实参使用的是逗号表达式的值,也就是x+y的结果。由于对变量x、y、z进行的是后缀运算,所以函数func的参数值是13和8。
  【2.33】参考答案: C
  【2.34】参考答案: ① C ② A ③ C
  【2.35】参考答案: C
  【2.36】参考答案: B
  注释:函数fun进行了递归调用,实际进行的运算是5×4×3×2×1×3×10。主函数内说明的局部变量w屏蔽了外部变量w,所以在主函数中外部变量w是不可见的,在调用printf函数时表达式"fun(5)*w"中w的值是10。
  【2.37】参考答案: D
  注释:main函数三次调用了函数funa,在funa函数中的静态变量c仅在第一次调用时进行了初始化,再次调用时不再对静态变量赋初值。
  【2.38】参考答案: B
  注释:main函数和num函数中都说明了变量a和b,由于它们是内部变量,所以它们分别在说明它们的函数内有效。外部变量x和y在函数num之后被说明,而在num函数中又要引用它们,所以在num函数中用关键字"extern"说明变量x和y是一个外部变量,也就是通知计算机这两个变量在fun函数以外被说明,此处不是定义两个int型变量。
  【2.39】参考答案: D
  注释:函数f中的变量c是静态变量,仅在第一次调用函数f时它被初始化为3,第二次调用函数f时c的值是4,第三次调用函数f时c的值是5。
  【2.40】参考答案: D
  【2.41】参考答案: D
  注释:程序中有三个"x"分别在三个不同的函数中,这三个"x"都是自动变量,所以三个"x"分别局部于三不同的函数,在三个函数中对"x"的操作互不影响。
  【2.42】参考答案: A
  【2.43】参考答案: A
  注释:*(++p)和*++p都是指针变量值前加1,第一次指向a[1],第二次指向a[2];a+3是a[3]的地址。
  【2.44】参考答案: C
  注释:②句没有语法错误,但是a+6指向数组之外,因为a是a[0]的地址,a+1是a[1]的地址,a+2是a[2]的地址,显然数组a没有a[6]分量。③句错误,因为a[1]是地址常量,它是a[1][0]的地址,对于地址常量是不可以进行赋值运算的。
  【2.45】参考答案: ① D ② A
  注释:如果FMT定义为"%x\n",则输出的16进制数据用小写字母表示。
  【2.46】参考答案: A
  注释:语句"p=&a[0]"表示将数组a中元素a[0]的地址赋给指针变量p,则p就是指向数组首元素a[0]的指针变量,"&a[0]"是取数组首元素的地址。对于指向数组首址的指针,p+i(或a+i)是数组元素a[i]的地址,*(p+i)(或*(a+i))就是a[i]的值。
  【2.47】参考答案: B
  【2.48】参考答案: D
  【2.49】参考答案: D
  【2.50】参考答案: A
  注释:变量g是指向函数的指针,(*g)(a,b)是调用指针g所指向的函数。
  【2.51】参考答案: C
  注释:p是指针,pp是指向指针的指针。
  【2.52】参考答案: A
  注释:对于指向数组的指针变量可以做下标运算,p[i]和alpha[i]都是指向字符串的首地址,*p[i]取出字符串的第一个字符。
  【2.53】参考答案: ① D ② A ③ D ④ D ⑤ B
  注释:pp是一个二维指针数组,pp+1指向数组的第二维,*(pp+1)是第二维的起始地址,**(pp+1)是第二维第一个元素的地址,***(pp+1)是第二维第一个元素的内容,所以,①的参考答案应选D。*(pp+1)+1是第二维第二个元素的地址,*(*(pp+1)+1)是第二维第二个元素,(*(*(pp+1)+1))[4]则是第二维第二个元素所指字符串下标为4的元素,即是字符w,故③应当选D。
  【2.54】参考答案: ① B ② C
  【2.55】参考答案:D
  【2.56】参考答案:C
  注释:联合体成员的取值是最后一次给成员赋的值。
  【2.57】参考答案: B
  注释:整型数组i和字符数组c共用存储空间,给i赋值也等于给c赋值,所以s->c[0]=0x39,所以输出9。
  【2.58】参考答案:A
  注释:基本概念。EOF是由C语言在头文件stdio.h中定义的,用户可以直接使用。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved