1월, 2021의 게시물 표시

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 16-3

9. #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { FILE* fp1, * fp2, * fp3; char file1[100], file2[100], file3[100]; char buffer[100]; if (argc >= 4) { strcpy(file1, argv[1]); strcpy(file2, argv[2]); strcpy(file3, argv[3]); } else { printf("인수가 부족합니다.\n"); return 0; } printf("%s 파일+ %s파일을 %s파일로 복사합니다.\n", file1, file2, file3); if ((fp1 = fopen(file1, "r")) == NULL) { fprintf(stderr, "원본 파일 %s을 열 수 없습니다.\n", file1); exit(1); } if ((fp2 = fopen(file2, "r")) == NULL) { fprintf(stderr, "원본 파일 %s을 열 수 없습니다.\n", file2); exit(1); } if ((fp3 = fopen(file3, "w")) == NULL) { fprintf(stderr, "결과 파일 %s을 열 수 없습니다.\n", file3); exit(1); } fputs(buffer, fp3); fputs(buffer, fp3); fclose(fp1); fclose(fp2); fclose(fp3); return 0; } 10. #include <stdio.h> #include <ctype.h> int main(void) { FILE* fp =

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 16-2

5. #include <stdio.h> int main(void) { FILE* fp = NULL; FILE* fpout = NULL; char buffer[1000] = { 0 } ; char name[1000] = { 0 } ; int korean, math, english; fp = fopen("sample.txt", "r"); if (fp == NULL) { printf("파일 열기 실패\n"); return 0; } fpout = fopen("sample1.txt", "w"); if (fpout == NULL) { printf("파일 열기 실패\n"); return 0; } while (fgets(buffer, 1000, fp) != NULL) { sscanf(buffer, "%s %d %d %d", name, &korean, &math, &english); fprintf(fpout, "%s", name); fprintf(fpout, "%10.2f\n", (korean + math + english) / 3.0); } fclose(fp); return 0; } 6. #include <stdio.h> #include <ctype.h> int main(void) { FILE* fp = NULL; int c, count = 0; char file1[100]; printf("파일 이름을 입력하시오: "); scanf("%s", file1); if ((fp = fopen(file1, "r")) == NULL) { fprintf(stderr, "원본

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 16-1

1. #include <stdio.h> #include <stdlib.h> int main(void) { FILE* fp1, * fp2; char file1[100], file2[100]; printf("첫번쨰 파일 이름: "); scanf("%s", file1); printf("두번째 파일 이름: "); scanf("%s", file2); if ((fp1 = fopen(file1, "r")) == NULL) { fprintf(stderr, "원본 파일 %s을 열 수 없습니다.\n", file1); exit(1); } // 두번째 파일을 읽기 모드로 연다. if ((fp2 = fopen(file2, "r")) == NULL) { fprintf(stderr, "복사 파일 %s을 열 수 없습니다.\n", file2); exit(1); } // 첫 번째 파일과 두 번째 파일을 비교 while (1) { int c1 = fgetc(fp1); int c2 = fgetc(fp2); if (c1 == EOF || c2 == EOF) break; if (c1 != c2) { printf("두 파일은 서로 다릅니다.\n"); return 0; } } printf("두 파일은 서로 같습니다.\n"); fclose(fp1); fclose(fp2); return 0; } 2. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main(void) { FILE* fp1, * fp2; char file1[100],

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 15-3

9. #include <stdio.h> #include <math.h> struct contact { char name[100]; char home_phone[100]; char cell_phone[100]; } ; int main(void) { struct contact list[5]; int i; char name[100]; for (i = 0; i < 5; i++) { printf("이름을 입력하시오:"); scanf("%s", list[i].name); printf("집전화번호를 입력하시오:"); scanf("%s", list[i].home_phone); printf("휴대폰번호를 입력하시오:"); scanf("%s", list[i].cell_phone); } printf("검색할 이름을 입력하시오:"); scanf("%s", name); for (i = 0; i < 5; i++) { if (strcmp(name, list[i].name) == 0) { printf("집전화번호: %s\n", list[i].home_phone); printf("휴대폰번호: %s\n", list[i].cell_phone); return 0; } } printf("검색이 실패하였슴\n"); return 0; } 10. #include <stdio.h> #include <math.h> struct card { int value; char suit; } ; int main(void) { struct card cards[52]; int i; for (i = 0; i < 13; i++) { ca

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 15-2

