C程式設計——任意輸入一串數,去除其中重複的數並按從小到大的順序輸出
阿新 • • 發佈:2018-12-03
**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