[P4C] C언어 코딩 도장 : UNIT 58 ~ UNIT 59
2021. 4. 3. 15:00
Programming Languages/C
Unit 58. 자료형 변환하기 58.1 기본 자료형 변환하기 자료형을 지정하여 변환하는 것을 명시적 자료형 변환(explicit type conversion, type casting)이라고 하며 변수나 값 앞에 변환할 자료형을 붙인 뒤 ( ) (괄호)로 묶어주면 된다. (자료형)변수 (자료형)값 #include int main() { int num1 = 32; int num2 = 7; float num3; num3 = num1 / num2; // 컴파일 경고 발생 printf("%f\n", num3); // 4.000000 num3 = (float)num1 / num2; // num1을 float로 변환 printf("%f\n", num3); // 4.571429 return 0; } num3 = nu..
[P4C] C언어 코딩 도장 : 문제 풀이 8
2021. 4. 3. 00:56
Programming Languages/C
56.6 심사 문제 : 구조체로 플래그 비트 필드 만들기 문제 : 다음 소스 코드를 완성하여 15 127 7이 출력되게 만드세요. 정답 : #include struct Flags { unsigned int a : 4; unsigned int b : 7; unsigned int c : 3; }; int main() { struct Flags f1; f1.a = 0xffffffff; f1.b = 0xffffffff; f1.c = 0xffffffff; printf("%u %u %u\n", f1.a, f1.b, f1.c); return 0; } 56.6 심사 문제 : 구조체로 플래그 비트 필드 만들기 문제 : 다음 소스 코드를 완성하여 57412가 출력되게 만드세요. 정답 : #include struct Fla..
[P4C] C언어 코딩 도장 : UNIT 56 ~ UNIT 57
2021. 4. 3. 00:29
Programming Languages/C
Unit 56. 구조체 비트 필드 사용하기 구조체 비트 필드를 사용하면 구조체 멤버를 비트 단위로 저장할 수 있다. CPU나 기타 칩의 플래그를 다루는 저수준(low level) 프로그래밍을 할 때 기본 자료형보다 더 작은 비트 단위로 값을 가져오거나 저장하는 경우가 많아 구조체 비트 필드가 유용하게 사용된다. 56.1 구조체 비트 필드를 만들고 사용하기 대부분의 컴파일러에서는 모든 정수 자료형을 사용할 수 있다. 보통은 비트 필드에 부호 없는(unsigned) 자료형을 주로 사용한다. 단, 실수 자료형은 비트 필드로 사용할 수 없다. 비트 필드는 다음과 같이 멤버를 선언할 때 : (콜론) 뒤에 비트 수를 지정해주면 된다. struct 구조체이름 { 정수자료형 멤버이름 : 비트수; }; #include ..
[P4C] C언어 코딩 도장 : UNIT 54 ~ UNIT 55
2021. 3. 28. 19:33
Programming Languages/C
Unit 54. 공용체 사용하기 공용체는 구조체와 정의 방법이 같지만 멤버를 저장하는 방식이 다르다. 구조체는 멤버들이 각각 공간을 차지하지만 공용체는 모든 멤버가 공간을 공유한다. 54.1 공용체를 만들고 사용하기 공용체는 union 키워드를 사용하여 정의한다. union 공용체이름 { 자료형 멤버이름; }; 공용체는 정의만 해서는 사용을 할 수가 없다. 따라서 공용체도 변수로 선언해서 사용한다. union 공용체이름 변수이름; #define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지 #include #include // strcpy 함수가 선언된 헤더 파일 union Box { // 공용체 정의 short candy; // 2바이트 float sn..
[P4C] C언어 코딩 도장 : 문제 풀이 7
2021. 3. 28. 17:27
Programming Languages/C
51.6 심사문제 : 암호화 헤더 크기 구하기 문제 : 다음 소스 코드를 완성하여 12가 출력되게 만드세요. 구조체 멤버의 이름은 마음대로 지어도 됩니다. 정답 : #include struct EncryptionHeader { char flags; int version; int number; }; int main() { struct EncryptionHeader header; printf("%d\n", sizeof(header)); return 0; } 51.7 심사문제 : 패킷 크기 조절하기 문제 : 다음 소스 코드를 완성하여 3이 출력되게 만드세요. 구조체 멤버의 이름은 마음대로 지어도 됩니다. 정답 : #include struct Packet { char a; char b; char c; }; in..
[P4C] C언어 코딩 도장 : UNIT 51 ~ UNIT 53
2021. 3. 28. 16:48
Programming Languages/C
Unit 51. 구조체 멤버 정렬 사용하기 51.1 구조체 크기 알아보기 구조체의 전체 크기는 sizeof 연산자를 사용하면 알 수 있다. sizeof(struct 구조체) sizeof(구조체별칭) sizeof(구조체변수) sizeof 구조체변수 다음은 가상의 네트워크 패킷 구조체 PacketHeader를 정의해서 멤버의 크기와 구조체의 크기를 구하는 코드이다. #include struct PacketHeader { char flags; // 1바이트 int seq; // 4바이트 }; int main() { struct PacketHeader header; printf("%d\n", sizeof(header.flags)); // 1: char는 1바이트 printf("%d\n", sizeof(heade..
[P4C] C언어 코딩 도장 : UNIT 48 ~ UNIT 50
2021. 3. 15. 00:21
Programming Languages/C
Unit 48. 구조체 사용하기 구조체는 struct 키워드로 정의하며 data structure(자료 구조)의 약어로 struct를 사용한다. 구조체는 관련 정보를 하나의 의미로 묶을 때 사용한다. 48.1 구조체를 만들고 사용하기 struct 구조체이름 { 자료형 멤버이름; }; 구조체는 struct 키워드로 정의한다. 구조체는 정의만 해서는 사용을 할 수가 없다. 따라서 구조체도 변수로 선언해서 사용한다. struct 구조체이름 변수이름; #define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지 #include #include // strcpy 함수가 선언된 헤더 파일 struct Person { // 구조체 정의 char name[20]; //..
[P4C] C언어 코딩 도장 : 문제 풀이 6
2021. 3. 15. 00:19
Programming Languages/C
45.7 심사문제 : 문자열 자르기 문제 : 표준 입력으로 길이 60 이하의 인터넷 도메인이 입력됩니다. 점을 기준으로 문자열을 분리하여 각 줄마다 출력하세요. 정답 : #define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { char s[61]; scanf("%s", s); char *ptr = strtok(s, "."); while (ptr != NULL) { printf("%s\n", ptr); ptr = strtok(NULL, "."); } return 0; } 45.8 심사문제 : 특정 단어 개수 세기 문제 : 표준 입력으로 길이 1,000 이하의 문자열이 입력됩니다. 입력된 문자열에서 "the"의 개수를 출력하는 프로그램을 만드세요..