【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 <stdio.h>
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 <stdio.h>
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