1. 程式人生 > >編寫函式int stat(int a[],int n,int c[][2])

編寫函式int stat(int a[],int n,int c[][2])

#include <stdio.h>

#define N 16

int stat(int a[], int n, int c[][2])
{
int i = 0;
int j = 0;
int num = 0;
int count = 0;
int k = 0;
int b[10] = {0};

for (i = 0; i < n; i += 2)
{
b[i / 2] = a[i] * 10 + a[i + 1]; //將原始陣列的資料相鄰數結合組成新的陣列b
}

for (i = 0; i < n / 2; i++)
{
printf ("%d  ", b[i]); //列印b
}
printf ("\n");

for (i = 0; i < n / 2; i++)
{
for (j = 0; j < i; j++)
{
if (b[i] == b[j])
{
break;   //遍歷b尋找相同的數,找到第一個就退出
}
}
if (j == i)
{
c[num][0] = b[i]; //如果找到那麼就放到c中num行的第一個
for (k = 0; k < n / 2; k++)
{
if (b[k] == b[i])
{
count++;   //由於找到第一個就退出,所以需要尋找一共有幾個相同的數
}
}
c[num][1] = count; //放到c中num行的第二個
num++;
count = 0;
}
}

return num;
}

void PrintArr(int c[][2], int n) //列印二維陣列c
{
int i = 0;
int j = 0;

for (i = 0; i < n; i++)
{
for (j = 0; j < 2; j++)
{
printf ("%2d", c[i][j]);
}
printf ("time(s)");
printf ("\n");
}
}

int main()
{
int a[N] = {1,3,1,3,3,6,1,5,3,6,1,4,5,2,3,6}; //原始陣列
int c[10][2] = {0}; //存放結果的陣列
int count = 0; //有多少個數

count = stat(a, N, c);
PrintArr(c, count);

return 0;
}