C/명품 C언어 프로젝트(안기수 저) 59

명품 C언어 프로젝트 4.6장 연습문제

[1번 문제]/*다음은 우리나에 "작은 별"로 알려진 "Twinkle, twinkle, little star" 가사의 일부분이빈다.가사 부분을 다음과 같이 텍스트 파일(plaintext.txt)로 저장한 다음 Caesar 암호문,단순 전치 암호문, XOR 암호문으로 변환한 텍스트 파일을 생성합니다.*/#include #include #include int main(void){ char str[3][57]; //plain text가 3줄 FILE *fp = fopen("C:\\plaintext.txt", "r"); printf("Caesar 암호문\n"); printf("Plain Text\n"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 57; j++) {..

명품 C언어 프로젝트 4.5장 연습문제

[1번 문제] /*정수 123에 대해 순열은 다음과 같이 3!=3*2*1=6개가 있습니다.이를 확장하여 입력된 임의의 숫자 n에 대해 순열을 출력하는 프로그램을 작성합니다.단, 같은 숫자는 입력하지 않는다고 가정합니다*/#include void permutation(int *arr, int start); //순열 int main(void){ int arr[3]; for (int i = 0; i = 0; i--) //swap 함수로 Setn[i]와 Setn[n-1]의 위치 바꾼 후 { Swap(&Setn[i], &Setn[n - 1]); //재귀 함수 호출 이용해 과정 반복 Copy[r - 1] = Setn[n - 1]; //그 후 swap 함수 재호출하여 Setn[i]와 Setn[n-1]의 위치 바꿈 P..

명품 C언어 프로젝트 4.4장 연습문제

[1번 문제]/* 좌표를 나타내는 부분을 구조체로 정의하여 출력하는 프로그램으로 수정한다 */ #include #include #define PI 3.14 typedef struct _point { int x; int y; }Point; //m[2]를 구조체로 변경 void rotation(Point *p, double result[], double d); double dtor(double degree); int main(void) { Point p = { 2, 1 }; double result[2]; rotation(&p, result, 90); for (int i = 0; i < 2; i++) printf("%4.1f ", result[i]); printf("\n"); return 0; } void ..

명품 C언어 프로젝트 4.3장 연습문제

[1번 문제]/*행과 열의 요소를 바꾸는 전치(transpose) 행렬을 출력하는 함수를 작성하시오*/#include void transpose(int m[][3], int row);void print_matrix(int m[][3], int row_size, int col_size); int main(void){ int m[3][3] = { {3, 8, 6}, { 4, 1, 7 }, { 5, 2, 9 } }; printf("변환 전\n"); print_matrix(m, 3, 3); printf("변환 후\n"); transpose(m, 3); return 0;} void transpose(int m[][3], int row){ int temp[3][3]; for (int i = 0; i < 3; i++..

명품 C언어 프로젝트 4.2장 연습문제

[1번 문제]/*집합 A와 집합 B에 대한 곱집합 AXB를 출력하는 프로그램을 작성한다*/#include int multiply(int a[], int s_a, int b[], int s_b, int result[]); int main(void){ int a[] = { 1, 3, 5, 7 }; int b[] = { 3, 5, 8, 9, 10 }; int result[20]; int count, i, size_a, size_b; size_a = sizeof(a) / sizeof(int); size_b = sizeof(b) / sizeof(int); count = multiply(a, size_a, b, size_b, result); for (i = 0; i < count; i++) printf("%d ",..

명품 C언어 프로젝트 4.1장 연습문제

[1번 문제]/*입력한 10진 정수에 대해 진수(2, 8, 16) 별로 선택적으로 변환하여 출력하는 프로그램을 작성합니다*/#include long dec_to_bin(long n);long dec_to_octal(long n);char hexa(int n);void dec_to_hexa(long n); int main(void){ long number; int sel; printf("10진 정수 입력: "); scanf("%ld", &number); printf("몇진법으로 변환하시겠습니까?\n1. 2진법, 2. 8진법, 3. 16진법: "); scanf("%d", &sel); printf("\n"); switch (sel) { case 1: printf("%ld를 2진수로 바꾸면 %ld\n", num..

명품 C언어 프로젝트 3.8장 연습문제

[1번 문제]/*가변 인수를 사용하는 다음의 함수를 작성합니다1) 인수들의 평균을 계산하는 함수 mean2) 인수들의 중위수를 계산하는 함수 median3) 인수들을 오름차순으로 정렬하는 함수 ascending_sort4) 인수로 사용된 여러 개의 문자열을 하나의 문자열로 합치는 함수 concatenate_str*/#include #include #include double mean(int num, ...); //평균double median(int count, ...); //중위수void ascending_sort(int *arr, int len); //오름차순void concatenate_str(int num, ...); //문자열 합치는 함수 int main(void){ int arr[7] = { 0..

명품 C언어 프로젝트 3.7장 연습문제

[1번 문제]/*이 절에서 소개되지 않은 난수 생성방법들을 조사하여 각 방법에 대해최대 5자리의 정수 난수 10개와 0부터 1 사이의 실수 난수 10개를 출력하는 프로그램을 작성합니다*/#include #include #include int main(void){ srand((unsigned)time(NULL)); printf("정수 난수:\n"); for (int i = 0; i < 10; i++) printf("%d\n", rand() % 100000 + 1); //5자리 난수 printf("실수 난수:\n"); for (int i = 0; i < 10; i++) printf("%g\n", rand() / (double)(RAND_MAX + 1)); //0~1 사이의 실수 return 0; } [3번 ..

명품 C언어 프로젝트 3.6장 연습문제

[1번 문제]/*다음과 같은 메뉴에 의해 실제 값을 입력받아 해당 연산을 처리하는 프로그램을 작성합니다*/#include #include #include #include int menu_display(void);int sub_menu_display01(void);int sub_menu_display02(void);void sub_main01(void);void sub_main02(void); void add(void);void subtract(void);void multiply(void);void divide(void);void remain(void);void press_any_key(void); void naturallog(void);void decimallog(void); int main(void){..

명품 C언어 프로젝트 3.5장 연습문제

[1번 문제]/*[예제 3.5.1]을 이용하여 다음의 [그림 A]와 같이 기본 정사각형 5개를 연속적으로 세로 방향으로 출력하는 프로그램을 작성합니다*/#include void draw_basic_square(void); int main(void){ for (int i = 0; i < 5; i++) { draw_basic_square(); printf("\n"); } return 0;} void draw_basic_square(void){ unsigned char a = 0xa6, b[7], i; for (i = 1; i < 7; i++) b[i] = 0xa0 + i; printf("%c%c", a, b[3]); printf("%c%c", a, b[4]); printf("\n"); printf("%c%c..