第一個超過五十行的代碼~~~
小明隨機生成了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");
}