1. 程式人生 > >C程式設計——任意輸入一串數,去除其中重複的數並按從小到大的順序輸出

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