全国计算机等级考试二级C语言之字符串

出处:ExamLink.com收集整理 作者:唐易龙 日期:2007年03月20日 11时09分
 一、选择题

  (1)若有语句:char *line[5];,以下叙述中正确的是

  A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量

  B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

  C)定义line是一个指针数组,语句中的*号称为间址运算符

  D)定义line是一个指向字符型函数的指针

  (2)有以下程序

以下是引用片段:
  #include 
  main()
  { char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};
  printf("%d %d\n", strlen(p), strlen(q));
  }

  以下叙述中正确的是

  A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

  B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

  C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

  D)由于p和q数组中都没有字符串结束符,故长度都不能确定

  (3)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序

以下是引用片段:
  #include 
  void f(char *p[], int n)
  { char *t; int i,j;
  for(i=0; i 
  for(j=i+1; j 
  if(strcmp(p[i],p[j])>0){ t=p[i]; p[i]=p[j]; p[j]=t; }
  }
  main()
  { char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
  f(p, 5);
  printf("%d\n", strlen(p[1]));
  }

  程序运行后的输出结果是

  A)2

  B)3

  C)6

  D)4

  (4)有定义语句:int b;char c[10]; ,则正确的输入语句是

  A)scanf("%d%s",&b,&c);

  B)scanf("%d%s",&b,c);

  C)scanf("%d%s",b,c);

  D)scanf("%d%s",b,&c);

  (5)以下能正确定义一维数组的选项是

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

  B)char a[]={0,1,2,3,4,5};

  C)char a={'A','B','C'};

  D)int a[5]="0123";

(6)已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是

  A)数组a和b的长度相同

  B)a数组长度小于b数组长度

  C)a数组长度大于b数组长度

  D)上述说法都不对

  (7)以下语句或语句组中,能正确进行字符串赋值的是

  A)char *sp; *sp="right!";

  B)char s[10]; s="right!";

  C)char s[10]; *s="right!";

  D)char *sp="right!";

  (8)有以下程序

以下是引用片段:
  main()
  {
  char s[]="159",*p;
  p=s;
  printf("%c",*p++);
  printf("%c",*p++);
  }

  程序运行后的输出结果是

  A)15

  B)16

  C)12

  D)59

  (9)有以下函数

以下是引用片段:
  fun(char *a,char *b)
  {
  while((*a!='\0')&&(*b!='\0')&&(*a==*b))
  { a++; b++;}
  return (*a-*b);
  }

  该函数的功能是

  A)计算a和b所指字符串的长度之差

  B)将b所指字符串复制到a所指字符串中

  C)将b所指字符串连接到a所指字符串后面

  D)比较a和b所指字符串的大小

  (10)有以下程序

以下是引用片段:
  point(char *p)
  {
  p+=3;
  }
  main()
  { char b[4]={'a','b','c','d'},*p=b;
  point(p); printf("%c\n",*p);
  }

  程序运行后的输出结果是

  A)a

  B)b

  C)c

  D)d

(11) s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是

  A) if(s1>s2)S;

  B) if(strcmp(s1,s2))S;

  C) if(strcmp(s2,s1)>0) S;

  D) if(strcmp(s1,s2)>0)S;

  (12) 有以下程序

以下是引用片段:
  main()
  {char str[][10]={"China","Beijing"},*p=str;
  printf("%s\n",p+10);
  }

  程序运行后的输出结果是

  A) China

  B) Bejing

  C) ng

  D) ing

  (13) 有以下程序

以下是引用片段:
  main()
  {char s[]="ABCD",*p;
  for(p=s+1;p 
  }

  程序运行后的输出结果是

  A) ABCD B) A C) B D) BCD

  BCD B C CD

  CD C D D

  D D

  (14) 有以下程序

以下是引用片段:
  main()
  { char s[]"Yes\n/No",*ps=s;
  puts(ps+4);
  *(ps+4)=0;
  puts(s);
  }

  程序运行后的输出结果是(选项D中的第一行是空行)

  A) n/No   B) /No   C) n/NO   D)

  Yes Yes Yes /No

  /No /No    Yes

  (15) 有以下定义

  #include

  char a[10],*b=a;

  不能给数组a输入字符串的语句是

  A) gets(A)

  B) gets(a[0])

  C) gets(&a[0]);

  D) gets(B) ;

最后更新时间:2008-07-23 12:04:18
文章评论
共有 0 位网友发表了评论
用户名: 新注册) 密码: 匿名评论 [查看所有评论]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。

考试全流程