C编程——任意输入一串数,去除其中重复的数并按从小到大的顺序输出

**1、**程序

#include <stdio.h>

void Input_Num(int *, int *);//从键盘获取一串数字
void Sort(int *, int *);//对输入的数按从小到大进行排序
void Distinct(int *, int *);//去重


int main()
{
	int a1[99];
	int count1 = 0;
	
	Input_Num(a1, &count1);//从键盘获取一串数字
	Sort(a1, &count1);//对输入的数按从小到大进行排序
	Distinct(a1, &count1);//去除重复
	
	return 0;
}

void Input_Num(int *arr, int *len)//从键盘获取一串数字
{
	printf ("请输入任意一串数字:");
	
	do{
		scanf ("%d", &arr[*len]);
		*len += 1;
	}while( getchar() != '\n');
}

void Sort(int *arr, int *len)//对输入的数按从小到大进行排序
{
	int i,j,t;
	
	for(i = *len - 1; i > 0; i--)
	{
		for(j = i - 1; j >= 0; j--)//遍历,找到最大数,下沉到尾端
		{
			if(arr[i] < arr[j]) 
			{ 
				t = arr[i];
				arr[i] = arr[j];
				arr[j] = t;
			}
		}
	}
}

void Distinct(int *arr, int *len)//去重
{
	int i;
	int count = 0;
	
	int *p1 = arr;
	int *p2 = arr;

	for (i = 0; i < *len; i++)
	{
		if (*p1 != *p2)
		{
			p1++;
			*p1 = *p2;
			count++;
			p2++;		
		}
		else
		{
			p2++;
		}	
	}

	printf ("去除重复数并按从小到大排序的结果为:");
	for (i = 0; i < count + 1; i++)
	{
		printf ("%d ", arr[i]);
	}
	
	printf ("\n");
}
	
	

**2、**测试结果
请输入任意一串数字:2 3 1 6 6 -1 -2 -1 -2 1 2 3 -6
去除重复数并按从小到大排序的结果为:-6 -2 -1 1 2 3 6

猜你喜欢

转载自blog.csdn.net/ypjsdtd/article/details/84705030