考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
全国  |             |          |          |          |          |         
  当前位置:计算机等级 > 二级考试 > C语言程序设计 > C语言模拟试题 > 文章内容
  

全国计算机等级考试C语言程序设计章节练习题及答案(15)

中华IT学院   【 】  [ 2017年2月2日 ]
  4.3 填空题

  1.单目运算符&作用在变量名左边,表示该变量的地址值 ,单目运算符*作用在指针名的左边,表示取该变量的值 。

  2.指向一维数组元素的指针是一 级指针,指向二维数组元素的指针是一 级指针,指向一维数组的指针是二 级指针,指向一级指针的指针是二 级指针,一维一级指针数组名是二 级指针的地址值,二维数组的数组名是 二级指针的地址值。

  3.在一个二维数组b[3][5]中,b[0]与 *b 是等价的,&b[1]与 b+1 是等价的。

  4.指针的运算有4种,它们是赋值 运算、一个指针加减整型数的运算、两个指针相减和比较 运算。

  5.引用不是变量,它是某个变量或对象的别名 。引用的值是被引用的变量的值 ,引用的地址值是 被引用的变量的地址值。

  4.4 分析下列程序的输出结果

  1.

  #include

  void main()

  {

  int a[]={5,4,3,2,1};

  int *p=&a[2];

  int m(5),n;

  for(int i(2);i>=0;i--)

  {

  n=(*(p+i)<*a)?*(p+i):*a;

  cout<

  }

  }

  答: 1

  2

  3

  2.

  #include

  void main()

  {

  char *p1,*p2;

  p1="abcqrv";

  p2="abcpqo";

  while(*p1&&*p2&&*p2++==*p1++)

  ;

  int n=*(p1-1)-*(p2-1);

  cout<

  }

  25

  答: 1

  3.

  #include

  int a[]={10,9,6,5,4,2,1};

  void main()

  {

  int n(7),i(7),x(7);

  while(x>*(a+i))

  {

  *(a+i+1)=*(a+i);

  i--;

  }

  *(a+i+1)=x;

  for(i=0;i

  cout<<*(a+i)<<',';

  cout<

  }

  答: 10,9,7,6,5,4,2,1

  4.

  #include

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

  int *p[]={a[0],a[1],a[2]};

  int **pp=p;

  void main()

  {

  int (*s)[3]=a;

  for(int i(1);i<3;i++)

  for(int j(0);j<2;j++)

  cout<<*(a[i]+j)<<','<<*(*(p+i)+j)<<','

  <<(*(pp+i))[j]<<','<<*(*s+3*i+j)<

  }

  答: 4,4,4,4

  5,5,5,5

  7,7,7,7

  8,8,8,8

  5.

  #include

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

  void main()

  {

  int *pa=a;

  cout<<*pa<<',';

  cout<<*(pa++)<<',';

  26

  cout<<*++pa<<',';

  cout<<*(pa--)<<',';

  pa+=4;

  cout<<*pa<<','<<*(pa+2)<

  }

  答: 1,1,3,3,6,8

  6.

  #include

  void main()

  {

  char str[][4]={"345","789"},*m[2];

  int s(0);

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

  m[i]=str[i];

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

  for(int j(0);j<4;j+=2)

  s+=m[i][j]-'0';

  cout<

  }

  答: 24

  7.

  #include

  void main()

  {

  double d1=3.2,d2=5.2;

  double &rd1=d1,&rd2=d2;

  cout<

  rd1=9.3;

  cout<

  d2=0.8;

  cout<<2*rd2<

  }

  答: 8.4,8.4

  14.5,14.5

  1.6

  8.

  #include

  void main()

  {

  int *p;

  int *&rp=p;

  27

  int a=90;

  p=&a;

  cout<<"a="<

  28

  cin>>s;

  inverse(s);

  cout<<"反序后的字符串是 "<

  }

  void inverse(char p[])

  {

  int n=strlen(p);

  int limit=n/2;

  for(int i=0;i

  {

  char t=p[i];

  p[i]=p[n-i-1];

  p[n-i-1]=t;

  }

  }

  .

  已知一个二维int型数组,编程求出它的最小的元素值。

  答:编程如下:

  #include

  void main()

  {

  int n[3][2]={{3,8},{-5,9},{2,4}};

  int lim=n[0][0];

  for(int i=0;i<3;i++)

  for(int j=0;j<2;j++)

  if(n[i][j]

  lim=n[i][j];

  cout<<"最小元素值为 "<

  }

  .

  已知字符型指针数组中存放若干个字符串,编程从键盘上修改其中某个字符串。

  答:编程如下:

  #include

  #include

  char *str[5]={"abc","def","ghi","jkl","pqo"};

  char *modify(int,char []);

  void main()

  {

  int n;

  char s[10];

  cout<<"修改第几个字符串:";

  cin>>n;

  cout<<"该字符串修改为:";

  cin>>s;

  29

  cout<<"修改后的字符串是 "<

  cout<<"修改后字符指针数组中的字符串如下:\n";

  for(int i=0;i<5;i++)

  cout<

  }

  char *modify(int n,char s[])

  {

  return *(str+n-1)=s;

  }

  .

  有n个小孩排成一圈。从第1个小孩开始作1至3报数,凡报数为3的小孩从圈中出来,求最后出圈的小孩的顺序号是多少?

  答:编程如下:

  #include

  void main()

  {

  int n,num[100];

  cout<<"输入排号人数:";

  cin>>n;

  int *p=num;

  for(int i=0;i

  *(p+i)=i+1;

  i=0;

  int k=0,a=0;

  while(a

  {

  if(*(p+i)!=0)

  k++;

  if(k==3)

  {

  *(p+i)=0;

  k=0;

  a++;

  }

  i++;

  if(i==n)

  i=0;

  }

  while(*p==0)

  p++;

  cout<<"最后留下的是第 "<<*p<<" 号"<

  }

分享到:
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2006-2017 中华考试网(Examw.com) All Rights Reserved  营业执照