小白養成記 (4)------去重處理

第一個超過五十行的代碼~~~

小明隨機生成了n(n<10000)個0到999之間的整數,可能有重複的整數,請你幫他按從小到大輸出這些整數(忽略重複數字)。例如,假設n=8,小明隨機生成的8個數是:1 2 5 2 4 5 6 5 2,輸出結果爲:1 2 4 5 6

因爲要從小到大輸出,所以要先進行升序排序,再進行去重。

代碼如下:

用函數InputArr ( ) , SortArr ( ) , PrnArr ( ) 中的形參array來接收一個整型數組,用形參n來接收數組元素個數

#include<stdio.h>
#define N 10000
int InputArr(int array[],int n);
int SortArr(int array[],int n);
int PrnArr(int array[],int n);
int main()
{
	int n;
	int array[N];
	printf("請輸入數組元素個數:\n");
	scanf("%d",&n);
	InputArr(array,n);//輸入數組a的n個元素
	SortArr(array,n);  //將數組a的n個元素進行升序排序
	PrnArr(array,n);   //輸出數組a的n個元素 
	return 0;
}

下面依次進行輸入、排序、輸出:

(1)輸入:

int InputArr(int array[],int n)
{
	int i;
	printf("請輸入%d個整數:\n",n);
	for(i=0;i<n;i++)
	scanf("%d",&array[i]);
 } 

(2)升序排序:

定義兩個數爲array [ i ]、array [ j ];

因爲 i < j ,所以假設 j 最大爲 n,此時 i 爲 n-1;

所以i < n-1 ;j = i +1;

若i>j,則需將i與j換位,利用變量temp進行換位

int SortArr(int array[],int n)
 {
 	int i,j,temp;
 	for(i=0;i<n-1;i++)
 	{
 		for(j=i+1;j<n;j++)
 		{
 			if(array[i]>array[j])
 			{
 				temp=array[i];
 				array[i]=array[j];
 				array[j]=temp;
			 }
		 }
	 }
	 
 }

(3)輸出:

如果是第一位直接輸出;之後的每位需與前一位進行比較看是否相等,若是相等則不輸出;若不等纔可以輸出。

e.g. 輸入1,1,2,1   若是 array [ i ] == array [ i - 1]的情況下輸出array[ i ],則爲1,1,所以不等情況下輸出;

        

int PrnArr(int array[],int n)
 {
 	int i;
 	for(i=0;i<n;i++)
 	{
 		if(i==0)
 		printf("%d ",array[i]);
 		else if(array[i]!=array[i-1])
		 {
 			printf("%d ",array[i]);
		 }
	 }
    printf("\n");
 }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章