13.
假设现在有一个字符串,其内容为"I am \0good",那么使用strlen统计该字符串长度得到的结果为()A10B11C5D6
正确答案:C
官方解析:
字符串统计函数strlen以\0作为结束符,即当字符串遇到\0的时候会自动停止后续字符串的统计,因此strlen统计上述字符串的时候,只会统计I am (注意字符m之后有一个空格也是在统计范围内的),同时,strlen统计的是实际长度,因此统计的结果是5。答案选择C
知识点:字符串
20.
下列程序的功能是将 s 中的字符串按长度由小到大排列,请为横线处选择合适的程序()
#include <stdio.h>
#include <string.h>voidf(char*p[],int n){char*t;int i, j;for(i =0; i < n -1; i++)for(j = i +1; j < n; j++)if(strlen(*(p + i))>strlen(*(p + j))){
t =*(p + i);*(p + i)=*(p + j);*(p + j)= t;}}intmain(){char*s[]={"abc","abcdef","abbd"};f(s,3);for(int i =0; i <3; i++)printf("%s\n", ____);return0;}A
s+i
B
s[i]C*s[i]D&s[i]
正确答案:B
参考答案:选B。首先原题目是错误的。 题干 if(strlen(*(p+i))>strlen(*(p+i)))后一个应该是(p+j) 考察的是指针数组的遍历.A选项的数组名为指针,无法遍历数组元素。 C、D是指针,元素的地址。
知识点:字符串、排序、C语言
21.
若一个完整程序中的一部分如下图所示,则正确的打印结果是()
1printf("This book is only $%2.2f for sale.",3.246e2);AThis book is only $3.25forsale.
BThis book is only $32.46forsale.
CThis book is only $324.6forsale.
DThis book is only $324.60for sale.
正确答案:D
官方解析:
%后为待打印的内容,%f表示待打印的是一个浮点数。
%后加(数字)修饰符表示待打印的最小字段宽度,如%2f。
结合本题,待打印的数字超过限制的最小字段宽度且%.2f表示待打印的浮点数需保留2位有效数字。
所以正确答案为D。
知识点:字符串
23.
已知模式串的 next 数组,使用 KMP 算法进行串匹配,以下空格应填入的语句是( )。
intIndex_KMP(SStringS,SStringT,int pos){// 利用模式串 T 的 next 函数求 T 在主串 S 中第 pos 个字符之后的位置的// KMP 算法。其中, T 非空, 1 ≤ pos ≤ StrLength(S) 。int next[255];int i = pos;int j =1;get_next(T, next);while(i <=S[0]&& j <=T[0]){if(j ==0||S[i]==T[j]){// 继续比较后继字符++i;++j;}else
______;// 模式串向右移动}if(j >T[0])return i-T[0];// 匹配成功elsereturn0;}// Index_KMPA
j = next[j]B
i = next[j]C
j = i +1D
i = j +1
正确答案:A
官方解析:暂无官方题目解析,去讨论区看看吧!
知识点:字符串
24.
假设字符串char s[20]="abc123",char* p = s。那么表达式(*p+3)的结果为()
A1B
d
C
a+3D
上述结果均不正确
正确答案:B
官方解析:
由题意可知,指针p指向字符串数组s,其实意味着指针p的地址为字符串数组s的首地址,因此*p的值为字符串数组s的第一个字符的值,即a,字符a+3则为ASCII值相加,因此相加的结果为d,答案选择B
知识点:字符串
27.
假设字符串char a[]="abc123",char b[]="xyz",那么使用字符串连接函数strcat(a, b)连接字符串a和b之后得到的结果是()
A
abc123xyz
B
abc123
C
xyz
D
内存溢出
正确答案:D
官方解析:
从题意可知,字符串a和b的空间大小是实际字符串大小加1,因此当字符串a去连接字符b的时候,由于字符串a的空间不足导致字符串b连接到字符串a后面的时候出现内存溢出的错误。因此答案选择D。
知识点:字符串
28.
在 C/C++ 中,若有定义 char a [10],*p=a; ,那么下列赋值语句正确的是()。
A
a []="abcdefg";B
a="abedefg";C*p="abcdefg";D
p="abcdefg ";
正确答案:D
官方解析:暂无官方题目解析,去讨论区看看吧!
知识点:C++、数组、字符串、C语言
30.
已知一段文本有1382个字符,使用了1382个字节进行存储,这段文本全部是由a、b、c、d、e这5个字符组成,a出现了354次,b出现了483次,c出现了227次,d出现了96次,e出现了232次,对这5个字符使用哈夫曼(Huffman)算法进行编码,则以下哪些说法正确()
A
使用哈夫曼算法编码后,用编码值来存储这段文本将花费最少的存储空间
B
使用哈夫曼算法进行编码,a、b、c、d、e这5个字符对应的编码值是唯一确定的
C
使用哈夫曼算法进行编码,a、b、c、d、e这5个字符对应的编码值可以有多套,但每个字符编码的位(bit)数是确定的
D
b这个字符的哈夫曼编码值位数应该最短,d这个字符的哈夫曼编码值位数应该最长
正确答案:ACD
官方解析:暂无官方题目解析,去讨论区看看吧!
知识点:2014、字符串、树、C++工程师
1.
空串与由空格组成的串没有区别。()A
是
B
否
正确答案:B
官方解析:暂无官方题目解析,去讨论区看看吧!
知识点:字符串
2.
在下列关于「字符串」的陈述中,不正确的描述是()
A
字符串是一种特殊的线性表
B
字符串可以连续存储,也可以链式存储
C
字符串的长度必须大于零
D
「空串」与「空白串」不是同一个含义
正确答案:C
参考答案:选C。该题考察的是数据结构中串的基本概念。 字符串:是有零个或多个字符组成的有序序列,是计算机处理的最基本的非数值数据。 S='a1a2a3...an' (n ≥0) 字符串的值中每个字符ai(0 ≤i ≤n)可以是字母、数字或其他字符组成的序列,组成线性表的每个元素就是一个单字符,所以是一种特殊的线性表,A正确。 串是特殊的线性表,故其存储结构与线性表的存储结构类似,只不过组成串的结点是单个字符而已。连续存储包括静态定长存储和动态堆分配存储;串值也可用单链表存储,简称为链串。所以实际应用中为了提高空间利用率,可使每个结点存放多个字符(这是顺序串和链串的综合 (折衷) ),称为块链结构。 空串有自己的串长度和内容,即:“长度为0,内容为空”。C错误。 空串是长度为0,内容为空;空白串是包含一个或多个空白字符‘ ’(空格键)的字符串。所以不是同一含义。D正确。
知识点:字符串
7.
有如下一段代码,下列选项中,选项()是该段代码的正确输出。
#include<stdio.h>
#include<string.h>
#define PRAISE"NowCoder is benefit to everyone concerned."intmain(){printf("The phrase of PRAISE has %zd letters ",strlen(PRAISE));printf("and occupies %zd memory cells.",sizeof(PRAISE));return0;}AThe phrase of PRAISE has 42 letters and occupies 42 memory cells.
BThe phrase of PRAISE has 42 letters and occupies 43 memory cells.
CThe phrase of PRAISE has 43 letters and occupies 42 memory cells.
DThe phrase of PRAISE has 43 letters and occupies 43 memory cells.
正确答案:B
官方解析:
使用strlen可得到字符串中包括空格和标点符号在内的字符数。
使用sizeof运算符,得到的数会更大,因为它会把字符串末尾不可见的空字符也计算在内。
因此,对于PRAISE来说,使用strlen返回的数值为42,使用sizeof运算符返回的数值为43,B选项为正确答案。
知识点:字符串
10.String s1 ="nowcoder";字符串s1存储在内存的哪个区域()A
字符串常量区
B
堆
C
栈
D
临时区
正确答案:A
官方解析:
Java中,用new创建的对象在堆区;函数中的临时变量在栈区。但是,由于字符串使用过于频繁,在内存方法区中有一个字符串常量池,用来快速创建和访问字符串。
知识点:字符串
12.
在 C 语言中有如下语句:char mark = ‘#’; 则’#’和”#”分别占()内存。
A1字节、1字节
B1字节、2字节
C2字节、1字节
D2字节、2字节
正确答案:B
官方解析:
字符常量存储为int类型(不是char类型),故’#’通常占用2或4字节。但实际上,只使用int的1个字节存储’#’的编码。
字符串”#”使用2个字节来存储:一个字节存储’#’的编码,一个字节存储的'\0'编码。
所以正确答案为B。
知识点:字符串、C语言
13.
串中任意个字符组成的子序列称为该串的子串。
A
正确
B
错误
正确答案:B
官方解析:暂无官方题目解析,去讨论区看看吧!
知识点:字符串
14.
判断下述语句的对错:MFC 中 CString 是类型安全的类。
A
对
B
错
正确答案:A
官方解析:暂无官方题目解析,去讨论区看看吧!
知识点:C++、字符串
15.
互联网的快速发展虽然便利了我们的日常生活,但是它也带来了诸多问题,比如:像账号密码这样的敏感信息泄露问题,因此对在互联网上进行传输的数据进行加解密是很有必要的。下面函数的功能对字符串明文进行加密处理,那么加密后的密文结果是()
#include<stdio.h>
#include<string.h>
#define N1024char*encrypt(char* str){int i, len =strlen(str);for(i =0; i < len; i++){
str[i]=(str[i]+ i)%128;}return str;}intmain(){char s[N]="I am good";printf("%s\n",encrypt(s));return0;}AI!cp$luv1
BI am good
C
doog ma ID1vul$pc!I
正确答案:A
你的答案:D
官方解析:
从题意可知看出,该函数的功能是给字符串I am good进行加密处理。
根据加密函数可知,该函数是对字符串中的每一个字符ASCII值和当前字符的索引值进行相加,然后对128进行取模后得到的ASCII表中对应的字符,因此答案B和答案C明显都不正确。
根据第一个字符的下标为0可知,第一个字符加密后的密文和明文应该是一样的,因此答案D也不正确。
所以正确答案为A。
知识点:字符串
18.
在 C 语言中有如下声明:char color = ‘B’; 请问’B’和color分别占()内存。
A1字节、1字节
B1字节、2字节
C2字节、1字节
D2字节、2字节
正确答案:A
官方解析:
字符变量占用一个字节,所以color占1字节。
字符常量存储为int类型(不是char类型),也就是说‘B’通常占用2或4字节,但实际上只使用int的1字节存储‘B’的编码。
所以正确答案为A。
知识点:字符串
19.
某程序的主函数如下图所示,该程序的打印结果是()
1234567891011intmain(void){char name[]="Tom";char*ptr;
ptr = name +strlen(name);while(--ptr >= name)puts(ptr);return0;}A
m om TomB//空行 m om TomC//空行 Tom om mDTom om m
正确答案:A
官方解析:
第1个知识点:对数组来说,数组名是数组首元素的地址。因此,用name可以表示字符串”Tom”首元素’T’的地址。
第2个知识点:strlen()函数给出字符串中的字符长度。因此strlen(name)的返回值为3。
第3个知识点:自减运算--i先减1再使用,自减运算符i--先使用再减1。结合以上知识点,找准指针所指位置即可得到正确答案。
所以正确答案为A
知识点:字符串
27.
有如下语句序列:
char str[10];
cin>>str;
当从键盘输入 "I love this game" 时,str 中的字符串是
A"I love this game"B"I love thi"C"I love"D"I"
正确答案:D
参考答案:D cin遇到空格 结束输入,所以只读取I
知识点:C++、字符串、C语言
想必习惯使用vscode的人突然使用HBuilder很不习惯吧,但是HBuilder创建的项目本身没有调试功能。当你有一个app项目但又不想使用HBuilder编写,需要浏览器调试的时候,你这时就需要一个插件了:uni run
插件 基于HBuilderX的采用unia…
之前对C当中的string类做了了解和模拟实现:
C-string类的模拟实现_chihiro1122的博客-CSDN博客
C string类-2_chihiro1122的博客-CSDN博客
C string类 迭代器 范围for_string类型迭代器_chihiro1122的博客-CSDN博客
vector类使用模版来实现了,我们可…