네이버 지식인 내가 답변준 문제
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 |