输入5个字符串,按升序排列后输出

来源:百度知道 编辑:UC知道 时间:2024/05/05 13:18:07
#include<iostream>
using namespace std;
#include<cstring>
int main()
{
char a[5][10],t[10];
int i,j;
for(i=1;i<=5;i++)
{
cin>>a[i];
}
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(strcmp(a[i],a[j])>0)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<5;i++)
cout<<a[i]<<endl;
return 0;
}

请把错误的地方详细解释下,谢谢!
第七行for(i=1;i<=5;i++)改成for(i=0;i<=4;i++)还有错的

1.
for(i=1;i<=5;i++)
{
cin>>a[i];
}

要写成
for(i=0;i<=4;i++)
{
cin>>a[i];
}

否则越界

2.
t=a[i];
a[i]=a[j];
a[j]=t;
不能直接等于,而要做一个循环来进行拷贝

下面的代码是正确的

#include<iostream>
using namespace std;
#include<string>

int main()
{
string a[5],t;
int i,j;

for(i=0;i<=4;i++)
{
cin>>a[i];
}

for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(strcmp(a[i].c_str(),a[j].c_str())>0)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

for(i=0;i<5;i++)
cout<<a[i]<<endl;
return 0;
}

我不懂为啥你既然用了<iostream>为啥不用<string>?

1、输入字符数组的时候要从第0开始
for(i=0;i<=4;i++)
{
cin>>a[i];
}

2、字符数组复制需要用到strcpy