c언어 linkedlist

언어/c언어2019. 12. 31. 23:00
# 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

네이버 풀이

언어/c언어2019. 5. 18. 08:07

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

# 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

네이버 풀이

언어/c언어2018. 12. 1. 18:38

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", &param->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", &param->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

더블릿 문제

언어/c언어2018. 11. 27. 13:31

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

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

네이버 풀이

언어/c언어2018. 11. 19. 19:34

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", &param->target_chr);

printf("갯수 입력 : ");

scanf("%d", &param->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