ngm20 发表于 2011-1-13 07:34:08

十九课作业

本帖最后由 ngm20 于 2011-1-13 07:35 编辑

#include<stdlib.h>
void initial(int * pl,int n);/*初始化数组*/
void sortintlist(int * pl,int n,char * type);/*排序调用函数*/
void sortstol(int * pl,int n );/*从小到大排序*/
void sortltos(int * pl,int n );/*从大到小排序*/
void sortlx(int * pl,int n );/*乱序*/
void change(int * pl,int * ph);/*交换二个数的位置*/
void sortshow(int * pl,int n );/*显示数组元素*/
int mycmpstr(char * pl,char *ph);/*比较字符串*/
main( )
{
        int n;
      int * pl;
      printf("how many integer?\n");
      scanf("%d",&n);
      printf("please input %d integer\n",n);
        pl=(int *)malloc(n*sizeof(int));

      initial(pl,n);
        printf("the numlist is\n");
        sortshow(pl,n);

        sortintlist(pl,n,"stol");
        printf("the new numlist stol is\n");
        sortshow(pl,n);

        sortintlist(pl,n,"ltos");
        printf("the new numlist ltos is\n");
        sortshow(pl,n);

        sortintlist(pl,n,"lx");
        printf("the new numlist lx is\n");
        sortshow(pl,n);

        free(pl);
}
void initial(int * pl,int n)
{
        int i;
        for(i=0;i<n;i++)
        {
                scanf("%d",pl+i);
        }
}
void sortstol(int * pl,int n )
{
        int i,j;
        for(i=0;i<n-1;i++)
        {
                for(j=0;j<n-i-1;j++)
                {
                        if(*(pl+j)>*(pl+j+1))
                        {
                                change((pl+j),(pl+j+1));
                        }
                }
        }
}
void change(int * pl,int * ph)
{
        int temp;
        temp=*pl;
        *pl=*ph;
        *ph=temp;
}
void sortshow(int * pl,int n )
{
        int i;
        for(i=0;i<n;i++)
        {
                printf("%d ",*(pl+i));
        }
        printf("\n");
}
void sortltos(int * pl,int n )
{
        int i,j;
        for(i=0;i<n-1;i++)
        {
                for(j=0;j<n-i-1;j++)
                {
                        if(*(pl+j)<*(pl+j+1))
                        {
                                change((pl+j),(pl+j+1));
                        }
                }
        }
}
void sortlx(int * pl,int n )
{
        int i,j,k=1;
        for(i=n-1;i>0;i--)
        {
                for(j=n-1;j>n-i-1;j--)
                {
                        if(*(pl+j-1)>*(pl+j) && k%2!=0)
                        {
                                change((pl+j),(pl+j-1));
                        }
                        if(*(pl+j-1)<*(pl+j) && k%2==0)
                        {
                                change((pl+j),(pl+j-1));
                        }
                }
                k++;
        }
}
void sortintlist(int * pl,int n,char * type)
{
        char a[]="stol";
        char b[]="ltos";
        char c[]="lx";
        if(mycmpstr(a,type))
        {
                sortstol(pl,n);
        }
        if(mycmpstr(b,type))
        {
                sortltos(pl,n);
        }
        if(mycmpstr(c,type))
        {
                sortlx(pl,n);
        }
}
int mycmpstr(char * pl,char *ph)
{
        int i=0,bl=1;
        while(*(pl+i)!='\0')
        {
                if(*(pl+i)==*(ph+i))
                {
                        i++;
                        continue;
                }
                bl=0;
                break;
        }               
    return bl;
}

whypro 发表于 2011-1-14 19:31:04

支持楼主,佩服!
页: [1]
查看完整版本: 十九课作业