목록학습/C, C++ (17)
while (1): study();

텍스트 파일에서 등록된 단어 이외의 단어를 찾아 새로운 파일에 출력합니다. 모든 단어의 길이는 최대 20자, 등록 단어 수는 최대 10개로 제한하며 검출 대상 단어 수는 제한이 없습니다. b.txt에서 a.txt에 등록되지 않은 단어를 찾아 c.txt에 출력합니다. #define _CRT_SECURE_NO_WARNINGS #include #include #include int get_words(char**, FILE*); void file_open_error(void); void free_all(int, int); int main(void) { FILE* wfp, * ifp, * ofp; int i, j; int is_detected; // printing flag char* words[10], *inp..

학생 5명의 국어, 영어, 수학 점수를 입력하여 총점, 평균, 학점을 구하고 총점 순으로 정렬하여 출력합니다. 학점은 평균이 90점 이상이면 A, 80점 이상이면 B, 70점 이상이면 C, 그 외는 F로 평가합니다. #define _CRT_SECURE_NO_WARNINGS #include #include #pragma pack(1) typedef struct { int id; char name[20]; int kor; int eng; int math; int total; double average; char grade; } Student; void get_info(Student**); void sort_by_total(Student**); void print_info(Student**); int main..

키보드로 양수를 입력한 후에 입력한 수까지의 모든 소수를 출력합니다. 2부터 한 줄에 5개씩 출력하며 소수가 아닌 수는 X를 출력합니다. 입력한 수에 따라 적절한 크기의 배열을 동적 할당하여 사용합니다. #define _CRT_SECURE_NO_WARNINGS #include #include #include int is_prime_number(int); void print_2darray(int**); int main(void) { int end; int flg; int i; char value[80]; // 동적할당용 임시 버퍼 printf("정수 입력 : "); scanf("%d", &end); char** nums = (char**)calloc(end - 2, sizeof(char*)); if (nu..

두 명의 나이와 키를 입력한 후에 바꾸어 출력합니다. 단, 나이와 키를 바꾸는 함수는 int형과 double형을 모두 교환할 수 있도록 하나의 함수로 구현하세요. #define _CRT_SECURE_NO_WARNINGS #include #include void swap(char*, void*, void*); int main(void) { int age1, age2; double h1, h2; printf("첫 번째 사람의 나이와 키 입력 : "); scanf("%d%lf", &age1, &h1); printf("두 번째 사람의 나이와 키 입력 : "); scanf("%d%lf", &age2, &h2); swap("int", &age1, &age2); swap("double", &h1, &h2); prin..

여기서는 이중 포인터, 배열 포인터, 함수 포인터, 그리고 void 포인터의 의미와 용례를 살펴본다. 1. 이중 포인터 이중 포인터란 포인터의 주소를 저장하는 포인터이다. 일반적으로 깊이가 3 이상인 (포인터의 포인터의 포인터부터) 다중 포인터라고 부르는데, 가독성 문제로 잘 사용되지는 않는다. // 이중 포인터 선언 int **ppi; 포인터 선언에서 중요한 것은 포인터가 가리키는 자료형과 포인터 자신의 자료형이다. 따라서 다음 선언문은 다음과 같이 분해할 수 있다. 정수포인터를 가리키는 포인터 변수임을 쉽게 알 수 있다. // int*형을 가리키는 포인터 int* (*ppi); 이중 포인터는 다음과 같이 함수의 매개변수를 받을때 유의미하게 사용할 수 있다. 활용1. 포인터 값을 바꾸는 함수의 매개변수..

5행 6열의 2차원 배열을 선언하고 4행 5열 부분은 1부터 20까지 초기화합니다. 초기화된 배열에서 마지막 열의 요소에는 각 행의 합을 저장하고 마지막 행의 요소에는 각 열의 합을 저장한 후 전체 배열의 값을 출력하세요. #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int i, j; int ary[5][6] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20} }; // 행의 합계 for (i = 0; i < 4; i++) { for (j = 0; j < 5; j++) { ary[i][5] += ary[i][j]; } } // 열의 합계 for (i =..

1. 지역 변수(Local variable) = 자동 변수(Auto variable) #include void assign(void); int main(void) { auto int a = 0; # 지역변수 할당은 auto 예약어(생략 가능) 사용 assign(); printf("main 함수 a: %d\n", a); # 0을 반환 return 0; } void assign(void) { int a; a = 10; printf("assign 함수 a: %d\n", a); # 10을 반환 } 특징 사용 범위가 블록 내부로 제한되므로 다른 함수에서는 사용할 수 없다. 이름이 같아도 선언된 함수가 다르면 각각 독립된 저장공간을 갖는다. 메모리를 효율적으로 사용한다. 디버깅에 유리하다. 사용 가능한 변수가 둘 ..