以下数组实现输入5个字符串,对这5个字符串排序,例如输入:
China
Japan
India
Italy
Korea
#include<iostream>
using namespace std;
void main()
{
//这里不能定义字符数组的第二维长度为5,因为元素之间需要间隔,否则编译系统无法区分元素之间的起始位置
//str[0]指向的内容会变成”ChinaJapanIndiaItalyKorea“
//所以字符数组定义的长度应该略大于实际存放的数据长度,不能刚刚相等
//char str[5][5], temp[5], *pt=temp;
char str[5][6], temp[5], *pt=temp;
int i,j;
cout<<"please input 5 strings:"<<endl;
for(i=0; i < 5; i++)
cin>>str[i];
/*for(i=0; i < 5; i++) //当运行是错误,可以尝试输出相应的信息观察
cout<<str[i]<<" "; */
cout<<endl;
cout<<"sorted strings:"<<endl;
cout<<endl;
for(i=0; i < 4; i++)
//for(j=0; j < 5 - i; j++)
//注意以下的判定条件应该是”j < 5 - i“不是"j < 6 - i"否则当j == 5是str[i+1]则是str[6]下标越界
for(j=0; j < 5 - i; j++)
if(strcmp(str[j], str[j + 1]) > 0)
{ strcpy(pt, str[j]);
strcpy(str[j], str[j + 1]);
strcpy(str[j + 1], pt);
}
for(i=0; i < 5; i++)
cout<<str[i]<<endl;
}