当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机等级二级C语言章节习题及答案(9)
发布时间:2010/11/7 23:38:17 来源:城市学习网 编辑:ziteng
  第10章 指针
  同步练习一
  一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)
  10.1 若有下面的程序段:
  char s[]="china";char *p; p=s;
  则下列叙述正确的是
  A)s和p完全相同落千丈
  B)数组s中的内容和指针变量p中的内容相等
  C)s数组长度和p所指向的字符串长度相等
  D)*p与s[0]相等
  考生答案: 正确答案: D
  10.2 若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是
  A)a,point,*&a
  B)&*a,&a,*point
  C)*&point,*point,&a
  D)&a,&*point,point
  考生答案: 正确答案: D
  10.3 下列程序执行后的输出结果是
  void func(int *a,int b[])
  { b[0]=*a+6; }
  main()
  { int a,b[5];
  a=0; b[0]=3;
  func(&a,b); printf("%d\n",b[0]);
  }
  A)6
  B)7
  C)8
  D)9
  考生答案: 正确答案: A
  10.4 已定义以下函数
  fun(char *p2, char *p1)
  { while((*p2=*p1)!=’\0’){p1++;p2++;}
  }
  函数的功能是
  A)将p1所指字符串复制到p2所指内存空间
  B)将p1所指字符串的地址赋给指针p2
  C)对p1和p2两个指针所指字符串进行比较
  D)检查p1和p2两个指针所指字符串中是否有’\0’
  考生答案: 正确答案: A
  10.5 有以下程序
  void ss(char *s,char t)
  { while(*s)
  { if(*s= =t)*s=t-’a’+’A’;
  s++;
  }
  }
  main()
  { char str1[100]="abcddfefdbd",c=’d’;
  ss(str1,c);
  printf("%s\n",str1);
  }
  程序运行后的输出结果是
  A)ABCDDEFEDBD
  B)abcDDfefDbD
  C)abcAAfefAbA
  D)Abcddfefdbd
  考生答案: 正确答案: B
  10.6 下面说明不正确的是
  A)char a[10]="china";
  B)char a[10],*p=a;p="china"
  C)char *a;a="china";
  D)char a[10],*p;p=a="china"
  考生答案: 正确答案: D
  10.7 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
  A)p=1;
  B)*q=2;
  C)q=p;
  D)*p=5;
  考生答案: 正确答案: D
  10.8 执行以下程序后,a,b的值分别为
  main()
  { int a,b,k=4,m=6,*p1=&k,*p2=&m;
  a=p1==&m;
  b=(*p1)/(*p2)+7;
  printf("a=%d\n",a);
  printf("b=%d\n",b);
  }
  A)-1,5
  B)1,6
  C)0,7
  D)4,10
  考生答案: 正确答案: C
  10.9 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
  PROG ABCDEFGH IJKL<回车>,则输出结果为
  main( int argc, char *argv[])
  { while(--argc>0)
  printf("%s",argv[argc]);
  printf("\n");
  }
  A)ABCDEFG
  B)IJHL
  C)ABCDEFGHIJKL
  D)IJKLABCDEFGH
  考生答案: 正确答案: D
  10.10 以下程序有错,错误原因是
  main()
  { int *p,i;char *q,ch;
  p=&i;
  q=&ch;
  *p=40;
  *p=*q;
  ......
  }
  A)p和q的类型不一致,不能执行*p=*q;语句
  B)*p中存放的是地址值,因此不能执行*p=40;语句
  C)q没有指向具体的存储单元,所以*q没有实际意义
  D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
  考生答案: 正确答案: D [NextPage]   10.11 下面程序段的运行结果是
  char a[]="lanuage",*p;
  p=a;
  while(*p!=′u′){printf("%c",*p-32);p++;}
  A)LANGUAGE
  B)language
  C)LAN
  D)langUAGE
  考生答案: 正确答案: C
  10.12 有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)
  int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
  A)a[p-a]
  B)*(&a[i])
  C)p[i]
  D)*(*(a+i))
  考生答案: 正确答案: D
  10.13 函数fun的返回值是
  fun(char *a,char *b)
  { int num=0,n=0;
  while(*(a+num)!=′\0′) num++;
  while(b[n]) { *(a+num)=b[n]; num++;n++; }
  return num;
  }
  A)字符串a的长度
  B)字符串b的长度
  C)字符串a和b的长度之差
  D)字符串a 和b的长度之和
  考生答案: 正确答案: D
  10.14 下列程序的输出结果是
  main()
  { int a[5]={2,4,6,8,10},*p,**k;
  p=a;
  k=&p;
  printf("%d",*(p++));
  printf("%d\n",**k);
  }
  A)4
  B)22
  C)24
  D)46
  考生答案: 正确答案: C
  10.15 下面判断正确的是
  A)char *a="china";等价于 char *a;*a="china";
  B)char str[5]={"china"};等价于char str[]={"china"};
  C)char *s="china";等价于 char *s;s="china";
  D)char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";
  考生答案: 正确答案: C
  10.16 以下定义中,标识符prt int(*prt)[3]
  A)定义不含法
  B)是一个指针数组名,每个元素都是一个指向整数变量的指针
  C)是一个指针,它指向一个具有三个元素的一维数组
  D)是一个指向整型变量的指针
  考生答案: 正确答案: D
  10.17 有如下说明
  int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
  则数值为9的表达式是
  A)*p+9
  B)*(p+8)
  C)*p+=9
  D)p+8
  考生答案: 正确答案: B
  10.18 若有定义: char *st= "how are you "; 下列程序段中正确的是
  A)char a[11], *p; strcpy(p=a+1,&st[4]);
  B)char a[11]; strcpy(++a, st);
  C)char a[11]; strcpy(a, st);
  D)char a[], *p; strcpy(p=&a[1],st+2);
  考生答案: 正确答案: A
  10.19 下列程序的运行结果是
  void fun(int *a, int *b)
  { int *k;
  k=a; a=b; b=k;
  }
  main()
  { int a=3, b=6, *x=&a, *y=&b;
  fun(x,y);
  printf("%d %d", a, b);
  }
  A)6 3
  B)3 6
  C)编译出错
  D)0 0
  考生答案: 正确答案: B
 [NextPage]    10.20 若有说明语句
  char a[]="It is mine";
  char *p="It is mine";
  则以下不正确的叙述是
  A)a+1表示的是字符t的地址
  B)p指向另外的字符串时,字符串的长度不受限制
  C)p变量中存放的地址值可以改变
  D)a中只能存放10个字符
  考生答案: 正确答案: D
  10.21 以下程序的运行结果是
  sub(int x,int y,int *z)
  { *z=y-x; }
  main()
  { int a,b,c;
  sub(10,5,&a);
  sub(7,a,&b);
  sub(a,b,&c);
  printf("M,M,M\n",a,b,c);
  }
  A)5,2,3
  B)-5,-12,-7
  C)-5,-12,-17
  D)5,-2,-7
  考生答案: 正确答案: B
  10.22 若有下面的程序片段:
  int[12]={0},*p[3],**pp,i;
  for(i=0;i<3;i)
  p[i]=&a[i*4];
  pp=p;
  则对数组元素的错误引用是
  A)pp[0][1]
  B)a[10]
  C)p[3][1]
  D)*(*(p+2)+2)
  考生答案: 正确答案: C
  10.23 下面程序的输出结果是
  #include
  #include
  main()
  { char *p1="abc",*p2="ABC",str[50]= "xyz";
  strcpy(str+2,strcat(p1,p2));
  printf("%s\n",str);
  }
  A)xyzabcABC
  B)zabcABC
  C)xyabcABC
  D)yzabcABC
  考生答案: 正确答案: C
  10.24 有如下程序
  main()
  { char ch[2][5]={"6937","8254"},*p[2];
  int i,j,s=0;
  for(i=0;i<2;i++)
  p[i]=ch[i];
  for(i=0;i<2;i++)
  for(j=0;p[i][j]>′\0′;j+=2)
  s=10*s+p[i][j]-′0′;
  printf("%d\n",s);
  }
  该程序的输出结果是
  A)69825
  B)63825
  C)6385
  D)693825
  考生答案: 正确答案: C
  10.25 阅读下面程序,则执行后的结果为
  #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;iif(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
  考生答案: 正确答案: B
