Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538912
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-08-13 11:33:14

    输入三个字符串,按由小到大的顺序输出。
    我们可以用指针,因为用指针比较快。其实原理比较简单,也就是比较字符串,如果字符串大于另外一个字符串,则对两个字符串进行交换。字符串的交换,也就是说是字符串的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);
}


阅读(2121) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~