回覆列表
  • 1 # 誰暖冬季影紫花開

    //這就行,你這是要按字串的長度排序,你的那個交換函式是要改變陣列中的值,你在進行交換臺時,比如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";

    }

  • 中秋節和大豐收的關聯?
  • 在電腦上奶塊怎麼設定按鍵?