一、单选题1、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。
A.p2=c;B.c=*p1+*p2;C.p1=p2;D.c=*p1*(*p2);正确答案:A2、下面判断正确的是()。
A.char *a="china"; 等价于 char *a; *a="china" ;B.char str[10]={"china"}; 等价于 char str[10]; str[]={"china";}C.char c[4]="abc",d[4]="abc"; 等价于 char c[4]=d[4]="abc" ;D.char *s="china"; 等价于 char *s; s="china" ;正确答案:D3、下面能正确给字符串s赋值的是()。
A.char s[6]="ABCDE";B.char s[6] ; s="ABCDE";C.char s[5]={'A','B','C','D','E'} ;D.char *s; scanf("%s",s);正确答案:A4、若有程序段char s[]="china"; char *p ; p=s ;以下叙述中正确的是()。
A.s和p完全相同B.s数组长度和p所指向的字符串长度相等C.*p与s[0]相等D.数组s中的内容和指针变量p中的内容相等正确答案:C5、若有定义char a[]="Itismine", *p="Itismine";以下叙述中错误的是()。
A.a数组所占字节数为9B.p不能再指向别的字符串常量C.p变量中存放的地址值可以改变D.a+1表示的是字符't'的地址正确答案:C6、若有定义char s[6],*ps=s;则正确的赋值语句是()。
A. s="12345";B.*ps="12345";C.ps="12345";D.*s="12345";正确答案:C7、若有定义char *cc[2]={"1234","5678"};以下叙述中正确的是()。
数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址是指针变量,它指向含有两个数组元素的一维字符数组数组的两个元素中各自存放了字符串"1234"和"5678"的首地址数组元素的值分别是"1234"和"5678"正确答案:C8、下面程序段中,for循环的执行次数是()。
char *s="\ta\018bc" ;for ( ; *s!='\0' ; s++) printf("*");A.5B.6C.7D.9正确答案:B9、下面程序段执行后的输出结果是()。
char *s="abcde" ;s+=2;printf("%d",s);A.不确定B.字符'c'C.cdeD.字符'c'的地址正确答案:D10、下面程序段执行后的输出结果是()。
char a[]="language",*p;p=a ;while (*p!='u') { printf("%c",*p-32); p++ ;}ngUAGENGnguageNGUAGE正确答案:B11、下面程序执行后的输出结果是()。
#include <stdio.h>char cchar(char ch){if(ch>='A' && ch<='Z') ch=ch-'A'+'a';return ch;}int main(){ char s[]="ABC+abc=defDEF",*p=s;while(*p) {*p=cchar(*p);p++;}printf("%s",s);return 0;}A.abcaABCDEFdefB.abc+ABC=DEFdefC.abc+abc=defdefD.abcabcdefdef正确答案:C12、下面程序执行后的输出结果是()。
#include <stdio.h>int main(){ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);return 0;}A.3B.编译错误C.5D.a[4]的地址正确答案:C13、下面程序执行后的输出结果是()。
#include <stdio.h>int main(){ char s[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);return 0;}A./NoYes/NoB./NoYes/NoC./NoYesD.n/NoYes/No正确答案:C14、下面程序执行后的输出结果是()。
#include <stdio.h>int main(){ char str[][10]={"GreatWall","Beijing"},*p=str[0];printf("%s",p+13);return 0;}A.ingB.jingC.BeijingD.GreatWall正确答案:B15、若有定义char *st="how are you";下列程序段中正确的是()。
A.char a[],*p; strcpy(p=&a[1],st+2);B.char a[11],*p; strcpy(p=a+1,&st[4]);C.char a[11]; strcpy(a, st);D.char a[11]; strcpy(++a, st);正确答案:B16、下面程序执行后的输出结果是()。
#include <stdio.h>#include <string.h>int main(){ char str[][20]={"Hello","Beijing"},*p=str[0];printf("%d",strlen(p+20));return 0;}A.0B.5C.7D.20正确答案:C17、若有定义char a[10],*b=a;不能给数组a输入字符串的语句是()。
A.gets(&a[0]);B.gets(a);C.gets(b);D.gets(a[0]);正确答案:D18、下面程序执行后的输出结果是()。
#include <stdio.h>#include <string.h>void fun(char *s,int p,int k){ int i;for(i=p;i<k;i++) *(s+i)=s[i+2];}int main(){char s[]="abcdefg";fun(s,3,strlen(s)); puts(s);return 0;}A.defgB.abcfgC.abcD.abcdefg正确答案:B19、s1和s2已正确定义并分别指向两个字符串。
若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()。
A.if(strcmp(s1,s2)>0) S;B.if(s1>s2) S;C.if(strcmp(s2,s1)>0) S;D.if(strcmp(s1,s2)) S;正确答案:A20、以下与库函数strcpy(char *p1,char *p2)功能不相等的程序段是()。
A.void strcpy2(char *p1,char *p2){ while ((*p1=*p2)!='\0') { p1++; p2++; } }B.void strcpy4(char *p1,char *p2){ while (*p2) *p1++=*p2++ ; }C.void strcpy1(char *p1,char *p2){ while ((*p1++=*p2++)!='\0') ; }D.void strcpy3(char *p1,char *p2){ while (*p1++=*p2++) ; }21、若有定义char s1[]="string1",s2[8],*s3,*s4="string2";则对库函数strcpy错误调用的是()。
A.strcpy(s2,s1);B.strcpy(s3,"string1");C.strcpy(s2,s4);D.strcpy(s1,"string2");正确答案:B22、以下与库函数strcmp(char *s,char *t)功能相等的程序段是()。
A.int strcmp2(char *s,char *t){ for ( ; *s++==*t++; )if (!*s) return 0 ;return (*s-*t) ;}B.int strcmp1(char *s,char *t){ for ( ; *s++==*t++; )if (*s=='\0') return 0 ;return (*s-*t) ;}C.int strcmp3(char *s,char *t){ for ( ; *t==*s; ){ if (!*t) return 0 ; t++ ; s++ ; }return (*s-*t) ;}D.int strcmp4(char *s,char *t){ for ( ; *s==*t;s++,t++ )if (!*s) return 0 ;return (*t-*s) ;}23、下面程序执行后的输出结果是()。