爱迪国际c++章节测试-字符串处理

*
1.
填空题(5分)

定义字符串的基本操作为:删除一个字符、插入一个字符和将一个字符修改成另外一个字符这三种操作。将字符串A变成字符串B的最少操作步数,称为字符串A到字符串B的编辑距离。字符串“ABCDEFG”到字符串“BADECG”的编辑距离为_____。

*
2.
单选题
原字符串中任意一段连续的字符所组成的新字符串称为子串。
则字符 “AAABBBCCC” 共有( )个不同的非空子串。
A. 3
B. 12
C. 36
D. 45
3.
填空题(12分)
完善程序:*
(数字删除)下面程序的功能是将字符串中的数字字符删除后输出。请填空。
#include <iostream>
using namespace std;
int delnum( char *s )
{
int i, j;
j = 0;
for ( i = 0; s[i] != '\0'; i++ )
             if ( s[i] < '0' ① s[i] > '9' )
{
s[j] = s[i];
②;
}
 return(③);
}
const int SIZE = 30;
int main()
{
char s[SIZE];
int len, i;
cin.getline( s, sizeof(s) );
len = delnum( s );
for ( i = 0; i < len; i++ )
cout << ④;
cout << endl;
return 0;
}
问题一
问题二
问题三
问题四
*
4.
填空题(8分)
#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;
int i;
int count; count = 0;
getline( cin, str );
for ( i = 0; i < str.length(); i++ )
if ( str[i] >= 'a' && str[i] <= 'z' )
count++;
cout << "It has " << count << " lowercases" << endl;
return(0);
}
输入:NOI2016 will be held in Mian Yang.
输出:_______

阅读程序写结果:

*
5.
单选题
以下关于字符串的判定语句中正确的是( ).
A. 字符串是一种特殊的线性表
B. 串的长度必须大于零
C. 字符串不可以用数组来表示
D. 空格字符组成的串就是空串
*
6.
单选题
若串S=“copyright”,其子串的个数是( )。
A. 78
B. 45
C. 46
D. 36
*
7.
7.填空题(8分)
#include<iostream>
using namespace std;
int main()
{
int t[256];
string s;
int i;
cin >> s;
for (i = 0; i < 256; i++)
t[i] = 0;
for (i = 0; i < s.length(); i++)
t[s[i]]++;
for (i = 0; i < s.length(); i++)
if (t[s[i]] == 1)
{
cout << s[i] << endl;
return 0;
}
cout << "no" << endl;
return 0;
}

阅读程序写结果:

输入:xyzxyw
输出:_________

*
8.
填空题
#include<iostream>
using namespace std;
int main()
{
string ch;
int a[200];
int b[200];
int n, i, t, res;
cin >> ch;
n = ch.length();
for (i = 0; i < 200; i++)
b[i] = 0;
for (i = 1; i <= n; i++)
{
a[i] = ch[i - 1] - '0';
b[i] = b[i - 1] + a[i];
}
res = b[n];
t = 0;
for (i = n; i > 0; i--)
{
if (a[i] == 0)
t++;
 if (b[i - 1] + t < res)
res = b[i - 1] + t;
}
cout << res << endl;
return 0;
}

阅读程序写结果:

输入:1001101011001101101011110001
输出:_________

9.
填空题
1 #include <cstdlib>*
2 #include <iostream>
3 using namespace std;
4
5 char encoder[26] = {'C','S','P',0};
6 char decoder[26];
7
8 string st;
10 int main() {
11 int k = 0;
12 for (int i = 0; i < 26; ++i)
13 if (encoder[i] != 0) ++k;
14 for (char x ='A'; x <= 'Z'; ++x) {
15 bool flag = true;
16 for (int i = 0; i < 26; ++i)
17 if (encoder[i] ==x) {
18 flag = false;
19 break;
20 }
21 if (flag) {
22 encoder[k]= x;
23 ++k;
24 }
25 }
26 for (int i = 0; i < 26; ++i)
27 decoder[encoder[i]- 'A'] = i + 'A';
28 cin >> st;
29 for (int i = 0; i < st.length(); ++i)
30 st[i] = decoder[st[i] -'A'];
31 cout << st;
32 return 0;
33 }
•判断题
1) 输入的字符串应当只由大写字母组成,否则在访问数组时可能越界。( )
2) 若输入的字符串不是空串,则输入的字符串与输出的字符串一定不一样。()
3) 将第 12 行的“i<26”改为“i<16”,程序运行结果不会改变。( )
4) 将第 26 行的"i<26”改为“i<16”,程序运行结果不会改变。( )
•单选题
5)若输出的字符串为“ABCABCABCA”,则下列说法正确的是( )。
6)若输出的字符串为“CSPCSPCSPCSP”,则下列说法正确的是( )。
1.
A. 正确
B. 错误
2.
A. 正确
B. 错误
3.
A. 正确
B. 错误
4.
A. 正确
B. 错误
5.
A. 输入的字符串中既有𝑆又有P
B. 输入的字符串中既有𝑆又有B
C. 输入的字符串中既有A又有P
D. 输入的字符串中既有A又有B
6.
A. 输入的字符串中既有P又有K
B. 输入的字符串中既有J又有𝑅
C. 输入的字符串中既有J又有𝐾
D. 输入的字符串中既有P又有R
问题一
问题二
问题三
问题四
问题五
问题六
*
10.
单选题
一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串 abcab 有( )个内容互不相同的子串。
A 12
B 13
C 14
D 15
问卷星提供技术支持
举报