算法与数据结构转项练习2

1.将两个字符串连接起来组成一个字符串时,选用( )函数。
正确答案: C
strlen()
strcap()
strcat()
strcmp()
解析

strlen:计算给定字符串的长度;
strcap:没有该方法;
strcat:字符串连接符;
strcmp:字符串大小比较。
2.以下哪个数据结构不是多型数据类型()
正确答案: D

广义表
有向图
字符串
解析
:多型数据类型是指包含的数据元素的类型并不确定。
比如栈可以是整数栈、字符栈、对象栈等等。
但是字符串,它的元素必然是字符。
3.串的长度是指()
正确答案: B
串中所含不同字母的个数
串中所含字符的个数
串中所含不同字符的个数
串中所含非空格字符的个数

解析串的长度应该是指字符串中所含字符的个数,从开始地址计数字符,遇’\0’停止计数。注意转义字符。
4.不能把字符串"HELLO!"赋给数组b的语句是()
正确答案: B
char b[10]={‘H’,‘E’,‘L’,‘L’,‘O’,’!’,’\0’};
char b[10];b=“HELLO!”;
char b[10];strcpy(b,“HELLO!”);
char b[10]=“HELLO!”;

解析字符数组初始化有两种方法:一种是逐个字符赋值,另一种是用字符常量对整个数组赋值。 A是第一种,D是第二种。显然第一种比第二种繁琐复杂。 C是字符串拷贝函数。 函数格式: char *strcpy (char *s1, const char *s2); 功能: 将S2所指的字符串拷贝到S1所指的字符串中。 说明: (1)参数S1S2都是指向字符串的指针。S1可以是字符数组名或字符指针,但不能是字符型常量,S2可以是字符串常量、字符数组或字符指针。 (2)将S2所指的字符串拷贝到S1所指的字符串中,用赋值语句S1=S2;是不行的,赋值语句要求左边是左值,S1是常量。 (3)要保证S1的长度足够大,以便能容纳下S2所指的字符串,否则引起错误。 C 对于非strtic型数组不初始化,其元素值不能确定。对strtic数组元素不赋初值,系统会自动赋以0值。
5.若串S=′software′,其子串的数目是()
正确答案: B
8
37
36
9
解析

字符串的子串,就是字符串中的某一个连续片段。截取一个字符串长度需要一个起始位置和结束位置。字符串“software”有8个字符,可是设置间隔的位置有9个,使用C(9,2)=36即可求得字符串“software”的所有子串。因为题目标明空串也是子串,故还需要加上1,总共37个子串。
含有n个不同字符的字符串的非空子串的个数为C(n + 1, 2) = n * (n + 1) / 2
子串(包括空串)为 n * (n + 1) / 2 + 1
非空真子子串(不包括空串和跟自己一样的子串)为 n *(n + 1)/ 2 - 1
6.设字符串S=‘ABCDEFG’,T=‘PQRST’,则运算CONCAT(SUBSTR(S,2,LENGTH(T)),SUBSTR(S,LENGTH(T),2) ))后的结果为()
正确答案: D
‘BCQR’
‘BCDEF’
‘BCDEFG’
‘BCDEFEF’
解析

SUBSTR(S,2,LENGTH(T) ),orale中字符下标从1开始,此处为从字符串S的第2个开始,截取长度为LENGTH(T)即5的字符串
结果为:BCDEF
SUBSTR(S,LENGTH(T),2),从字符串S的第LENGTH(T)即第5个开始,截取长度为2的字符串
结果为:EF
CONCAT结果为:BCDEFEF
7.用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串?
正确答案: B
12
14
18
24

解析:
在这里插入图片描述
在这里插入图片描述
a需要1位二进制字符,b需要2位,c和d各需要3位,总共至少:4 x 1 + 2 x 2 + 1 x 3 + 1 x 3 = 14
8.在给定文件中查找与设定条件相符字符串的命令为?
正确答案: C
find
gzip
grep
sort
解析

grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 find只能匹配单个字符
9.串′ababaaababaa′的next数组为()
正确答案: C
012345678999
012121111212
011234223456
0123012322345
解析
在这里插入图片描述
10.
**下面程序段的输出结果是
char p1 = ”123”, p2 = ”ABC”, str[50] = “xyz”;
strcpy(str + 2, strcat(p1, p2));
printf(“%s\n”, str);
xyz123ABC
z123ABC
xy123ABC
出错

解析
char *p1=“123” 声明了个字符串指针p1,指向字符串“ 123 ”,此时的“ 123 ”存放在常量区,并没有在拷贝到栈中,所以不能修改,如修改p1[0] = '2’就是错误的。
建议改为char p1[10] = “123”,就可以修改p1的值。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值