본문 바로가기

Programming/C language

Chapter 12. 함수 응용 (문제풀이)

필수실습문제) 


12-1) 문자열을 복사하는 함수 만들기 


#include <stdio.h>


int main(int argc, char *argv[]) {

char szBufferSrc[12] = {"Test String"};

char szBufferDst[12] = {0};


MyStrcpy(szBufferDst, sizeof(szBufferDst), szBufferSrc);

puts(szBufferDst);


return 0;

}


메모리의 주소 두 개를 매개변수로 받아 문자열을 복사(deep copy)하는 함수인 MyStrcpy() 함수를 작성합니다.

main() 함수의 코드와 실행결과가 위와 같을 때, 정상적으로 작동할 수 있도록 구현합니다. 기능적으로 MyStrcpy() 함수는 strcpy() 혹은 strcpy_s() 함수와 같습니다. 






연습문제)


1)  매개변수로 검색 대상 문자열이 저장된 메모리의 주소와 그 대상 문자에서 찾고 싶은 문자열이 저장된 메모리의 

주소를 받아 검색에 성공하면 대상 메모리에서 찾고자 하는 문자열이 저장된 위치의 인덱스를 반환하는 함수를 

작성하세요. 기능적으로는 strstr() 함수와 같지만, 반환하는 자료형은 char *가 아니라 대상 메모리에 대한 인덱스를

정수형으로 반환해야 합니다. 만일 찾는 문자열이 없다면 -1을 반환하는 함수로 정의합니다. 



Q )






2)  매개변수로 char*의 배열이름과 요소의 개수를 인수로 받아 오름차순으로 문자열을 정리하는 SortString() 함수를

작성하세요. 다음과 같은 main() 함수의 코드에 대한 출력 예를 참고하여 작성합니다. 


#include <stdio.h>


int main(void) {

char* aList[5] = { "정형돈", "노홍철", "하하", "유재석", "박명수" };

int i = 0;


SortString(aList, 5);


for(i = 0; i < 5; i++) {

puts(aList[i]);

}


return 0;

}



Q )








3) int형 5행 4열 배열에서 각 요소의 총합을 계산하여 반환하는 GetTotal() 함수를 작성하세요. 


Q) 



- 다차원 배열의 포인터를 어떻게 써야할지 기억이 안나 한참 해맴... 






4)  매개변수로 char* 두 개를 받아 각 포인터가 가리키는 대상 문자열이 같은 문자열인지 비교하는 함수를 작성합니다. 

만일 같으면 0을 반환하고 그렇지 않으면 1을 반환합니다. 기본적인 기능은 strcmp() 함수와 같습니다. 

단, 영문 대/소문자를 구별하지 않고 비교합니다. 따라서 'h'와 'H'를 같다고 인식해야 합니다. 


Q )






5)  난수를 구하는 함수를 사용하여 가위바위보 게임을 구현합니다. 0~2 범위의 숫자를 발생시켜서 

0은 '가위', 1은 '바위', 2는 '보'라고 가정합니다. 게임 방식은 사용자로부터 0~2 범위의 정수를 입력받은 후, 

이에 대응하는 0~2 범위의 난수를 발생시켜 사용자가 입력한 정보와 비교하는 방식으로 게임을 진행합니다. 

반드시 사용자, 컴퓨터가 선정한 것이 무엇이며 누가 승자인지 표시해야 합니다. 



Q )




실행 결과





6) 오늘을 기준으로 10일 후와 100일 후의 날짜를 계산하여 출력하는 프로그램을 작성하세요. 



Q )




실행 결과





- 출처 : 독하게 시작하는 C 프로그래밍 (최호성, 루비 페이퍼)