1번문제

# include <stdio.h>

# include <string.h>

# include <stdlib.h>

# define MAX_STRING_LEN 200

# define LEN 17

typedef struct HexStruct {

char* s;

char hexNumBer[200];

int count[LEN];

}HexStruct, *ptrHexStruct;


// function prototype

ptrHexStruct createNode(); //[1]

void WriteHexNumber(HexStruct** param); //[2]

void alphaCountNumBer(HexStruct** param); //[3]

void countPrintf(HexStruct** param); //[4]

int main(void) {

ptrHexStruct hexNode = createNode();

if (hexNode == NULL) { exit(1); }

else { // hexNode != NULL

// Initiallize

hexNode->s = "0123456789abcdef";

strcpy(hexNode->hexNumBer, "\0");

for (int i = 0; i < LEN; i++) {

hexNode->count[i] = 0; // 0 으로 초기화

}

}

//

WriteHexNumber(&hexNode);

alphaCountNumBer(&hexNode);

countPrintf(&hexNode);

free(hexNode);

return 0;

} // end of main function

//[1] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ptrHexStruct createNode() {

ptrHexStruct node = (ptrHexStruct)malloc(sizeof(HexStruct));

return node;

} // end of createNode function

//[2] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void WriteHexNumber(HexStruct** param) {

printf("입력: ");

fgets((*param)->hexNumBer, MAX_STRING_LEN, stdin);

} // end of WriteHexNumber function

//[3] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void alphaCountNumBer(HexStruct** param) {

for (int i = 0; i < strlen((*param)->hexNumBer); i++) {

for (int j = 0; j < strlen((*param)->s); j++) {

// "0123456789ABCDEF"

if ((*param)->hexNumBer[i] == (*param)->s[j]) {

(*param)->count[j]++;

break;

}

}

}

} // end of alphaCountNumBer function

//[4] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void countPrintf(HexStruct** param) {

printf("출력: ");

for (int i = 0; i < strlen((*param)->s); i++) {

if ((*param)->count[i] != 0) {

printf("%c: %d ", (*param)->s[i], (*param)->count[i]);

if (i < strlen((*param)->s) - 2) {

printf(",");

}

}

} printf("\n");

}



2번문제

# include <stdio.h>

# include <string.h>

# include <stdlib.h>

# include <stdbool.h>

# define LEN 8

typedef struct numBer {

char decimalNumber[8];

int checkPoint;

}numBer, *ptrNumBer;


// function prototype

ptrNumBer createNode(); // => [1]

void numBerWrite(numBer** param); // => [2]

void sortSmallNumber(numBer** param); // => [3]

void checkFunc(numBer** param); // => [4]

void exchangeFunc(numBer** param); // => [5] 

void dataPrintf(numBer** param); // => [6]

int main(void) {

ptrNumBer numDec = createNode();

if (numDec == NULL) { exit(1); }

else {

// numDec != NULL

strcpy(numDec->decimalNumber, "\0");

}

//

numBerWrite(&numDec); // 숫자 입력

sortSmallNumber(&numDec); // 버블 정렬

checkFunc(&numDec);

if (numDec->checkPoint) {

exchangeFunc(&numDec);

}

dataPrintf(&numDec);

free(numDec);

return 0;

} // end of main function


ptrNumBer createNode() {

ptrNumBer retNode = (ptrNumBer)malloc(sizeof(numBer));

return retNode;

} // end of createNode function


void numBerWrite(numBer** param) {

printf("입력: ");

fgets((** param).decimalNumber, LEN, stdin);

} // end of numBerWrtie function


void sortSmallNumber(numBer** param) {

// bubble sort

int result;

char temp = 0;

for (int i = 0; i < strlen((**param).decimalNumber) - 1; i++) {

result = false;

for (int j = 0; j < strlen((**param).decimalNumber) - 1; j++) {

if ((**param).decimalNumber[j] > (**param).decimalNumber[j+1]) {

temp = (**param).decimalNumber[j];

(**param).decimalNumber[j] = (**param).decimalNumber[j + 1];

(**param).decimalNumber[j + 1] = temp;

result = true;

}

}

if (result == false) {

break;

}

}

// printf("%s \n", (**param).decimalNumber);

} // end of sortSmallNumber function


void checkFunc(numBer** param) {

if ((** param).decimalNumber[0] == '0') {

(*param)->checkPoint = true;

}

else {

// (** param).decimalNumber[0] != '0'

(*param)->checkPoint = false;

}

} // end of checkFunc function


void exchangeFunc(numBer** param) {

char temp;

for (int i = 1; i < strlen((**param).decimalNumber); i++) {

if ((**param).decimalNumber[i] != '0') {

temp = (**param).decimalNumber[i];

(**param).decimalNumber[0] = temp;

(**param).decimalNumber[i] = '0';

break;

}

}

} // end of exchangeFunc function


void dataPrintf(numBer** param) {

printf("%s \n", (** param).decimalNumber);

} // end of dataPrintf function

'언어 > c언어' 카테고리의 다른 글

c언어 문제 lavida  (0) 2017.10.02
c언어 URL  (0) 2017.10.02
escape 문자열  (0) 2017.09.16
네이버 문제  (0) 2017.09.16
c언어 3의 배수의 합만 출력  (0) 2017.08.26