一、观看视频
【01】字符数组与字符串
【02】字符串类(1)
二、研读学生讲义
【学生讲义】【01】字符数组与字符串 【学生讲义】【02】字符串类(1)
三、练习题(不清楚回头查看有关视频或讲义)
【01】有关字符数组的声明,错误的是:①字符数组是指元素为字符的数组。
②字符数组是用来存放字符序列或字符串的。
③字符数组只能有一维,声明格式是:char 数组名[常量表达式];
【02】有关用字符初始化字符数组的描述,错误的是:
①当初始表的字符数不小于元素个数,初始化后数组的每个元素都是字符。例如: char chr1[5] = {'a','b','c','d','e'} ;或 char chr1[5] = {'a','b','c','d','e','f'} ;初始化后,数组的元素:
chr1[0]='a',chr1[1]='b',chr1[2]='c',chr1[3]='d',chr1[4]='e'。②当初始表的字符数小于元素个数,从首元素开始赋值,剩余的元素默认值为空字符。例如: char chr1[5] = {'a','b','c'} ;初始化后,数组的元素:
chr1[0]='a',chr1[1]='b',chr1[2]='c',chr1[3]='\0',chr1[4]='\0'。【03】有关字符数组与字符串的描述,错误的是:
①字符数组中可以存放若干个字符,也可以来存放字符串。
②两者的区别是字符串的末尾有结束符('\0') 。
③下面代码在数组chr3中存放着字符串“abcd0”:char chr3[5] = {'a', 'b', 'c','\0','\0'};④在一维数组中存放着带有结束符的若干个字符称为字符串。因此,字符串是一维数组,但是一维字符数组不一定是字符串。【04】用字符串初始化字符数组的描述,错误的是:
①用一个字符串初始化一个一维数组,可以写成下列的形式:
char chr4[6] = "abcd";
②使用这种方式初始字符数组要注意字符串的长度应不超过字符数组的大小。
③二维字符数组可存放若干个字符串,因此可使用由若干字符串组成的初值表给二维字符数组初始化。下面代码声明的字符数组chr5存放3个字符串:
char chr5[3][4] = {"abc", "mno", "xyz"};
【05】字符常量和字符串常量的区别如下表,填上所缺的栏目。
【06】下面是常用字符串处理函数的功能,请填上它们对应的函数及要导入的库。
【07】在下面代码中,如果输入的是:
Hello, Xiaozhi!!
Hello
程序的输出是什么?
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<string>#include<iostream>using namespace std;int main(){ string s; int total = 0; while(cin >> s) { total++; cout << total << ' ' << s << endl; } return 0;}
【08】在下面代码中,如果输入的是:
Hello, Xiaozhi!!
Hello
程序的输出是什么?
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<string>#include<iostream>using namespace std;int main(){ string s; int total = 0; while(getline(cin, s)) { total++; cout << total << ' ' << s << endl; } return 0;}
【09】下面程序的输出是什么?
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<string>#include<iostream>using namespace std;int main(){ string s; string s1 = "Hello, Xiaozhi!"; string s2("OK"); string s3(s1); string s4(4,'c'); cout << 0 << ' ' << s << endl; cout << 1 << ' ' << s1 << endl; cout << 2 << ' ' << s2 << endl; cout << 3 << ' ' << s3 << endl; cout << 4 << ' ' << s4 << endl; return 0;}
【10】下面程序的输出是什么?
·
·
·
·
·
·
·
·
·
·
·
·
#include<string>#include<iostream>using namespace std;int main(){ string s = "Hello, Xiaozhi!"; cout << s[1] << ' ' << s.at(4) << endl; cout << s[20] << endl; cout << s.at(20) << endl; return 0;}
【11】当用字符数组来表示字符串时,是不可以用加号(+)来连接字符串的,也不可以用比较运算符来对比字典顺序,但string对是可以的,这就是重载运算符。另外,虽然可以用字符串常量初始化字符数组,但不允许把字符串直接赋值给一个字符数组,不过字符串对象是可以直接多次赋值的。下面的程序输出是什么?
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<string>#include<iostream>using namespace std;int main(){ string s1, s2; s1 = "Hi"; s2 = s1; cout << s2 << endl; s1 += s2; cout << s1 << endl; cout << s1 + s2 << endl; cout << (s1 == s2) << endl; cout << (s1 != s2) << endl; cout << (s1 < s2) << endl; cout << (s1 <= s2) << endl; cout << (s1 >= s2) << endl; return 0;}
【12】下面是string类常用的成员函数的功能,请写出它们应的函数名称(不写参数):【13】下面程序的输出?
·
·
·
·
·
·
·
·
·
·
·
#include<string>#include<iostream>using namespace std;int main(){ string s = "Hello, Xiaozhi!!!"; cout << s.length() << endl; cout << s.size() << endl; return 0;}
【14】下面程序的输出?
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<string>#include<iostream>using namespace std;int main(){ string s1 = "Hello, Xiaozhi!!!"; string s2 = ""; string s3 = " "; cout << s1.empty() << endl; cout << s2.empty() << endl; cout << s3.empty() << endl; return 0;}
【15】OpenJudge练习
【OpenJudge-1.7-26】字符串最大跨距
【OpenJudge-1.7-27】单词翻转
【OpenJudge-1.7-28】单词倒排