c언어 linkedlist
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
typedef struct node_{
char cData;
struct node_* nodeNext;
} node_;
typedef struct {
node_* head;
node_* tail;
}linkedlist;
linkedlist* createNode();
void init(linkedlist**);
void dataInsrt(linkedlist**, char*);
void dataPrint(linkedlist**);
void firstNodeRemove(linkedlist**);
void lastNodeRemove(linkedlist**);
void memoryFree(linkedlist**);
//void memoryFree(node_*);
int main(void) {
linkedlist* node = NULL;
char nodeString[] = "ABCDEFGC";
node = createNode();
init(&node);
dataInsrt(&node, nodeString);
dataPrint(&node);
//memoryFree(node->head->nodeNext);
firstNodeRemove(&node);
dataPrint(&node);
lastNodeRemove(&node);
dataPrint(&node);
memoryFree(&node);
return 0;
} // end of main function
linkedlist* createNode() {
linkedlist* createNode = NULL;
createNode = (linkedlist*)malloc(sizeof(linkedlist));
if (createNode == NULL) {
exit(1);
}
else {
createNode->head = NULL;
createNode->tail = NULL;
}
return createNode;
} // end of createNode function
void init(linkedlist** param) {
(**param).head = (node_*)malloc(sizeof(node_));
(**param).tail = (node_*)malloc(sizeof(node_));
if ((**param).head == NULL || (**param).tail == NULL) {
exit(1);
}
else {
(**param).head->cData = ' ';
(**param).head->nodeNext = NULL;
(**param).tail->cData = ' ';
(**param).tail->nodeNext = NULL;
}
} // end of init function
void dataInsrt(linkedlist** param, char* cData) {
for (unsigned int i = 0; i < strlen(cData); i++) {
node_* createNode = NULL;
createNode = (node_*)malloc(sizeof(node_));
if (createNode != NULL) {
createNode->cData = *(cData + i);
createNode->nodeNext = NULL;
if ((**param).head->nodeNext == NULL && (**param).tail->nodeNext == NULL) {
(**param).head->nodeNext = createNode;
(**param).tail->nodeNext = createNode;
}
else {
(**param).tail->nodeNext->nodeNext = createNode;
(**param).tail->nodeNext = createNode;
}
}
}
} // end of dataInsrt function
void dataPrint(linkedlist** param) {
node_* indexNode = NULL;
// 데이터가 한개도 없는 경우
if ((**param).head->nodeNext != NULL && (**param).tail->nodeNext != NULL) {
indexNode = (**param).head->nodeNext;
while (indexNode != NULL) {
printf("%c [%p]", indexNode->cData, indexNode);
if (indexNode->nodeNext != NULL) {
printf(" -> ");
}
// 노드 이동
indexNode = indexNode->nodeNext;
}
printf("\n");
}
} // end of dataPrint function
/*
void memoryFree(node_* param) {
// c언어는 java 처럼 가비지 컬렉터가 따로 동작하는 구조가 아니기 때문에
// 메모리 해제를 반드시 해야 한다.
// 재귀함수를 사용하여 메모리 해제를 시도한다.
if (param == NULL) {
return;
}
else {
node_* rmNode = NULL;
node_* mvNode = NULL;
printf("해제 시킬 메모리 주소 : %p\n", param);
rmNode = param;
mvNode = param->nodeNext;
free(rmNode);
memoryFree(mvNode);
}
}*/
void firstNodeRemove(linkedlist** param) {
node_* rmNode = NULL;
if ( (**param).head->nodeNext != NULL && (**param).tail->nodeNext != NULL ) {
rmNode = (**param).head->nodeNext;
(**param).head->nodeNext = rmNode->nodeNext;
free(rmNode);
// 데이터가 한개 인 경우
if ( (**param).head->nodeNext == (**param).tail->nodeNext ) {
(**param).tail->nodeNext = NULL;
}
}
} // end of firstNodeRemove function
void lastNodeRemove(linkedlist** param) {
node_* rmNode = NULL;
node_* indxNode = NULL;
if ( (**param).head->nodeNext != NULL && (**param).tail->nodeNext != NULL ) {
// 데이터가 한개 인 경우
if ( (**param).head->nodeNext == (**param).tail->nodeNext ) {
rmNode = (**param).head->nodeNext;
(**param).head->nodeNext = NULL;
(**param).tail->nodeNext = NULL;
free(rmNode);
}
else {
indxNode = (**param).head->nodeNext;
while (indxNode->nodeNext->nodeNext != NULL) {
indxNode = indxNode->nodeNext;
}
indxNode->nodeNext = NULL;
(**param).tail->nodeNext = indxNode;
rmNode = indxNode->nodeNext;
free(rmNode);
}
}
} // end of lastNodeRemove function
void memoryFree(linkedlist** param) {
node_* rmNode = NULL;
node_* indxNode = NULL;
if ( (**param).head->nodeNext != NULL && (**param).tail->nodeNext != NULL ) {
// 데이터가 한개 인 경우
if ( (**param).head->nodeNext == (**param).tail->nodeNext ) {
lastNodeRemove(param);
}
else {
indxNode = (**param).head->nodeNext;
(**param).head->nodeNext = NULL;
while (indxNode->nodeNext != NULL) {
rmNode = indxNode;
indxNode = indxNode->nodeNext;
free(rmNode);
}
(**param).tail->nodeNext = NULL;
}
}
free( (**param).head );
free( (**param).tail );
}
'언어 > c언어' 카테고리의 다른 글
네이버 풀이 (0) | 2019.05.18 |
---|---|
c언어 네이버 풀이 중첩 for문을 사용해서 3을 입력하면 (0) | 2019.05.06 |
네이버 풀이 (0) | 2018.12.01 |
네이버 문제 풀이 - 최대공약수 (0) | 2018.11.28 |
네이버 지식이 풀이 (0) | 2018.11.28 |
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=327353769&mode=answer
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
# define ERROR_ 1
typedef struct Triangle
{
double bottomLine; // 밑변
double heightLine; // 높이
double longLine;
}Tri;
// 동적할당 및 데이터 초기화 ___________
void _init_(Tri** tparam);
// 메모리 해제 ________________________
void _memoryFree_(Tri** tparam);
// 밑변, 높이 입력_____________________
void _numberInput_(Tri** tparam);
// 빗변의 길이 출력____________________
void _longLinePrintf_(Tri** tparam);
int main(void)
{
Tri* tnode = NULL;
_init_(&tnode);
_numberInput_(&tnode);
_longLinePrintf_(&tnode);
_memoryFree_(&tnode);
return 0;
} // end of main function
// 동적할당 및 데이터 초기화 ___________
void _init_(Tri** tparam)
{
(*tparam) = (Tri*)malloc(sizeof(Tri));
if ((*tparam) == NULL)
{
printf("malloc error");
exit(ERROR_);
}
else // (*tparam) != NULL
{
(*tparam)->bottomLine = 0.0;
(*tparam)->heightLine = 0.0;
(*tparam)->longLine = 0.0;
}
} // end of _init_ function
// 메모리 해제 ________________________
void _memoryFree_(Tri** tparam)
{
free((*tparam));
} // end of _memoryFree_ function
// 밑변, 높이 입력_____________________
void _numberInput_(Tri** tparam)
{
printf("밑변? ");
scanf_s("%lf", &(**tparam).bottomLine);
printf("높이? ");
scanf_s("%lf", &(**tparam).heightLine);
}
// 빗변의 길이 출력____________________
void _longLinePrintf_(Tri** tparam)
{
double c =
((**tparam).bottomLine * (**tparam).bottomLine) +
((**tparam).heightLine * (**tparam).heightLine);
(** tparam).longLine = sqrt(c);
printf("빗변의 길이: %lf\n", (** tparam).longLine);
}
'언어 > c언어' 카테고리의 다른 글
c언어 linkedlist (0) | 2019.12.31 |
---|---|
c언어 네이버 풀이 중첩 for문을 사용해서 3을 입력하면 (0) | 2019.05.06 |
네이버 풀이 (0) | 2018.12.01 |
네이버 문제 풀이 - 최대공약수 (0) | 2018.11.28 |
네이버 지식이 풀이 (0) | 2018.11.28 |
c언어 네이버 풀이 중첩 for문을 사용해서 3을 입력하면

# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# define LENGTH 200
typedef struct Num {
char numList[LENGTH];
int n;
}Num, *ptrNum;
ptrNum retNode();
void init(Num**);
void writeNumber(Num**);
void testPrintf(Num**);
void resultPrintf(Num**);
int main(void) {
ptrNum pnode = retNode();
if (pnode == NULL) { exit(1); }
// 데이터 초기화
init(&pnode);
// 데이터 입력
writeNumber(&pnode);
// 테스트 출력
//testPrintf(&pnode);
// 결과 출력
resultPrintf(&pnode);
free(pnode);
return 0;
}
ptrNum retNode() {
ptrNum pnode = NULL;
pnode = (ptrNum)malloc(sizeof(Num));
return pnode;
} // end of retNode function
void init(Num** param) {
strcpy_s((*param)->numList, LENGTH ,"\0");
(*param)->n = 0x0;
} // end of init function
void writeNumber(Num** param) {
int num = 0;
int j = 0;
int i;
scanf_s("%d", &(*param)->n);
for (i = (*param)->n; i >= 1; i--, j++) {
*((*param)->numList + j) = i + '0';
}
*((*param)->numList + j) = '\0';
} // end of writeNumber function
void testPrintf(Num** param) {
printf("%s\n", (*param)->numList);
} // end of testPrintf function
void resultPrintf(Num** param) {
int i, j;
for (i = 0; i < (*param)->n; i++) {
for (j = 0; j <= i; j++) {
printf("%c", *((*param)->numList + j));
}
printf("\n");
}
} // end of resultPrintf function
'언어 > c언어' 카테고리의 다른 글
c언어 linkedlist (0) | 2019.12.31 |
---|---|
네이버 풀이 (0) | 2019.05.18 |
네이버 풀이 (0) | 2018.12.01 |
네이버 문제 풀이 - 최대공약수 (0) | 2018.11.28 |
네이버 지식이 풀이 (0) | 2018.11.28 |
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=315609430
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
// =====================
typedef struct {
unsigned int size;
int** mat;
}Matrix;
// =====================
void _init_(Matrix* param); // func (1)
void dataInsert(Matrix* param); // func (2)
void exchangeMat(Matrix* param); // func (3)
void dataPrintf(Matrix* param); // func (4)
// =====================
int main(void) { // Main function
Matrix node;
_init_(&node);
dataInsert(&node);
printf("before \n");
dataPrintf(&node);
exchangeMat(&node);
printf("after \n");
dataPrintf(&node);
return 0;
} // end of main function
// =====================
void _init_(Matrix* param) { // func (1)
unsigned int i, j; // index
param->mat = NULL;
param->size = 0;
scanf("%d", ¶m->size);
param->mat = (int**)malloc(sizeof(int)*param->size);
for (i = 0x0; i < param->size; i++) {
*(param->mat + i) = (int*)malloc(sizeof(int)*param->size);
}
// 배열 초기화
for (i = 0x0; i < param->size; i++) {
for (j = 0x0; j < param->size; j++) {
(param)->mat[i][j] = 0x0;
}
}
} // end of _init_ function
// =====================
void dataInsert(Matrix* param) { // func (2)
srand((unsigned)time(NULL));
unsigned int i, j; // index
for (i = 0x0; i < param->size; i++) {
for (j = 0x0; j < param->size; j++) {
(param)->mat[i][j] = rand() % 30 + 1; // 1, 2, 3, ..., 30
}
}
} // end of dataInsert function
// =====================
void exchangeMat(Matrix* param) { // func (3)
unsigned int i, j; // index
int tmp = 0x0;
unsigned int r = 0;
for (i = 0x0; i < param->size; i++) {
for (j = r; j < param->size; j++) {
if (i != j) {
tmp = (param)->mat[i][j];
(param)->mat[i][j] = (param)->mat[j][i];
(param)->mat[j][i] = tmp;
} // endif
} // endfor
r++;
} // endfor
} // end of exchangeMat function
// =====================
void dataPrintf(Matrix* param) { // func (4)
unsigned int i, j; // index
for (i = 0x0; i < param->size; i++) {
for (j = 0x0; j < param->size; j++) {
printf("%02d", param->mat[i][j]);
if (j != param->size - 1) {
printf(" ");
}
else {
printf("\n");
}
} // endfor
} // endfor
} // end of dataPrintf function
'언어 > c언어' 카테고리의 다른 글
네이버 풀이 (0) | 2019.05.18 |
---|---|
c언어 네이버 풀이 중첩 for문을 사용해서 3을 입력하면 (0) | 2019.05.06 |
네이버 문제 풀이 - 최대공약수 (0) | 2018.11.28 |
네이버 지식이 풀이 (0) | 2018.11.28 |
더블릿 문제 (0) | 2018.11.27 |
네이버 문제 풀이 - 최대공약수
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=315414192
# include <stdio.h>
# include <stdlib.h>
typedef struct {
int numOne;
int numTwo;
int numGcd; // 최대공약수
}NUM;
// 함수 원형 ====================================
void _init_(NUM* P); // func (1)
void stepOne(NUM* P); // func (2)
// =============================================
int main(void) { // main function
NUM node;
_init_(&node); // 초기화
stepOne(&node);
return 0;
} // end of main function
// =============================================
void _init_(NUM* P) { // func (1)
P->numOne = 0X0;
P->numTwo = 0X0;
P->numGcd = 0X0;
} // end of _init_ function
// =============================================
void stepOne(NUM* P) { // func (2)
int tmpLarge = 0x0;
int tmpSmall = 0x0;
int tmp = 0x0;
int tmpQ = 0x0; // 몫
int tmpR = 0x0; // 나머지
while (1) {
scanf("%d %d", &P->numOne, &P->numTwo);
if (P->numOne == 0 || P->numTwo == 0) {
exit(1);
}
else {
// P->numOne != 0 && P->numTwo != 0
if (P->numOne < 0 || P->numTwo < 0) {
exit(1);
}
else {
//P->numOne > 0 && P->numTwo > 0
tmpLarge = P->numOne;
tmpSmall = P->numTwo;
if (tmpLarge == tmpSmall) {
P->numGcd = tmpLarge;
}
else { // tmpLarge != tmpSmall
if (tmpLarge < tmpSmall) {
tmp = tmpLarge;
tmpLarge = tmpSmall;
tmpSmall = tmp;
}
else {
// tmpLarge > tmpSmall
if (tmpSmall == 1) {
P->numGcd = 1;
}
else {
// tmpSmall != 1
while (1) { // 유클리드 호제법
tmpR = tmpLarge % tmpSmall;
if (tmpR == 0) { break; }
tmpLarge = tmpSmall;
tmpSmall = tmpR;
} // end while
P->numGcd = tmpSmall;
} // end else
} // end else
} // end else
} // end else
printf("%d와 %d의 최대공약수(Greatest Common Diviosr) : %d \n", P->numOne, P->numTwo, P->numGcd);
} // end else
} // end while
} // end of stepOne function
'언어 > c언어' 카테고리의 다른 글
c언어 네이버 풀이 중첩 for문을 사용해서 3을 입력하면 (0) | 2019.05.06 |
---|---|
네이버 풀이 (0) | 2018.12.01 |
네이버 지식이 풀이 (0) | 2018.11.28 |
더블릿 문제 (0) | 2018.11.27 |
네이버 지식인 풀이 (c) (0) | 2018.11.24 |
네이버 지식이 풀이
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=315375786&page=1#answer2
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
typedef struct {
int* ArrOne;
int* ArrTwo;
int* ArrThree;
int* TestArray;
int size;
int subSize;
}Total;
// ______________________________________________
void _init_(Total* param); // func (1)
void numBerInput(Total* param); // func (2)
void arraySetting(Total* param); // func (3)
void arrayOne(Total* param); // func (4)
void arrayTwo(Total* param); // func (5)
void arrayThree(Total* param); // func (6)
// ______________________________________________
int main(void) {
Total tnode;
_init_(&tnode); // 데이터 초기화
numBerInput(&tnode);
arraySetting(&tnode);
arrayOne(&tnode);
arrayTwo(&tnode);
arrayThree(&tnode);
// 메모리 해제
free(tnode.ArrOne);
free(tnode.ArrTwo);
free(tnode.ArrThree);
free(tnode.TestArray);
return 0;
} // end of main function
// ______________________________________________
void _init_(Total* param) { // func (1)
param->ArrOne = NULL; // 홀수
param->ArrTwo = NULL;
param->ArrThree = NULL;
param->TestArray = NULL;
param->size = 0x0;
param->subSize = 0x0;
} // end of _init_ function
// ______________________________________________
void numBerInput(Total* param) { // func (2)
int i; // index
printf("숫자 입력 : ");
scanf("%d", ¶m->size);
param->TestArray = (int*)malloc(sizeof(int)*param->size);
if (param->TestArray == NULL) {
printf("memorry allocation fail\n");
exit(1);
}
// 데이터 초기화
memset(param->TestArray, 0, sizeof(int)*param->size);
for (i = 0; i < param->size; i++) {
param->TestArray[i] = i + 1;
}
} // end of numBerInput function
// ______________________________________________
void arraySetting(Total* param) { // func (3)
if (param->size % 2 == 0) { param->subSize = param->size / 2; }
else {
param->subSize = (param->size / 2) + 1;
}
param->ArrOne = (int*)malloc(sizeof(int)*param->subSize);
param->ArrTwo = (int*)malloc(sizeof(int)*param->subSize);
param->ArrThree = (int*)malloc(sizeof(int)*param->subSize);
if (param->ArrOne == NULL || param->ArrTwo == NULL || param->ArrThree == NULL) {
printf("memorry allocation fail\n");
free(param->TestArray);
exit(1);
}
// 데이터 초기화
memset(param->ArrOne, 0, sizeof(int)*param->subSize);
memset(param->ArrTwo, 0, sizeof(int)*param->subSize);
memset(param->ArrThree, 0, sizeof(int)*param->subSize);
} // end of arrayOneSetting function
// ______________________________________________
void arrayOne(Total* param) { // func (4)
int i;
int num = 1;
for (i = 0; i < param->subSize; i++, num += 2) {
param->ArrOne[i] = num;
}
//
printf("배열1 = {");
for (i = 0; i < param->subSize; i++) {
printf("%d", param->ArrOne[i]);
if (i != param->subSize - 1) { printf(","); }
else {
printf("}\n");
}
}
} // end of arrayOne function
// ______________________________________________
void arrayTwo(Total* param) { // func (5)
srand((unsigned)time(NULL));
int* tmpArr = NULL;
int i, j;
int choice = 0x0;
int num = 1;
int t = param->subSize;
// 동적할당
tmpArr = (int*)malloc(sizeof(int)*t);
// 동적할당 실패시
if (tmpArr == NULL) {
printf("memorry allocation fail !!\n");
free(param->ArrOne);
free(param->ArrTwo);
free(param->ArrThree);
free(param->TestArray);
exit(1);
}
// 동적할당 성공시
// 데이터 0으로 초기화
memset(tmpArr, 0, sizeof(int)*param->subSize);
// 데이터 입력 : ex) 1, 3, 5, 7, 9
for (i = 0; i < param->subSize; i++, num += 2) {
tmpArr[i] = num;
}
// 랜덤으로 값 입력
for (i = 0; i < param->subSize; i++) {
choice = rand() % t;
param->ArrTwo[i] = tmpArr[choice];
if (choice != t - 1) {
for (j = choice; j < t - 1; j++) {
tmpArr[j] = tmpArr[j+1];
}
}
--t;
}
printf("배열2 = {");
for (i = 0; i < param->subSize; i++) {
printf("%d", param->ArrTwo[i]);
if (i != param->subSize - 1) { printf(","); }
else {
printf("}\n");
}
}
// 메모리 해제
free(tmpArr);
} // end of arrayTwo function
// ______________________________________________
void arrayThree(Total* param) {
srand((unsigned)time(NULL));
int* tmpArr = NULL;
int i, j;
int choice = 0x0;
int num = 2;
int t = param->subSize;
// 동적할당
tmpArr = (int*)malloc(sizeof(int)*t);
// 동적할당 실패시
if (tmpArr == NULL) {
printf("memorry allocation fail !!\n");
free(param->ArrOne);
free(param->ArrTwo);
free(param->ArrThree);
free(param->TestArray);
exit(1);
}
// 동적할당 성공시
// 데이터 0으로 초기화
memset(tmpArr, 0, sizeof(int)*param->subSize);
// 데이터 입력 : ex) 1, 3, 5, 7, 9
for (i = 0; i < param->subSize; i++, num += 2) {
tmpArr[i] = num;
}
// 랜덤으로 값 입력
for (i = 0; i < param->subSize; i++) {
choice = rand() % t;
param->ArrThree[i] = tmpArr[choice];
if (choice != t - 1) {
for (j = choice; j < t - 1; j++) {
tmpArr[j] = tmpArr[j + 1];
}
}
--t;
}
printf("배열3 = {");
for (i = 0; i < param->subSize; i++) {
printf("%d", param->ArrThree[i]);
if (i != param->subSize - 1) { printf(","); }
else {
printf("}\n");
}
}
// 메모리 해제
free(tmpArr);
} // end of arrayThree function
'언어 > c언어' 카테고리의 다른 글
네이버 풀이 (0) | 2018.12.01 |
---|---|
네이버 문제 풀이 - 최대공약수 (0) | 2018.11.28 |
더블릿 문제 (0) | 2018.11.27 |
네이버 지식인 풀이 (c) (0) | 2018.11.24 |
네이버 지식인 풀이 (0) | 2018.11.22 |
http://59.23.150.58/30stair/sc/sc.php?pname=sc
# include <stdio.h>
# include <stdlib.h>
// ===============================
typedef struct node {
int element;
struct node* link;
}node, *pNode;
// ===============================
typedef struct linkedlist {
pNode headNode;
pNode tailNode;
int count;
}linkedlist, *pLinkedlist;
// ===============================
void // func (1)
_init_(linkedlist** param);
void // func (2)
_check_(linkedlist** param);
void // func (3)
_score_(linkedlist** param);
// ===============================
int
main(void) {
int nNumber = 0x0;
pLinkedlist sNode = NULL;
pNode newInsrt = NULL;
sNode = (pLinkedlist)malloc(sizeof(linkedlist));
if (sNode == NULL) { exit(1); }
_init_(&sNode); // [데이터 초기화]
for (;;) {
scanf("%d", &nNumber);
if (nNumber == -1) { break; }
else { // nNumber != -1
newInsrt = (pNode)malloc(sizeof(node));
if (newInsrt == NULL) { exit(1); }
newInsrt->element = nNumber;
newInsrt->link = NULL;
if (sNode->count == 0) {
sNode->headNode->link = newInsrt;
sNode->tailNode->link = newInsrt;
sNode->count += 1;
}
else {
sNode->tailNode->link->link = newInsrt;
sNode->tailNode->link = newInsrt;
sNode->count += 1;
}
newInsrt = NULL;
}
}
//_check_(&sNode)
_score_(&sNode);
free(sNode);
return 0;
} // end of main function
// ===============================
void // func (1)
_init_(linkedlist** param) {
(*param)->headNode = NULL;
(*param)->tailNode = NULL;
(*param)->headNode = (pNode)malloc(sizeof(node));
(*param)->tailNode = (pNode)malloc(sizeof(node));
(*param)->count = 0x0;
if ((*param)->headNode == NULL || (*param)->tailNode == NULL) { exit(1); }
else {
// headNode
(*param)->headNode->element = 0x0;
(*param)->headNode->link = NULL;
// tailNode
(*param)->tailNode->element = 0x0;
(*param)->tailNode->link = NULL;
}
} // end of _init_ function
// ===============================
void // func (2)
_check_(linkedlist** param) {
pNode tmpIndx = NULL;
int i;
if ((*param)->count == 0) { printf("출력할 데이터가 없습니다.\n"); }
else {
// (*param)->count != 0
tmpIndx = (*param)->headNode;
for (i = 0; i < (*param)->count; i++) {
tmpIndx = tmpIndx->link;
printf("%d\n", tmpIndx->element);
}
}
} // end of _check_ function
// ===============================
void // func (3)
_score_(linkedlist** param) {
/*
A : 90 ~ 100
B : 80 ~ 89
C : 70 ~ 79
D : 60 ~ 69
F : 그 외
*/
pNode tmpIndx = NULL;
int i;
int A_score = 0x0;
int B_score = 0x0;
int C_score = 0x0;
int D_score = 0x0;
int F_score = 0x0;
if ((*param)->count == 0) { printf("출력할 데이터가 없습니다.\n"); }
else {
// (*param)->count != 0
printf("%d\n", (*param)->count);
tmpIndx = (*param)->headNode;
for (i = 0; i < (*param)->count; i++) {
tmpIndx = tmpIndx->link;
//printf("%d\n", tmpIndx->element);
switch (tmpIndx->element/10) {
case 10:
case 9:
++A_score; break;
case 8:
++B_score; break;
case 7:
++C_score; break;
case 6:
++D_score; break;
default:
++F_score; break;
}
}
printf("%d\n", A_score);
printf("%d\n", B_score);
printf("%d\n", C_score);
printf("%d\n", D_score);
printf("%d\n", F_score);
}
} // end of _score_ function
'언어 > c언어' 카테고리의 다른 글
네이버 문제 풀이 - 최대공약수 (0) | 2018.11.28 |
---|---|
네이버 지식이 풀이 (0) | 2018.11.28 |
네이버 지식인 풀이 (c) (0) | 2018.11.24 |
네이버 지식인 풀이 (0) | 2018.11.22 |
네이버 풀이 (0) | 2018.11.19 |
네이버 지식인 풀이 (c)
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=315104628
# include <stdio.h>
// function prototype
unsigned int power(int m, int n); // m^n 을 계산
void prn_heading(void); //거듭제곱 표의 제목을 출력
void prn_tbl_powers(int n);
int main(void) {
prn_heading();
prn_tbl_powers(7);
return 0;
} // end of main function
unsigned int power(int m, int n) {
int i;
if (n == 1) {
return m;
}
else {
return m*power(m, n-1);
}
} // end of power function
void prn_heading(void) {
printf("\t\t=========== 거듭제곱표 ============\n\n");
} // end of prn_heading function
void prn_tbl_powers(int n) {
int i, j;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
printf("%9d",power(i, j));
}printf("\n");
}printf("\n");
} // end of prn_tbl_powers function
'언어 > c언어' 카테고리의 다른 글
네이버 지식이 풀이 (0) | 2018.11.28 |
---|---|
더블릿 문제 (0) | 2018.11.27 |
네이버 지식인 풀이 (0) | 2018.11.22 |
네이버 풀이 (0) | 2018.11.19 |
더블릿 풀이 c언어 pie 문제 (0) | 2018.11.18 |
네이버 지식인 풀이
# include <stdio.h>
# include <string.h>
# define LEN 30
//=======================
typedef struct {
char strValue[LEN];
}NAVER;
//=======================
void _init_(NAVER* p); // func (1)
void _menu_(); // func (2)
void toupper(char[]); // func (3)
void tolower(char[]); // func (4)
//=======================
int main(void) { // MAIN FUNCTION
NAVER sNode;
int choice;
_init_(&sNode);
while (1) {
rewind(stdin);
printf("문자열을 입력하시오 : ");
gets(sNode.strValue);
_menu_(); // function call
printf("번호를 선택하시오. >> ");
scanf("%d", &choice);
switch (choice) {
case 1: toupper(sNode.strValue); break; // 대문자로 변환
case 2: tolower(sNode.strValue); break; // 소문자로 변환
case 0: goto END_;
}
} // endWhile
END_:
printf("문자열 변환 프로그램을 종료합니다.\n");
return 0;
} // END OF MAIN FUNCTION
//=======================
void _init_(NAVER* p) { // func (1)
strcpy(p->strValue, "\0");
} // END OF _INIT_ FUNCTION
//=======================
void _menu_() { // func (2)
printf("1. 대문자로 변환 \n");
printf("2. 소문자로 변환 \n");
printf("3. 프로그램 종료 \n");
printf("\n\n");
} // END OF _menu_ FUNCTION
//=======================
void toupper(char p[]) { // func (3)
// 소문자를 대문자로 변환
// ASCII (a:97/ A:65)
int i; // index
printf("변환된 문자열 : ");
for (i = 0; i < strlen(p); i++) {
if (p[i] >= (int)'a' && p[i] <= (int)'z') {
p[i] = (char)((int)p[i] - 32);
}
} // endfor
printf("%s\n", p);
} // END OF FromLowerToUpper FUNCTION
//=======================
void FromUpperToLower(char p[]) {
// 대문자를 소문자로 변환
int i; // index
printf("변환된 문자열 : ");
for (i = 0; i < strlen(p); i++) {
if (p[i] >= (int)'A' && p[i] <= (int)'Z') {
p[i] = (char)((int)p[i] + 32);
}
} // endfor
printf("%s\n", p);
} // END OF FromUpperToLower FUNCTION
'언어 > c언어' 카테고리의 다른 글
더블릿 문제 (0) | 2018.11.27 |
---|---|
네이버 지식인 풀이 (c) (0) | 2018.11.24 |
네이버 풀이 (0) | 2018.11.19 |
더블릿 풀이 c언어 pie 문제 (0) | 2018.11.18 |
선택정렬 (0) | 2018.11.18 |
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=314753552&page=1#answer1
# include <stdio.h>
typedef struct {
char target_chr;
int cunt;
}STU, *pSTU;
// ===========================
void init(pSTU param); // func (1)
void dataInsert(pSTU param); // func (2)
void resultPrintf(pSTU param); // func (3)
// ===========================
int main(void) { // main function
STU node;
init(&node);
dataInsert(&node);
resultPrintf(&node);
return 0;
} // end of main function
// ===========================
void init(pSTU param) { // func (1)
// 데이터 초기화
param->cunt = 0x0;
param->target_chr = '\0';
} // end of init function
// ===========================
void dataInsert(pSTU param) { // func (2)
printf("문자 입력 : ");
scanf("%c", ¶m->target_chr);
printf("갯수 입력 : ");
scanf("%d", ¶m->cunt);
} // end of dataInsert function
// ===========================
void resultPrintf(pSTU param) { // func (3)
int i;
for (i = 0; i < param->cunt; i++) {
printf("%c", param->target_chr);
if (i != param->cunt - 1) {
printf(" ");
}
}
printf("\n");
} // end of resultPrintf function
// ===========================
# include <stdio.h>
typedef struct {
double d; // 밑변
double h; // 높이
double triangle_area;
}Triangle;
double f3(double, double);
int main(void) {
Triangle node;
// ==================================
node.d = 0.; // 초기화
node.h = 0.; // 초기화
node.triangle_area = 0.; // 초기화
// ==================================
printf("밑변 : ");
scanf("%lf", &node.d);
printf("높이 : ");
scanf("%lf", &node.h);
node.triangle_area = f3(node.d, node.h);
printf("삼각형 넓이 : %.2lf\n", node.triangle_area);
return 0;
} // end of main function
double f3(double d, double h) {
// 삼각형 넓이 : 밑변 x 높이 % 2;
double tmp_area = 0.;
tmp_area = d * h / 2;
return tmp_area;
} // end of f3 function
'언어 > c언어' 카테고리의 다른 글
네이버 지식인 풀이 (c) (0) | 2018.11.24 |
---|---|
네이버 지식인 풀이 (0) | 2018.11.22 |
더블릿 풀이 c언어 pie 문제 (0) | 2018.11.18 |
선택정렬 (0) | 2018.11.18 |
버블 정렬 (0) | 2018.11.18 |