书本题目不会解,程序已经编好了,但是不知道错哪?

题目是:用指针的方法来编程,输入四个字符串,从小到大输出
#include "stdafx.h"
#include
#include
using namespace std;
int main()
{
void swap(char *,char *);
char str1[20],str2[20],str3[20],str4[20];
cout<<"请输入四个字符串:"< cin>>str1[20];
cin>>str2[20];
cin>>str3[20];
cin>>str4[20];
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str1,str4)>0) swap(str1,str4);
if(strcmp(str2,str3)>0) swap(str2,str3);
if(strcmp(str2,str4)>0) swap(str2,str4);
if(strcmp(str3,str4)>0) swap(str3,str4);
cout<<"从小到大的排序是:"<<endl;
cout<<str1<<" "<<str2<<" "<<str3<<" "<<str4<<endl;
return 0;
}
void swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}

cin>>str1[20];
cin>>str2[20];
cin>>str3[20];
cin>>str4[20];
改为
cin>>str1;
cin>>str2;
cin>>str3;
cin>>str4;

cin>>str1[20];
cin>>str2[20];
cin>>str3[20];
cin>>str4[20];
改为
cin>>str1;
cin>>str2;
cin>>str3;
cin>>str4;

#include
#include
using namespace std;

int main()
{
void swap(string&,string&);
string str[4];
cout<<"请输入四个字符串:";

cin>>str[0];
cin>>str[1];
cin>>str[2];
cin>>str[3];


for (int i=0;i<3;++i)
{
    for (int j=i+1;j<4;++j)
    {
        if (str[i]>str[j])
        {
            swap(str[i],str[j]);
        }
    }
}
cout<<"从小到大的排序是:"<<endl;
cout<<str[0]<<" "<<str[1]<<" "<<str[2]<<" "<<str[3]<<endl;
return 0;

}

void swap(string& p1,string& p2)
{
string temp=p1;
p1=p2;
p2=temp;
}