//這就行,你這是要按字串的長度排序,你的那個交換函式是要改變陣列中的值,你在進行交換臺時,比如str1長度為3,str2為5;那麼就只將前三個字交換了,並且在短的那個串中的\0任然在,所以輸出就還是那樣了,我給你改了一下,
#include<stdio.h>
#include<string.h>
intmain()
{voidswap(char*q1,char*q2);
inti=0;
char*p1,*p2,*p3,str1[10],str2[10],str3[10],*p;
p1=str1;p2=str2;p3=str3;
printf("pleaseinputthreestring\n");
scanf("%s",p1);
scanf("%s",p2);
scanf("%s",p3);
if(strlen(p1)<strlen(p2))
{p=p1;p1=p2;p2=p;}//swap(p1,p2);
if(strlen(p1)<strlen(p3))
{p=p1;p1=p3;p3=p;}//swap(p1,p3);
if(strlen(p2)<strlen(p3))
{p=p2;p2=p3;p3=p;}//swap(p2,p3);
printf("%s\n%s\n%s\n",p1,p2,p3);
system("pause");
return(0);
}
voidswap(char*q1,char*q2)
{
chard;
for(;*q1!="\0"&&*q2!="\0";++q1,++q2)
d=*q1;*q1=*q2;*q2=d;
/////或者是這樣,是改你的程式的
swap(p1,p2);//{p=p1;p1=p2;p2=p;}
swap(p1,p3);//{p=p1;p1=p3;p3=p;}
swap(p2,p3);//{p=p2;p2=p3;p3=p;}
for(;*q1!="\0";q1++,q2++)
*q1=*q2;q1++;
*q2="\0";q2++;
while(*q2!="\0")
*q1++=*q2++;
*q1="\0";
//這就行,你這是要按字串的長度排序,你的那個交換函式是要改變陣列中的值,你在進行交換臺時,比如str1長度為3,str2為5;那麼就只將前三個字交換了,並且在短的那個串中的\0任然在,所以輸出就還是那樣了,我給你改了一下,
#include<stdio.h>
#include<string.h>
intmain()
{voidswap(char*q1,char*q2);
inti=0;
char*p1,*p2,*p3,str1[10],str2[10],str3[10],*p;
p1=str1;p2=str2;p3=str3;
printf("pleaseinputthreestring\n");
scanf("%s",p1);
scanf("%s",p2);
scanf("%s",p3);
if(strlen(p1)<strlen(p2))
{p=p1;p1=p2;p2=p;}//swap(p1,p2);
if(strlen(p1)<strlen(p3))
{p=p1;p1=p3;p3=p;}//swap(p1,p3);
if(strlen(p2)<strlen(p3))
{p=p2;p2=p3;p3=p;}//swap(p2,p3);
printf("%s\n%s\n%s\n",p1,p2,p3);
system("pause");
return(0);
}
voidswap(char*q1,char*q2)
{
chard;
for(;*q1!="\0"&&*q2!="\0";++q1,++q2)
{
d=*q1;*q1=*q2;*q2=d;
}
}
/////或者是這樣,是改你的程式的
#include<stdio.h>
#include<string.h>
intmain()
{voidswap(char*q1,char*q2);
inti=0;
char*p1,*p2,*p3,str1[10],str2[10],str3[10],*p;
p1=str1;p2=str2;p3=str3;
printf("pleaseinputthreestring\n");
scanf("%s",p1);
scanf("%s",p2);
scanf("%s",p3);
if(strlen(p1)<strlen(p2))
swap(p1,p2);//{p=p1;p1=p2;p2=p;}
if(strlen(p1)<strlen(p3))
swap(p1,p3);//{p=p1;p1=p3;p3=p;}
if(strlen(p2)<strlen(p3))
swap(p2,p3);//{p=p2;p2=p3;p3=p;}
printf("%s\n%s\n%s\n",p1,p2,p3);
system("pause");
return(0);
}
voidswap(char*q1,char*q2)
{
chard;
for(;*q1!="\0";q1++,q2++)
{
d=*q1;*q1=*q2;*q2=d;
}
*q1=*q2;q1++;
*q2="\0";q2++;
while(*q2!="\0")
*q1++=*q2++;
*q1="\0";
}