5. #include <stdio.h> #include <math.h> struct vector { double x; double y; } ; struct vector vector_add(struct vector v1, struct vector v2) { struct vector r; r.x = v1.x + v2.x; r.y = v1.y + v2.y; return r; } void vector_print(struct vector v) { printf("(%f, %f)\n", v.x, v.y); } int main(void) { struct vector v1 = { 1.0, 2.0 } ; struct vector v2 = { 2.0, 3.0 } ; struct vector v3; v3 = vector_add(v1, v2); vector_print(v3); return 0; } 6. #include <stdio.h> #include <string.h> struct email { char title[100]; char receiver[50]; char sender[50]; char content[1000]; char date[100]; int priority; } ; int main(void) { struct email e; strcpy(e.title, "안부 메일"); strcpy(e.receiver, "chulsoo@hankuk.ac.kr"); strcpy(e.sender, "hsh@hankuk.ac.kr"); strcpy(e.content, "안녕하십니까? 별일 없으신지요?"); strcpy(e.date, "2010/9/1"); e.priority = 1; return 0; } 7. #incl

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 15-1

1. double power(int x, int y) { double result = 1.0; int i; for (i = 0; i < y; i++) { printf("result=%f\n", result); result *= x; } return result; } (a) #ifdef DEBUG printf("result=%f\n", result); #endif (b) #if DEBUG==2 printf("result=%f\n", result); #endif (c) #if (DEBUG==2 && LEVEL==3) printf("result=%f\n", result); #endif (d) printf("%d: result=%f\n", __LINE__, result); (e) #if POWER_TYPE==0 int power(int x, int y) { int result = 1.0; # else double power(int x, int y) { double result = 1.0; #endif ... #if POWER_TYPE == 0 printf("result=%d\n", result); # else printf("result=%f\n", result); #endif ... (f) #if 0 printf("result=%f\n", result); # else 2. #include <stdio.h> #define MIN(x,y) (x)<(y)?(x):(y) #define GET_MIN(x,y,z) (MIN(x, y))<(z)?(MIN(x, y)):(z) int main(void) { int x, y, z, result; printf("3개의 정수를 입력하시오: "); scanf(&qu

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 14-3

 8. #include <stdio.h> #define HEIGHT 10 #define WIDTH 10  void array_copy(int src[][WIDTH], int dst[][WIDTH]); void array_print(int a[][WIDTH]); int score[HEIGHT][WIDTH] = { { 100, 30, 67 } , { 89, 50, 12 } , { 19, 60, 90 } } ; int tmp[HEIGHT][WIDTH]; int main(void) { array_copy(score, tmp); array_print(tmp); return 0; } void array_print(int a[][WIDTH]) { int r, c; for (r = 0; r < HEIGHT; r++) { for (c = 0; c < WIDTH; c++) printf("%d ", a[r][c]); printf("\n"); } } void array_copy(int src[][WIDTH], int dst[][WIDTH]) { int* p = &src[0][0]; int* end = &src[HEIGHT - 1][WIDTH - 1]; int* q = &dst[0][0]; while (p <= end) { *q++ = *p++; } } 9. #include <stdio.h> #define HEIGHT 10 #define WIDTH 10 #define ALIVE 1  #define DEAD 0 void print_board(int board[HEIGHT][WIDTH]) { int h, w; for (h = 0; h < HEIGHT; h++) { for (w = 0; w < WIDTH; w++) { if (board[h][w] == ALIVE) {

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 14-2

 5. #include <stdio.h> void sort_strings(char* s[], int size); int main(void) { int i; char* s[3] = { "mycopy", "src", "dst" } ; sort_strings(s, 3); for (i = 0; i < 3; i++) printf("%s\n", s[i]); return 0; } void sort_strings(char* list[], int size) { int i, j, least; char* temp; for (i = 0; i < size - 1; i++) { least = i; for (j = i + 1; j < size; j++)  if (strcmp(list[j], list[least]) < 0) least = j; temp = list[i]; list[i] = list[least]; list[least] = temp; } } 6. #include <stdio.h> int get_average(int list[], int n); int main(void) { int score[3][3] = { { 100, 30, 67 } , { 89, 50, 12 } , { 19, 60, 90 } } ; int i, avg; for (i = 0; i < 3; i++) { avg = get_average(score[i], 3); printf("%d행의 평균값=%d\n", i, avg); } return 0; } int get_average(int list[], int n) { int i; int sum = 0; for (i = 0; i < n; i++

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 14-1

