http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=288236384
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <Windows.h>
# define ROW 20
# define COL 2
// ========================================
typedef struct NumCout {
int arry[20][2];
}NumCount, *ptrCount;
// function ===============================
ptrCount Creat_node();
void Input_number(NumCount** param);
void Large_count(NumCount** param);
// ========================================
int main(void) {
ptrCount me_node = Creat_node();
Input_number(&me_node);
Large_count(&me_node);
free(me_node);
return 0;
} // end of main function
ptrCount Creat_node() {
ptrCount retNode = (ptrCount)malloc(sizeof(NumCount));
if (retNode == NULL) { ExitProcess(1); }
else {
// Initiallize
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
retNode->arry[i][j] = 0;
}
}
return retNode;
}
} // end of CreateNode function
void Input_number(NumCount** param) {
int i, j; // index
for (i = 0; i < ROW; i++) {
printf("%02d 번재 입력 : ", i + 1);
scanf("%d", (((*param)->arry + i) + 0));
}
for (i = 0; i < ROW; i++) {
for (j = 0; j < i; j++) {
if ((** param).arry[i][0] == (** param).arry[j][0]) {
++(** param).arry[i][1];
}
}
}
// test printf
//for (i = 0; i < ROW; i++) {
// printf("numBer : %d count : %d \n", (** param).arry[i][0], (** param).arry[i][1]);
//}
} // end of Input_number function
void Large_count(NumCount** param) {
int target_number = 0;
int freq_number = 0;
int i; // index
for (i = 0; i < ROW; i++) {
if (i == 0) {
target_number = (** param).arry[i][0];
freq_number = (** param).arry[i][1];
}
else { // i > 0
if (freq_number < (** param).arry[i][1]) {
target_number = (** param).arry[i][0];
freq_number = (** param).arry[i][1];
}
}
} // end for
printf("number : %d freq_number : %d\n", target_number, freq_number+1);
} // end of Large_count function