[P4C] C언어 코딩 도장 : UNIT 45 ~ UNIT 47
2021. 3. 14. 12:54
Programming Languages/C
Unit 45. 문자열 자르기 45.1 문자를 기준으로 문자열 자르기 strtok 함수는 특정 문자를 기준으로 문자열을 자르는 방법이다. (string.h 헤더 파일에 선언되어 있음). strtok(대상문자열, 기준문자); #define _CRT_SECURE_NO_WARNINGS // strtok 보안 경고로 인한 컴파일 에러 방지 #include #include // strtok 함수가 선언된 헤더 파일 int main() { char s1[30] = "The Little Prince"; // 크기가 30인 char형 배열을 선언하고 문자열 할당 char *ptr = strtok(s1, " "); // " " 공백 문자를 기준으로 문자열을 자름, 포인터 반환 while (ptr != NULL) // 자..
[P4C] C언어 코딩 도장 : UNIT 41 ~ UNIT 44
2021. 3. 14. 00:59
Programming Languages/C
Unit 41. 문자열의 길이를 구하고 비교하기 41.1 문자열 길이 구하기 문자열의 길이는 strlen 함수로 구할 수 있다. (string.h 헤더 파일에 선언되어 있음). strlen(문자열포인터); strlen(문자배열); #include #include // strlen 함수가 선언된 헤더 파일 int main() { char *s1 = "Hello"; // 포인터에 문자열 Hello의 주소 저장 char s2[10] = "Hello"; // 크기가 10인 char형 배열을 선언하고 문자열 할당 printf("%d\n", strlen(s1)); // 5: strlen 함수로 문자열의 길이를 구함 printf("%d\n", strlen(s2)); // 5: strlen 함수로 문자열의 길이를 구함..
[P4C] C언어 코딩 도장 : 문제 풀이 5
2021. 3. 14. 00:07
Programming Languages/C
39.8 심사 문제 : 문자열 만들기 문제 : 표준 출력으로 다음과 같은 문자열이 출력되게 만드세요. Beethoven 9th Symphony 정답 : #include int main() { char s1[] = "Beethoven\n9th\nSymphony"; printf("%s\n", s1); return 0; } 40.8 심사문제 : 문자열 네 개 입력받기 문제 : 표준 입력으로 어떤 문자열 네 개가 입력됩니다(각 문자열의 길이는 30 이하). 입력된 문자열 네 개를 각각 한 줄씩 출력하는 프로그램을 만드세요. 정답 : #include int main(void){ char s1[31]; char s2[31]; char s3[31]; char s4[31]; scanf("%s %s %s %s", s1,..
[P4C] C언어 코딩 도장 : UNIT 39 ~ UNIT 40
2021. 3. 14. 00:05
Programming Languages/C
Unit 39. 문자열 사용하기 39.1 문자와 문자열 포인터 알아보기 문자열은 char 포인터 형식으로 사용한다. char *변수이름 = "문자열"; #include int main() { char c1 = 'a'; // 변수에 문자 'a' 저장 char *s1 = "Hello"; // 포인터에 문자열 "Hello"의 주소 저장 printf("%c\n", c1); // a: %c로 문자 출력 printf("%s\n", s1); // Hello: %s로 문자열 출력 return 0; } 문자는 1바이트 크기의 char에 저장할 수 있지만 문자열은 크기가 1바이트를 넘어서므로 char에 저장할 수 없다. 따라서 문자열은 변수에 직접 저장하지 않고 포인터를 이용해서 저장한다. 즉, 문자는 변수 c1 안에 그..
[P4C] CodeUp 1810 : (포인터) 부분 문자열
2021. 3. 5. 17:43
Programming Languages/C
문제 : 어떤 문자열에서 부분문자열을 추출하여 출력하는 프로그램을 작성하시오. 단 배열 대신 동적메모리 할당방법을 사용하시오. 정답 : #define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { int a, b; char *matrix = malloc(sizeof(char) * 100); scanf("%s",matrix); scanf("%d %d",&a,&b); for (int i = a - 1; i < b; i++) { printf("%c",*(matrix+i)); } free(matrix); return 0; } 포인터 연산을 이용하여, 메모리를 역참조하였다. *(matrix+i) = matrix[i]
[P4C] CodeUp 1581 : swap 함수 만들기 (Call by Reference)
2021. 3. 5. 17:39
Programming Languages/C
문제 : 이 문제는 두 변수의 값을 바꾸는 함수를 구현하는 문제입니다. 함수명 : myswapmyswap 매개 변수(parameter) : 정수형 포인터 변수 변수 22개(매개변수를 반드시 int∗int∗로 사용) 반환 형(return type) : 없음(voidvoid) 함수 내용 : 첫 번째 포인터가 가리키는 변수의 값이 두 번째 포인터가 가리키는 변수의 값보다 클 경우 두 값을 서로 바꾼다. 정답 : #define _CRT_SECURE_NO_WARNINGS #include void myswap(int *a, int *b) { int temp; if (*a > *b) { temp = *b; *b = *a; *a = temp; } } main() { int a, b; scanf("%d%d", &a, &..
[P4C] C언어 코딩 도장 : 문제 풀이 4
2021. 3. 5. 16:47
Programming Languages/C
34.10 심사 문제 : 포인터와 주소 연산자 사용하기 문제 : 표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 입력된 정수가 출력되게 만드세요. 정답 : #define _CRT_SECURE_NO_WARNINGS #include int main() { int* numPtr1; int** numPtr2; int num1; scanf("%d", &num1); numPtr1 = &num1; numPtr2 = &numPtr1; printf("%d\n", **numPtr2); return 0; } 34.10 심사 문제 : 포인터와 주소 연산자 사용하기 문제 : 표준 입력으로 두 정수가 입력됩니다(입력 값의 범위는 0~1073741824). 다음 소스 코드를 완성하여 입력된 두 정수의 합이 출력되게 만..
[P4C] C언어 코딩 도장 : UNIT 38
2021. 3. 3. 21:27
Programming Languages/C
Unit 38. 포인터와 배열 응용하기 배열의 크기를 동적으로 지정하려면 어떻게 해야 할까? 크기를 동적으로 지정하려면 포인터를 선언하고 메모리를 할당한 뒤 메모리를 배열처럼 사용해야 한다. 38.1 포인터에 할당된 메모리를 배열처럼 사용하기 포인터에 malloc 함수로 메모리를 할당해주면 포인터를 배열처럼 사용할 수 있다. - 자료형 *포인터이름 = malloc(sizeof(자료형) * 크기); #include #include // malloc, free 함수가 선언된 헤더 파일 int main() { int *numPtr = malloc(sizeof(int) * 10); // int 10개 크기만큼 동적 메모리 할당 numPtr[0] = 10; // 배열처럼 인덱스로 접근하여 값 할당 numPtr[9..