1. #include <stdio.h> void set_proverb(char** q, int n); int main(void) { char* s = NULL; int n; printf("몇번째 속담을 선택하시겠습니까?"); scanf("%d", &n); set_proverb(&s, n); printf("selected proverb = %s\n", s); return 0; } void set_proverb(char** q, int n) { static char* array[10] = { "A bad shearer never had a good sickle.", "A bad workman (always) blames his tools. ", "A bad workman quarrels with his tools.", "A bad thing never dies.", "A bad workman finds fault with his tools.", "A bad workman always blames his tools.", "A bargain is a bargain.", "A barking dog never bites.", "A barking dog was never a good hunter." } ; *q = array[n]; } 2. #include <stdio.h> int get_sum(int array[], int size); int main(void) { int m[][1] = { 1, 1, 1 } ; int result = get_sum(m[0], 1); printf("%d\n", re

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 13-3

15. #include <stdio.h> #include <math.h> enum shape_type { TRIANGLE, RECTANGLE, CIRCLE } ; struct shape { int type; union { struct { int base, height; } tri; struct { int width, height; } rect; struct { int radius; } circ; } p; } ; int main(void) { struct shape s; enum shpae_type type; printf("도형의 타입을 입력하시오(0, 1, 2): "); scanf("%d", &type); switch (type) { case TRIANGLE: printf("밑변과 반지름을 입력하시오(예를 들어서 100 200): "); scanf("%d %d", &s.p.tri.base, &s.p.tri.height); printf("면적은 %d\n", (int)(0.5 * s.p.tri.base * s.p.tri.height)); break; case RECTANGLE: printf("가로와 세로의 길이를 입력하시오(예를 들어서 100 200):"); scanf("%d %d", &s.p.rect.width, &s.p.rect.height); printf("면적은 %d\n", (int)(s.p.rect.width * s.p.rect.height)); break; case CIRCLE: printf("반지름을 입력하시오(예를 들어서 100): "); scanf("%d&q

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 13-2

6. #include <stdio.h> #include <string.h> struct email { char title[100]; char receiver[50]; char sender[50]; char content[1000]; char date[100]; int priority; } ; int main(void) { struct email e; strcpy(e.title, "안부 메일"); strcpy(e.receiver, "chulsoo@hankuk.ac.kr"); strcpy(e.sender, "hsh@hankuk.ac.kr"); strcpy(e.content, "안녕하십니까? 별일 없으신지요?"); strcpy(e.date, "2010/9/1"); e.priority = 1; return 0; } 7. #include <stdio.h> #include <math.h> struct food { char name[100]; int calories; } ; int calc_total_calroies(struct food array[], int size); int main(void) { struct food food_array[3] = { { "hambuger", 900 } , { "bulgogi", 500 } , { "sushi", 700 } } ; int total = calc_total_calroies(food_array, 3); printf("%d\n", total); return 0; } int calc_total_calroies(struct food array[], int size) { int i, total = 0;