我的c++程序怎么有点小问题?请大家帮帮忙!!

来源:百度知道 编辑:UC知道 时间:2024/07/01 07:16:29
#include<iostream>
#include<string>
using namespace std;
int main()
{void select_sort2(char str[][50],int n);
char str[10][50];
int i;
cout<<"enter the originl string:"<<endl;
for(i=0;i<10;i++)
cin>>str[i];
cout<<endl;
select_sort2(str,10);
cout<<"the sorted string:"<<endl;
for(i=0;i<10;i++)
cout<<str[i]<<" ";
cout<<endl;
return 0;
}
void select_sort2(char str[][50],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(str[j][50]<str[k][50])k=j;
t=str[k][50];str[k][50]=str[i][50];str[i][50]=t;
}
}
我要做的是给10个字符串从小到大排序,可是输出的结果不对。。。。
我刚刚学,第一次编程序,请大家帮忙,谢谢

另外,其实题里的要求是不给定字符串的个数,那我应该怎么做啊?
例如,初识数据为:12,24,9,128,3,76,345
按字符串大小排序应为:12,1

你是不是编译都通不过?
int main()
{void select_sort2(char str[][50],int n);
这个地方定义得不对。
void select_sort2(char str[][50],int n);
int main()
{
这样才行。

void select_sort2(char str[][50], int n) {
int i, j, k;
char * t = new char(50);
for (i = 0; i < n - 1; i++) {
k = i;
for (j = i + 1; j < n; j++)
if (strcmp(str[j],str[k]) <= 0)
k = j;
strcpy(t, str[k]);
strcpy(str[k],str[i]);
strcpy(str[i], t);
}
delete t;
}
验证过。没问题。
如果是不定的话,
那么就需要用指针数组

能不能把原题 粘出来 你写的有点乱 不知道要干什么

可以用STL偷懒。。。
=======================================
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>

using namespace std;

int main()
{
vector<string> vstr;
string s;
for(int i=0; i<10; ++i)
{
cout<<"i