DS第四章学习小结
Posted hxyawsl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DS第四章学习小结相关的知识,希望对你有一定的参考价值。
本章最令人印象深刻的题就是AI核心代码这题了。如下
说实话,刚看到这题真的懵了,虽然只是一道题,但总给人6题的感觉。尽管困难重重,但还是在陈晓梅老师的指导下,大致完成了此题。
逻辑分析
先定义数据结构,自然是字符数组/字符串
最初考虑主函数逻辑,主要是读取输入语句,并调用接口处理输入语句并输出。基本流程是,读入一句,对其进行扫描、判断、操作,再存到新的字符串,最后输出新的字符串。
一开始输入部分就卡住了,因为不知道怎么处理回车后还能输入数据,进度就陷入了停滞,不过课上根据老师所说getchar()可以把回车吸收掉之后,又有所进展
int main() { int n; //行数n,s存放输入的语句 string s; cin >> n; getchar(); for (int i = 1; i <= n; i++) { getline(cin, s); cout << s << endl; //先输出原话,再输出处理后的AI回答 cout << "AI: "; answer(s); //处理并输出回答 } return 0; }
然后对接口answer()进行定义。
首先考虑把多余的空格删到只剩一个
void answer(string s) { //根据s处理并输出回答 int i, j; //i定位到s的第一个非空 for (i = 0; s[i] == ‘ ‘; i++) { } }
然后对边界问题进行考虑。当字符串全为空格的时候呢?会死循环或越界溢出吗?
其实不会,因为字符串有个结尾符‘