这个的问题在哪里#include<bits/stdc++.h> using namespace std; vector<string>ci; // 存储字符串 vector<int>l,r; // 存储奇数和偶数 int main() { int n; cin>>n; ci.resize(n);// 设置字符串长度 for(int i=0;i<n;i++) { cin >> ci[i]; int num=ci[i][ci[i].size()-1]-'0'; // 将字符转换为数字 if(num % 2 == 0) r.push_back(num); // 存储偶数 else l.push_back(num); // 存储奇数 } sort(r.begin(), r.end()); // 排序偶数 sort(l.begin(), l.end()); // 排序奇数 for(int i=0;i<l.size();i++) cout<<l[i]<<" "; for(int i=r.size()-1;i>=0;i--) cout<<r[i]<<" "; return 0; }
时间: 2024-01-16 09:04:26 浏览: 100
c++万能头文件(包含所有其他头文件)#include<bits/stdc++.h> 注:此cpp文件包含万能头文件以及基本框架
5星 · 资源好评率100%
这段代码可能会有以下问题:
1. 在输入字符串 ci 时,没有指定其长度,会导致数组越界的问题。应该使用 vector<string> 来动态存储输入的字符串。
2. 在将 ci[i] 的最后一个字符转换为数字时,没有考虑字符串为空的情况,可能会出现运行错误。
3. 在将偶数放入 r 数组和奇数放入 l 数组时,没有考虑数组下标的问题,会导致数组越界的问题。应该使用 vector<int> 来存储偶数和奇数。
4. 在输出偶数时,应该从 rn-1 开始倒序输出,否则会输出一个未初始化的元素。
下面是修改后的代码:
```c++
#include<bits/stdc++.h>
using namespace std;
vector<string> ci; // 存储字符串
vector<int> l, r; // 存储奇数和偶数
int main() {
int n;
cin >> n;
ci.resize(n); // 设置字符串长度
for(int i = 0; i < n; i++) {
cin >> ci[i];
int num = 0;
if(ci[i].size() > 0)
num = ci[i][ci[i].size() - 1] - '0'; // 将字符转换为数字
if(num % 2 == 0)
r.push_back(num); // 存储偶数
else
l.push_back(num); // 存储奇数
}
sort(r.begin(), r.end()); // 排序偶数
sort(l.begin(), l.end()); // 排序奇数
for(int i = 0; i < l.size(); i++)
cout << l[i] << " ";
for(int i = r.size() - 1; i >= 0; i--)
cout << r[i] << " ";
return 0;
}
```
阅读全文