【PTA|期末复习|选择题】字符串(一)

【C语言/期末复习】字符和字符串函数(附思维导图/例题)

2-1

不正确的赋值或赋初值的方式是____。

A.char str[]="string";

B.char str[7]={'s', 't', 'r', 'i', 'n', 'g'};

C.char str[10];str="string";

D.char str[7]={'s', 't', 'r', 'i', 'n', 'g', '\0’};

2-2

以下不正确的赋值或赋初值的方式是( )。

A.char str[]="string";

B.char str[7]={'s', 't', 'r', 'i', 'n', 'g'};

C.char str[10];str="string";

D.char str[7]={'s', 't', 'r', 'i', 'n', 'g', ’\0’};

2-3

以下定义语句中不正确的是__。

A.double x[5]={2.0, 4.0, 6.0, 8.0, 10.0};

B.char c2[]={'\x10', '\xa', '\x8'};

C.char c1[]={'1', '2', '3', '4', '5'};

D.int y[5]={0,1,3,5,7,9};

2-4

下述对C语言字符数组的描述中错误的是()。

A.字符数组可以存放字符串

B.字符数组中的字符串可以整体输入、输出

C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

D.不可以用关系运算符对字符数组中的字符串进行比较

2-5

下面关于字符串的程序,其输出结果是

#include 

void fun(char s[], char t) {
    int i = 0;
    while (s[i]) {
        if (s[i] == t)
            s[i] = t - 'a' + 'A';
        i++;
    }
}
int main() {
    char str[100] = "abcdefg", c = 'd';
    fun(str, c);
    printf("%s\n", str);
    return 0;
}

A.abcdefg

B.abcDefg

C.ABCdEFG

D.ABCDEFG

2-6

以下程序的输出结果是____。

#include 
int main() {
    int k;
    char w[][10] = {"ABCD", "EFGH", "IJKL", "MNOP"};
    for (k = 1; k < 3; k++)
        printf("%s\n", w[k]);
    return 0;
}

A.

ABCD
FGH
KL

B.

ABCD
EFGH
IJKL

C.

EFG
JKL

D.

EFGH
IJKL

2-7

下列程序的输出结果是

int main( )
 {
     char *p1, *p2, str[50]="xyz";
     p1="abcd";
     p2="ABCD";
     strcpy(str+2,strcat(p1+2,p2+1));
     printf("%s",str);
     return 0
 }

A.xyabcAB

B.abcABz

C.ABabcz

D.xycdBCD

2-8

对于定义char str[] = "abc\0def"; (注:其中0为数字零),求字符串str的长度len(即调用标准库函数strlen:len = strlen(str))和数组str的大小size(即size = sizeof(str)),len和size分别是:

A.7,8

B.7,7

C.3,8

D.3,7

2-9

以下哪一种对于str的定义不恰当,有可能使strlen(str)(strlen是定义在C标准库中的函数)获得非预期的结果:

A.char str[] = "hello world!";

B.char str[100] = "X";

C.char str[4] = "abcd";

D.char str[6] = {65, 66, 67, 68, 69, 0};

2-10

若有说明语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确的叙述是
( )。

A.a+1表示的是字符t的地址

B.p指向另外的字符串时,字符串的长度不受限制

C.p变量中存放的地址值可以改变

D.a中只能存放10个字符

2-11

下列选项正确的语句组是( )。

A.char *s;s="hello!";

B.char *s;s=["hello!"];

C.char s[8];s="hello!";

D.char s[8];s={"hello"};

2-12

有以下定义,char s[]="012M356",*p=s; 不能表示字符M的表达式是( )。

A.*(p+3)

B.s[3]

C.*(s+3)

D.*p+3

2-13

若有说明语句:char c[]="\n",则c( )。

A.包含1个字符

B.包含2个字符

C.包含3个字符

D.长度不定

2-14

关于C语言字符串说法错误的是:( )。

A.C语言没有设置单独的字符串型变量,字符串可以利用字符数组来处理。

B.字符串“Haha”含5个字符。前4个是有效字符,后一个是串结束符'\0'。

C.“C”和'C'都是字符串。

D.'\0'字符不是空格字符,'\0'的ASCII码是0。

2-15

已定义char x[8] ; int i;,为了给该数组赋值,下列语句正确的是( )。

A.x[8]="Turbo C";

B.x="Turbo C";

C.x[ ]="Turbo C";

D.for(i=0; i<7; i++)

  x[i]=getchar( );

2-16

以下对字符数组进行初始化,错误的是( )。

A.char c1[3]={'1','2','3'};

B.char c2[3]="123";

C.char c3[ ]={ '1','2','3','\0'};

D.char c4[ ]="123";

2-17

下面是对s的初始化,其中不正确的是()。

A.char s[5]={"abc"};

B.char s[5]={'a','b','c'};

C.char s[5]="";

D.char s[5]="abcdef";

2-18

判断字符串a和b是否相等,正确的语句是()

A.if(a==b)

B.if(a=b)

C.if(strcpy(a,b))

D.if( strcmp(a,b)==0)

2-19

函数调用strcat(strcpy(str1,str2),str3)的功能是()

A.将字符串str1复制到str2中,然后再连接到str3之后 

B.将字符串str1连接到str2之后,再到复制str3之后

C.将字符串str2连接到str1之后,再将字符串str1复制到str3中

D.将字符串str2复制到str1中,然后再将字符串str3连接到str1之后

2-20

判断字符串a是否大于b,正确的表达式为 ()

A.if (a>b)

B.if (strcmp(a,b))

C.if (strcmp(a,b)>0)

D.if (strcmp(b,a)>0)

2-21

定义数组char str[10]; 下列语句能正确把字符串"hello"赋值给字符数组str的语句是( ).

A.str="hello";

B.str[]="hello";

C.strcpy(str,"hello");

D.strcat(str,"hello");

2-22

执行以下语句后,字符串str的值是:

  strcpy(str, "abcdefghijk");
  strcpy(str + 4, "mn");
  strcat(str, "xyz");

A.xyz

B.abcdefghijkmnxyz

C.mnxyz

D.abcdmnxyz

你可能感兴趣的:(PTA,c语言)