一个是关于去除一个数组中的重复数问题:
如定义一个int型数组:{1,1,3,5,6,3,6,9};
要求写一个函数得到如下数据{1,3,5,6,9},即重复出现的数只保存第一次出现的那一个数据。
源代码如下:
代码
1
#include
<
stdio.h
>
2 #include < math.h >
3 void printArray( int array[], int n)
4 { // 打印数组
5 int i;
6 for (i = 0 ;i < n;i ++ )
7 {
8 printf( " %d, " ,array[i]);
9 }
10 }
11 void choiseSort( int a[], int n)
12 { /// /对数组进行排序(选择排序)--升序
13 int i,j,k,temp;
14 for (i = 0 ;i < n - 1 ;i ++ )
15 {
16 k = i;
17 for (j = i + 1 ;j < n;j ++ )
18 if (a[k] > a[j]) k = j;
19 if (i != k)
20 {
21 temp = a[i];
22 a[i] = a[k];
23 a[k] = temp;
24 }
25 }
26 }
27 void DealArray( int array[], int n)
28 { // 将重复元素都用(最小值-1)代替,作为重复数的标记
29 int i,j;
30 int f;
31 f = array[ 0 ] - 1 ;
32 for (i = 0 ;i < n;i ++ )
33 {
34 j = i + 1 ;
35 while (array[i] == array[j])
36 {
37 array[j] = f;
38 j ++ ;
39 }
40 continue ;
41 }
42 }
43 void ResultArray( int array[], int n)
44 { // 只打印出未被标记重复元素的元素,即为所求
45 int * p;
46 int f;
47 f = array[ 0 ] - 1 ;
48 for (p = array;p < array + n;p ++ )
49 {
50 if ( * p != f)
51 {
52 printf( " %d, " , * p);
53 }
54 }
55 }
56 main()
57 {
58 int array[ 13 ] = { 7 , 1 , 12 , 11 , 8 , 1 , 1 , 3 , 5 , 6 , 3 , 6 , 9 };
59 printArray(array, 13 );
60 printf( " \n " );
61 choiseSort(array, 13 );
62 printArray(array, 13 );
63 printf( " \n " );
64 DealArray(array, 13 );
65 printArray(array, 13 );
66 printf( " \n " );
67 ResultArray(array, 13 );
68 getch();
69 }
2 #include < math.h >
3 void printArray( int array[], int n)
4 { // 打印数组
5 int i;
6 for (i = 0 ;i < n;i ++ )
7 {
8 printf( " %d, " ,array[i]);
9 }
10 }
11 void choiseSort( int a[], int n)
12 { /// /对数组进行排序(选择排序)--升序
13 int i,j,k,temp;
14 for (i = 0 ;i < n - 1 ;i ++ )
15 {
16 k = i;
17 for (j = i + 1 ;j < n;j ++ )
18 if (a[k] > a[j]) k = j;
19 if (i != k)
20 {
21 temp = a[i];
22 a[i] = a[k];
23 a[k] = temp;
24 }
25 }
26 }
27 void DealArray( int array[], int n)
28 { // 将重复元素都用(最小值-1)代替,作为重复数的标记
29 int i,j;
30 int f;
31 f = array[ 0 ] - 1 ;
32 for (i = 0 ;i < n;i ++ )
33 {
34 j = i + 1 ;
35 while (array[i] == array[j])
36 {
37 array[j] = f;
38 j ++ ;
39 }
40 continue ;
41 }
42 }
43 void ResultArray( int array[], int n)
44 { // 只打印出未被标记重复元素的元素,即为所求
45 int * p;
46 int f;
47 f = array[ 0 ] - 1 ;
48 for (p = array;p < array + n;p ++ )
49 {
50 if ( * p != f)
51 {
52 printf( " %d, " , * p);
53 }
54 }
55 }
56 main()
57 {
58 int array[ 13 ] = { 7 , 1 , 12 , 11 , 8 , 1 , 1 , 3 , 5 , 6 , 3 , 6 , 9 };
59 printArray(array, 13 );
60 printf( " \n " );
61 choiseSort(array, 13 );
62 printArray(array, 13 );
63 printf( " \n " );
64 DealArray(array, 13 );
65 printArray(array, 13 );
66 printf( " \n " );
67 ResultArray(array, 13 );
68 getch();
69 }