输入的是字符串,故考虑使用string类的对象或者char型数组来接收输入。
首先是主函数:
int main() { string s; int n, i; cin >> n; getchar(); //吸收回车符 for(i=1; i<=n; ++i){ getline(cin, s); cout << s << endl; cout << "AI: "; go(s);//AI根据s输出对话 } return 0; }
然后是go()函数的定义。
go()函数用于根据s输出对话,不要追求一步到位,我们可以预处理s,定位到s的第一个非空格字符,把s逐个复制到t中,同时处理连续空格,?,大写字母这些简单情况。
void go(string s) { char t[3001];//注意输入全部是I的时候,输出长度是输入的三倍 //string t; int i, j;//i,j分别为s,t的下标 //i定位到s的第一个非空字符 for(i=0; s[i]==' '; ++i);//循环体为空 j = 0; //j的初值为0 //从s的第一个非空字符开始,逐个扫描,分情况复制到t while(s[i]!='