第十一部分 :字符串
一、选择题(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; i0){ 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","Beiji