飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1880|回复: 0

[C/C++] 第十九课作业

[复制链接]
  • TA的每日心情
    擦汗
    2016-4-19 21:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-5-31 10:43:55 | 显示全部楼层 |阅读模式
    本帖最后由 wai1216 于 2016-5-31 23:38 编辑

    [C] 纯文本查看 复制代码
    int ltos(int a, int b);
    int stol(int a, int b);
    void _numchange(int *a, int *b);
    void enternumlist(int *p, int n)
    {
    	int i = 0;
    	for (i = 0; i < n; i++)
    	{
    		scanf("%d", p + i);
    	}
    }
    
    void shownumlist(int *p, int n)
    {
    	int i = 0;
    	for (i = 0; i < n; i++)
    	{
    		printf("%d ", *(p + i));
    	}
    	printf("\n");
    }
    
    
    void changenumlistltos(int *p, int n)
    {
    	int i = 0, j = 0;
    	for (i = 0; i < n; i++)
    	{
    		for (j = 0; j < n - i - 1; j++)
    		{
    			if (ltos(*(p + j), *(p + j + 1)))
    			{
    				_numchange(p + j, p + j + 1);
    			}
    		}
    	}
    }
    
    void changenumliststol(int *p, int n)
    {
    	int i = 0, j = 0;
    	for (i = 0; i < n; i++)
    	{
    		for (j = 0; j < n - i - 1; j++)
    		{
    			if (stol(*(p + j), *(p + j + 1)))
    			{
    				_numchange(p + j, p + j + 1);
    			}
    		}
    	}
    }
    
    void changenumlistlx(int *p, int n)
    {
    	int i = 0, j = 0;
    	for (i = 0; i < n; i++)
    	{
    		for (j = i; j < n - 1; j++)
    		{
    			if (!(i % 2))
    			{
    				if (ltos(*(p + i), *(p + j + 1)))
    				{
    					_numchange(p + i, p + j + 1);
    				}
    			}
    			else
    			{
    				if (stol(*(p + i), *(p + j + 1)))
    				{
    					_numchange(p + i, p + j + 1);
    				}
    			}
    		}
    	}
    }
    
    void _numchange(int *a, int *b)
    {
    	int temp = 0;
    	temp = *a;
    	*a = *b;
    	*b = temp;
    }
    
    int ltos(int a, int b)  /*从小到大*/
    {
    	return a > b ? 1 : 0;
    }
    
    int stol(int a, int b)  /*从大到小*/
    {
    	return a < b ? 1 : 0;
    }
    
    int _strcmp(char *str1, char *str2)
    {
    	int j = 0;
    	for (; *str1&&*str2; str1++, str2++)
    	{
    		if (*str1 == *str2)
    		{
    			;
    		}
    		else
    		{
    			j++;
    		}
    	}
    	return j;
    }
    
    void showltos(int *p, int n)
    {
    	changenumlistltos(p, n);
    
    	printf("The l to s numlist is :\n");
    	shownumlist(p, n);
    }
    
    void showstol(int *p, int n)
    {
    	changenumliststol(p, n);
    
    	printf("The s to l numlist is :\n");
    	shownumlist(p, n);
    }
    
    void showlx(int *p, int n)
    {
    	changenumlistlx(p, n);
    
    	printf("The lx numlist is :\n");
    	shownumlist(p, n);
    }
    
    void Sortlist(int *p, int n, char *type)
    {
    	char *type1 = "ltos";
    	char *type2 = "stol";
    	char *type3 = "lx";
    	if (_strcmp(type, type1) == 0)
    	{
    		showltos(p, n);
    	}
    	else if (_strcmp(type, type2) == 0)
    	{
    		showstol(p, n);
    	}
    	else if (_strcmp(type, type3) == 0)
    	{
    		showlx(p, n);
    	}
    }
    
    
    
    void main()
    {
    	int *p = (int *)malloc(10 * sizeof(int));
    	printf("Please enter the num: \n");
    	enternumlist(p, 10);
    
    	printf("The numlist is :\n");
    	shownumlist(p, 10);
    
    	Sortlist(p, 10, "ltos");
    	Sortlist(p, 10, "stol");
    	Sortlist(p, 10, "lx");
    }
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表