题目描述:
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
输入:
测试数据有多组,输入字符串。
输出:
对于每组输入,输出处理后的结果。
样例输入:
bacd
样例输出:
abcd
源代码:
#include
#include
#include
#include
#include
using namespace std;
int main() {
int i = 0,j,num;
string in;
char* arr = new char[200];
int len = 0;
while(cin>>in) {
strcpy(arr,in.c_str());
len = strlen(arr);
sort(arr,arr+len);
for(i = 0; i < len; i++) {
cout<<arr[i];
}
cout<<endl;
}
return 0;
}
这个代码一直报错为: Runtime Error,请大家教教我把,实在是看不出了
(其实这个题有多种解法我知道,我就想知道为甚这么写的时候报这个错误)
来源:http://ac.jobdu.com/problem.php?pid=1054
string in; 只做了声明,没有初始化。
runtime error一般是数组开太小,你需要比题目的范围多开一点,而且你的字符串没初始化
进入你的连接试了一下,把数组200扩大成205,果断A
OJ题目,测试数据一定会在边界情况出几个,所以要多多注意啦
_**char* arr = new char[200];
int len = 0;
while(cin>>in) {
strcpy(arr,in.c_str()); //arr没有memset。 没有判断in的长度是否小于arr的长度。
len = strlen(arr); //arr没有memset,字符串没有结束符\0,取出的长度可能超过in的长度。
sort(arr,arr+len);
for(i = 0; i < len; i++) {
cout<<arr[i];
}
直接对字符串进行排序不就行了,还有string有无参构造函数(默认初始为空)。
string in;
while (cin >> in) {
sort(in.begin(), in.end());
cout << in << endl;
}
记得初始化变量和数组,数组大小也要比要求的200大一点
越界访问,,,,数组的维数太少了