[NextPage]   二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)
  10.26 函数 void fun(float *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。
  void fun( float *sn, int n)
  { float s=0.0, w, f=-1.0;
  int i=0;
  for(i=0; i<=n; i++)
  { f=【1】* f;
  w=f/(2*i+1);
  s+=w;
  }
  【2】=s;
  }
  考生答案: 正确答案: -1 正确答案: *sn
  10.27 该程序运行的结果是【3】。
  #include
  #include
  #define M 100
  void fun(int m, int *a, int *n)
  { int i,j=0;
  for(i=1;i<=m;i++)
  if(i%7==0||i==0)
  a[j++]=i;
  *n=j;
  }
  main()
  { int aa[M],n,k;
  clrscr();
  fun(10,aa,&n);
  for(k=0;kif((k+1) ==0)
  printf("\n");
  else printf("M",aa[k]);
  printf("\n");
  }
  考生答案: 正确答案: 7
  10.28 下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
  例如,若输入字符串123412132,输入字符1,则输出3,请填空。
  #include
  #include
  #define M 81
  int fun(char *ss, char c)
  { int i=0;
  for(; 【4】;ss++)
  if(*ss==c) i++;
  return i;
  }
  main()
  { char a[M], ch;
  clrscr();
  printf("\nPlease enter a string: "); gets(a);
  printf("\nPlease enter a char: "); ch=getchar();
  printf("\nThe number of the char is: %d\n", fun(a,ch));
  }
  考生答案: 正确答案: *ss!= ’\0’
  10.29 若给fun函数的形参s传送字符串:“]]6354abcc” (其中]表示空格字符),则函数的返回值是【5】。
  #include
  long fun(char s[])
  { long n;int sign;
  for(;isspace(*s);s++);
  sign=(*s==′-′)?-1:1;
  if(*s==′+′||*s==′-′) s++;
  for(n=0;isdigit(*s);s++) n=10*n+(*s-′0′);
  return sign*n;
  }
  考生答案: 正确答案: 6354
  10.30 下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
  #include
  main ()
  { int i; char s[21],*p;
  for (i=0;i<20;i++)
  s[i]=getchar ();
  s[i]=【6】;
  p =【7】
  while (*p) putchar (【8】);
  }
  正确答案: ’\0’ 正确答案: s 正确答案: *p++
  10.31 以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
  例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
  请按题意,完成填空。
  试题程序:
  #include
  #include
  void fun (int x, int pp[], int *n)
  { int i,j=0;
  【9】
  if(x%i==0) pp[j++]=i;
  【10】;
  }
  main ()
  { int x,aa[1000], n, i ;
  clrscr();
  printf("\nPlease enter an integer number : \n ");
  scanf ("%d ", &x);
  fun (x, aa, &n);
  for (i=0 ; iprintf ("%d ", aa [i]);
  printf ("\n ");
  }
  正确答案: for(i=1;i
  10.32 mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
  int mystrlen(char *str)
  { int i;
  for(i=0;【11】!= ′\0′;i++);
  return(i);
  }
  考生答案: 正确答案: *(str+i) 或 str[i]
  10.33 下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。
  #include
  #include
  void fun(int a[],int n, int *max, int *d)
  { int i;
  *max=a[0];
  *d=0;
  for(i=0;【12】;i++)
  if(*max<【13】)
  { *max=a[i];*d=i; }
  }
  main()
  { int i, x[20], max, index, n=10;
  randomize();
  for(i=0;i{ x[i]=rand()P; printf("M",x[i]);
  }
  printf("\n");
  fun(x,n,&max,&index);
  printf("Max=],Index=M\n",max,index);
  }
  考生答案: 正确答案: i
  10.34 阅读以下程序,使程序输出结果为30,4.000 000,请填空。
  #include "stdio.h"
  main()
  { int a=30,b=40,c;
  double 【14】 ,s;
  s=fun(&a,&b,&c);
  printf("%d,%lf\n",c,s);}
  double fun(int *a,int *b, 【15】 )
  { *c=*a%*b;
  return(4.0);
  }
  正确答案: fun(int *,int *,int *) 正确答案: int *c
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved