#include<iostream> #include<string> #include<cstring> using namespace std; int main(){ int N,len[100]; string str[100]; char max_str[80]; cin>>N; for(int i=0;i<N;i++){ cin>>str[i]; } for(int i=0;i<N;i++){ int len[i]=strlen(&str[i]); } int max=len[0]; for(int i=0;i<N;i++){ if(max<len[i]]){ max=len[i]; *max_str=str[i]; } } cout<<"The longest is : "<<*max_str<<endl; return 0; }
时间: 2024-03-25 16:42:06 浏览: 85
这是一段 C++ 代码,用于找出输入的字符串数组中,最长的字符串并输出。
但是代码存在一些问题:
1. 在第三个 for 循环中,应该是 if(max<len[i]),而不是 if(max<len[i]])
2. 在第四个 for 循环中,应该是 len[i]=strlen(str[i].c_str()),而不是 int len[i]=strlen(&str[i])。因为 strlen 函数要求传入的参数是 char* 类型,而 str[i] 是 string 类型,需要使用 c_str() 函数将其转换为 char* 类型。
3. 在第六个 for 循环中,应该是 max_str=str[i].c_str(),而不是 *max_str=str[i]。因为 max_str 是一个 char 数组,需要使用指针赋值的方式将字符串赋给它。
下面是修改后的代码:
```cpp
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){
int N,len[100];
string str[100];
char max_str[80];
cin>>N;
for(int i=0;i<N;i++){
cin>>str[i];
}
for(int i=0;i<N;i++){
len[i]=strlen(str[i].c_str());
}
int max=len[0];
for(int i=0;i<N;i++){
if(max<len[i]){
max=len[i];
max_str=str[i].c_str();
}
}
cout<<"The longest is : "<<max_str<<endl;
return 0;
}
```
希望对你有帮助!
阅读全文