본문 바로가기

Solution_/C언어 콘서트40

[c언어 콘서트] 4장 (수식과 연산자) [4장 1번] 사용자로부터 2개의 정수를 받아서 첫 번째 정수를 두 번째 정수로 나누었을 때의 몫과 나머지를 계산하는 프로그램을 작성하라. 예를 들어서 10과 3이 입력되면 몫으로는 3, 나머지로는 1이 출력되어야 한다. [풀이]#include int main() { int a, b; printf("첫 번째 정수를 입력하시오 : "); scanf("%d", &a); printf("두 번째 정수를 입력하시오 : "); scanf("%d", &b); printf("몫은 %d이고 나머지는 %d입니다.\n", a / b, a%b); return 0; } [4장 2번] 사용자로부터 하나의 정수를 받아서 정수의 세제곱값을 계산하여 출력하는 프로그램을 작성하라, 예를 들어서 사용자가 3을 입력하였다면 3*3*3=27.. 2019. 3. 16.
[c언어 콘서트] 3장 (변수와 자료형) [3장 1번] 사용자로부터 소수점 표기 형식으로 실수를 읽어서 지수 형식으로 출력하는 프로그램을 작성하라. [Hint] printf()에서 소수점 표기 형식은 %f, 지수형식은 %e로 출력할 수 있다. [풀이]#include int main() { float a; printf("실수를 입력하시오 : "); scanf("%f", &a); printf("지수 형식으로는 %e입니다.\n", a); return 0; } [3장 2번] 사용자에게 받은 문자의 아스키 코드를 출력하는 프로그램을 작성하시오. [Hint] 문자는 아스키 코드라는 숫자로 컴퓨터 내부에서 표현된다. 문자를 %c로 받아서 char형 변수에 저장한 후에 %d로 출력하면 된다. [풀이]#include int main() { char a; pri.. 2019. 3. 3.
[c언어 콘서트] 2장 (기초 사항) [2장 1번] 사용자의 이름, 주소, 전화번호를 화면에 출력하는 프로그램을 작성해보자. [풀이]#include int main() { printf("이름 : 홍길동\n"); printf("주소 : 서울시 종로구\n"); printf("전화번호 : 111-222\n"); return 0; } [2장 2번] 다음과 같이 출력하는 프로그램을 작성하라. 제품의 가격은 price라는 변수에 저장되어 있다고 가정한다. [풀이]#include int main() { int price = 22000; printf("제품의 가격은 %d원 입니다.\n"); return 0; } [2장 3번] 사용자로부터 세 개의 정수를 입력받은 후, 평균값을 계산하여 화면에 출력하는 프로그램을 작성하라. [풀이]#include int m.. 2019. 3. 3.
[c언어 콘서트] 12장 9번 (파일 출력2) [12장 9번] 텍스트 파일의 내용을 한 화면 크기만 출력한 다음, 아무 키를 누르면 다음 화면을 보여주는 프로그램을 작성하라. 이것은 유닉스 시스템의 명령어인 more와 유사하다. [풀이]#include #include int main() { FILE *fp; char name[20]; char buffer[200]; printf("첫번째 파일 이름 : "); scanf("%[^\n]s", name); int num = 0, ret; fp = fopen(name, "r"); while (1) { num++; if (num % 19 == 0) _getwch(); ret = fgets(buffer, 200, fp); if (ret == 0) break; printf("%d: %s", num, buffer).. 2018. 11. 21.
[c언어 콘서트] 12장 8번 (파일 비교2) [12장 8번] 두개의 텍스트 파일을 서로 비교하는 프로그램을 작성하여 보자. 파일의 이름은 사용자에게 입력받는다. 만약 두개의 파일이 일치하면 "파일은 서로 일치함"을 출력하며 일치하지 않으면 처음 일치하지 않는 문장을 다음과 같이 출력한다. [test1.c]내용 : #include [test2.c]내용 : #include ,stdio.h> [풀이]#include #include #include int main() { FILE *fp1; FILE *fp2; char name1[20]; char name2[20]; char buffer1[200]; char buffer2[200]; printf("첫번째 파일 이름 : "); scanf("%s", name1); printf("두번째 파일 이름 : "); s.. 2018. 11. 21.
[c언어콘서트] 12장 7번 (파일 저장) [12장 7번] 사용자가 입력하는 텍스트를 파일에 저장하여 주는 프로그램을 작성해보자. 사용자가 공백 문자열을 입력하면 종료하는 것으로 한다.공백문자 : ctrl+z [풀이]#include #include int main() { FILE *fp; char name[20]; char buffer[200]; int ret; printf("파일 이름을 입력하시오 : "); scanf("%s", name); getchar(); fp = fopen(name, "w"); if (fp == NULL) exit(0); while (1) { ret = gets(buffer); if (ret == 0) break; fprintf(fp, "%s\n", buffer); }; fclose(fp); return 0; } 2018. 11. 21.
[c언어콘서트] 12장 6번 (파일 출력) [12장 6번] 텍스트 파일의 내용을 읽어서 그대로 화면에 출력하여 주는 프로그램을 작성해보자. 각 문장 앞에는 번호를 붙인다. [풀이]#include #include int main() { FILE *fp; char file[100]; char buffer[1000]; int line_cnt = 1; printf("파일 이름을 입력하시오: "); scanf("%s", file); fp = fopen(file, "r"); if (fp == NULL) exit(1); while (1) { char *p = fgets(buffer, 1000, fp); if (p == NULL) break; printf("%d %s", line_cnt, p); line_cnt++; } fclose(fp); printf("\n.. 2018. 11. 21.
[c언어콘서트] 12장 5번 (파일 비교) [12장 5번] 두 개의 텍스트 파일을 비교하여 같은지, 다른지를 알려주는 프로그램을 작성하라. [programming_5(1).txt] [programming_5(2).txt] [풀이]#include #include int main() { FILE *fp1, *fp2; char file1[100], file2[100]; printf("첫번째 파일 이름: "); scanf("%s", file1); printf("두번째 파일 이름: "); scanf("%s", file2); fp1 = fopen(file1, "r"); if (fp1 == NULL) exit(1); fp2 = fopen(file2, "r"); if (fp2 == NULL) exit(1); while (1) { int c1 = fgetc(fp.. 2018. 11. 21.
[c언어콘서트] 12장 4번 (파일 크기 비교) [12장 4번] 임의의 실수 100개를 생성시킨 후에 텍스트 파일과 이진 파일로 저장하여 보고 그 크기를 비교하여 보라. [만들어진 파일]- w(텍스트파일) wb(이진 파일) [풀이]#include #include int main() { FILE *fp1 = NULL; FILE *fp2 = NULL; int value, i; fp1 = fopen("programming_4(w).txt", "w"); if (fp1 == NULL) exit(1); fp2 = fopen("programming_4(wb).txt", "wb"); if (fp2 == NULL) exit(1); for (i = 0; i < 100; i++) { value = rand(); fprintf(fp1, "%d ", value); fwrit.. 2018. 11. 21.
[c언어콘서트] 12장 3번 (라인개수 출력) [12장 3번] 텍스트 파일 안에 들어 있는 라인의 개수를 계산하는 프로그램을 작성해보자. [programming_3.txt] [풀이]#include int main() { FILE *fp; fp = fopen("programming_3.txt", "r"); char tmp; int cnt = 1; if (fp == NULL) { exit(0); } while (fscanf(fp, "%c", &tmp) != EOF) { printf("%c", tmp); if (tmp == '\n') cnt++; } printf("\n\n라인의 개수=%d\n", cnt); return 0; } 2018. 11. 16.
[c언어콘서트] 12장 2번 (정수 출력) [12장 2번] 정수들이 저장된 파일에서 모든 정수를 읽어서 정수의 개수, 합계, 평균을 출력하는 프로그램을 작성하라. [programming_2.txt] [풀이]#include int main() { FILE *fp; fp = fopen("programming_2.txt", "r"); int sum = 0; int cnt = 0; int num; double average; if (fp == NULL) { exit(0); } while (fscanf(fp, "%d", &num) != EOF) { sum += num; cnt++; } average = sum / cnt; printf("정수들의 개수 : %d\n", cnt); printf("정수들의 합계 : %d\n", sum); printf("정수들의 .. 2018. 11. 16.
[c언어콘서트] 12장 1번 (파일 저장) [12장 1번] 사용자로부터 직원에 대한 정보를 받아서 employee.txt 파일에 저장하는 프로그램을 작성해보자. [employee.txt] [풀이]#include int main() { FILE *fp; fp = fopen("programming_1.txt", "w"); char name[20]; int age, wage; if (fp == NULL) { exit(0); } printf("직원 이름 : "); scanf("%s", name); fprintf(fp, "직원 이름 : %s\n", name); printf("나이 : "); scanf("%d", &age); fprintf(fp, "나이 : %d\n", age); printf("월급 : "); scanf("%d", &wage); fprint.. 2018. 11. 16.
[c언어콘서트] 11장 6번 (가위,바위,보) [11장 6번] 열거형을 사용하여 사람과 컴퓨터 사이의 가위, 바위, 보 게임을 구현해보자. [풀이]#include enum COM {s, r, p}; int main() { enum COM com = 0; int user; printf("가위(0), 바위(1), 보(2)를 입력하세요 : "); scanf("%d", &user); if (com == user) printf("비겼습니다. \n"); else if (com > (user + 1) % 3) printf("컴퓨터가 졌습니다. \n"); else printf("컴퓨터가 이겼습니다. \n"); return 0; } 2018. 11. 16.
[c언어콘서트] 11장 5번 (복소수의 덧셈) [11장 5번] 두 개의 복소수를 더하는 프로그램을 작성해보자. a+bi와 c+di의 덧셈은 다음과 같다.(a+bi)+(c+di)=(a+b)+(c+d)i복소수는 구조체를 사용하여 표현해보자. [풀이]#include struct NUM { double integer; double complex_num; }; int main() { struct NUM num[2]; printf("첫번째 복소수를 입력하시오 (a, b) : "); scanf("%lf %lf", &num[0].integer, &num[0].complex_num); printf("두번째 복소수를 입력하시오 (a, b) : "); scanf("%lf %lf", &num[1].integer, &num[1].complex_num); printf("%0.. 2018. 11. 16.
[c언어콘서트] 11장 4번 (학생 입력) [11장 4번] 학생을 나타내는 구조체 student는 주민등록버호(정수), 이름(문자열), 전화번호(문자열), 로 구성된다. 구조체 안에서 공용체를 사용하여 주민등록번호 또는 학번 중에서 하나를 사용할 수 있도록 구조체를 정의해보자, [풀이]#include struct STUDENT { union number { int per_num; // 생년월일 int stu_num; // 학번 }; char name[20]; // 이름 char phone[20]; // 전화번호 }; int main() { struct STUDENT student[2] = { {0, "홍길동1", "010-0000-0000"}, {0, "홍길동2", "010-1111-1111"} }; student[0].stu_num = 2018.. 2018. 11. 16.