01
程序
#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");
}
02
测试结果
请输入任意一串数字:2 3 1 6 6 -1 -2 -1 -2 1 2 3 -6
去除重复数并按从小到大排序的结果为:-6 -2 -1 1 2 3 6