文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C程序习题-用指针对字符串进行排序[10.2]

C程序习题-用指针对字符串进行排序[10.2]

时间:2010-08-13  来源:chengxiaopeng

    输入三个字符串,按由小到大的顺序输出。     我们可以用指针,因为用指针比较快。其实原理比较简单,也就是比较字符串,如果字符串大于另外一个字符串,则对两个字符串进行交换。字符串的交换,也就是说是字符串的copy。为了练习使用指针其中的strcmp,strcpy都是自己编写的函数,代码如下:  

#include <stdio.h>
#define N 100

int mystrcmp(char *,char *); //string compare

void mystrcpy(char *,char *); //string copy

void myswap(char *, char *);
void sort2(char *, char *);
void sort3(char *, char *, char *);
int main(int argc, char *argv[])
{
    char ch1[N],ch2[N],ch3[N];
    char *ch_1,*ch_2,*ch_3;
    printf("please input 3 line string.\n");
    gets(ch1);
    gets(ch2);
    gets(ch3);
    
    ch_1 = ch1;
    ch_2 = ch2;
    ch_3 = ch3;
    
    sort3(ch_1,ch_2,ch_3);
    
    printf("\nprintf sort 3 line string.\n");
    puts(ch_1);
    puts(ch_2);
    puts(ch_3);
    
    system("pause");
    return 0;
}

int mystrcmp(char *ch1, char *ch2)
{
     int i = 0;
     while (*ch1 != '\0' && *ch2 != '\0')
     {
           if (*ch1++ == *ch2++)
           {
              continue;
           }
           else
           {
               i = *ch1++ - *ch2++;
               break;
           }
     }

     return i;
}

void mystrcpy(char *target, char *src)
{
     while(*src)
     {
        *target++ = *src++;
     }
     *target = '\0';
     
}

void myswap(char *c1, char *c2)
{
     char temp[N];
     mystrcpy(temp,c1);
     mystrcpy(c1,c2);
     mystrcpy(c2,temp);
}

void sort2(char *c1, char *c2)
{
     if (mystrcmp(c1,c2) > 0 )
     {
        myswap(c1,c2);
     }
}

void sort3(char *c1, char *c2, char *c3)
{
     sort2(c1,c2);
     sort2(c1,c3);
     sort2(c2,c3);
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载