上述代码输出第二个样例结果不对原因是什么
时间: 2023-12-20 09:03:21 浏览: 59
java代码-2018年第二题回文殊。
第二个样例输入的字符串中包含了空格,因此在使用 `cin>>m` 读取整数时,只读取到了空格前面的数字,导致 `m` 的值不正确。为了解决这个问题,可以使用 `getline` 函数读取一整行字符串,然后再使用 `stringstream` 来解析其中的整数。
修改后的代码如下:
```c++
#include<iostream>
#include<cstring>
#include<sstream>
using namespace std;
void strmcpy(char* s,char* t,int m);
int main(){
int repeat,m;
char t[100],s[100];
cin>>repeat;
cin.get(); // 读取换行符
for(int i=0;i<repeat;i++){
cin.getline(t,100);
stringstream ss(t); // 使用 stringstream 解析整数
ss>>m;
ss.ignore(); // 忽略空格
strmcpy(s,t,m);
}
}
void strmcpy(char* s,char* t,int m){
int len=strlen(t);
cout<<len<<endl;
if(m>len||m<1){
cout<<"error input"<<endl;
}
else{
s = &t[m-1];
cout<<s<<endl;
}
}
```
这样修改后,就可以正确处理包含空格的输入字符串了。
阅读全文