#include<stdio.h>
#include<iostream>
using namespace std;
void strcpy1(char*p1, char*p2)
{
char temp;
temp =* p1;
*p1 = *p2;
*p2 = temp;
}
int main()
{
char st[20], cs[5][20];
int i, j, p;
cout << "input country name:" << endl;
for (i = 0; i < 5; i++)
gets_s(cs[i]);
cout << "输入完成"<<endl;
for (i = 0; i < 5; i++)
{
p = i;
strcpy_s(st, cs[i]);
for (j = i + 1; j < 5; j++)
{
if (strcmp(cs[j], st) < 0)
{
p = j;
strcpy_s(st, cs[j]);
}
}
if (p != i)
{
//strcpy_s(st, cs[i]); 这个地方是重点,c++自带的strcpy函数只能实现复制功能,却不能实现指针的交换,要想让指针交换,必须
strcpy1(cs[i], cs[p]); // 自己定义函数,紧紧实现复制在此处并不能完成要求,因为没有指针的交互,在下一次循环的时候,这个时候已经
// strcmp(cs[p], st); 输出的字符串在原来的数组中还存在,还会继续比较,所以,要把输出的字符串放到最前面,i+1后就不会再比较了。无法得到正确的结 // 果。
//puts(cs[i]);
}
puts(cs[i]);
}
cout << "dd" << endl;
for (i = 0; i < 5; i++)
cout << cs[i] << endl;
cout << endl;
return 0;
}