一、单选题
1、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( )。
A.p2=c;
B.c=*p1+*p2;
C.p1=p2;
D.c=*p1*(*p2);
正确答案:A
2、下面判断正确的是( )。
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" ;
正确答案:D
3、下面能正确给字符串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);
正确答案:A
4、若有程序段char s[]="china"; char *p ; p=s ;以下叙述中正确的是( )。
A.s和p完全相同
B.s数组长度和p所指向的字符串长度相等
C.*p与s[0]相等
D.数组s中的内容和指针变量p中的内容相等
正确答案:C
5、若有定义char a[]="Itismine", *p="Itismine";以下叙述中错误的是( )。
A.a数组所占字节数为9
B.p不能再指向别的字符串常量
C.p变量中存放的地址值可以改变
D.a+1表示的是字符't'的地址
正确答案:C
6、若有定义char s[6],*ps=s;则正确的赋值语句是( )。
A. s="12345";
B.*ps="12345";
C.ps="12345";
D.*s="12345";
正确答案:C
7、若有定义char *cc[2]={"1234","5678"};以下叙述中正确的是( )。
A.cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
B.cc是指针变量,它指向含有两个数组元素的一维字符数组
C.cc数组的两个元素中各自存放了字符串"1234"和"5678"的首地址
D.cc数组元素的值分别是"1234"和"5678"
正确答案:C
8、下面程序段中,for循环的执行次数是( )。
char *s="\ta\018bc" ;
for ( ; *s!='\0' ; s++)  printf("*");
A.5
B.6
C.7
D.9
正确答案:B
9、下面程序段执行后的输出结果是( )。
char *s="abcde" ;
s+=2;
printf("%d",s);
A.不确定
B.字符'c'
C.cde
D.字符'c'的地址
正确答案:D
10、下面程序段执行后的输出结果是( )。
char a[]="language",*p;
p=a ;
while (*p!='u') { printf("%c",*p-32); p++ ;}
A.langUAGE
B.LANG
C.language
D.LANGUAGE
正确答案:B
11、下面程序执行后的输出结果是( )。
#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.abcaABCDEFdef
B.abc+ABC=DEFdef
C.abc+abc=defdef
D.abcabcdefdef
正确答案:C
12、下面程序执行后的输出结果是( )。
#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.3
B.编译错误
C.5
D.a[4]的地址
正确答案:C
13、下面程序执行后的输出结果是( )。
#include <stdio.h>
int main()
{    char s[]="Yes\n/No",*ps=s;
    puts(ps+4);
    *(ps+4)=0;
    puts(s);
    return 0;
}
A./No
Yes
/No
B./No
Yes/No
字符串长度和字节C./No
Yes
D.n/No
Yes
/No
正确答案:C
14、下面程序执行后的输出结果是( )。
#include <stdio.h>
int main()
{    char str[][10]={"GreatWall","Beijing"},*p=str[0];
    printf("%s",p+13);
    return 0;
}
A.ing
B.jing
C.Beijing
D.GreatWall
正确答案:B
15、若有定义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);
正确答案:B
16、下面程序执行后的输出结果是( )。
#include <stdio.h>
#include <string.h>
int main()
{    char str[][20]={"Hello","Beijing"},*p=str[0];
    printf("%d",strlen(p+20));
    return 0;
}
A.0
B.5
C.7
D.20
正确答案:C
17、若有定义char a[10],*b=a;不能给数组a输入字符串的语句是( )。
A.gets(&a[0]);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。