본문 바로가기

Solution_134

[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.
[c언어콘서트] 11장 3번 (직원 찾기) [11장 3번] 직원을 나타내는 구조체 employee가 사번(정수), 이름(문자열), 전화번호(문자열), 나이(정수) 등으로 구성된다. 구조체의 배열을 선언하고 10명의 데이터로 초기화하라. 이중에서 나이가 20이상 30이하인 직원을 찾아서 출력하도록 하라 [풀이]#include #include #define MAX 10 struct employee { int num; char name[20]; char number[20]; int old; }; int main() { struct employee member[MAX]; char name[20]; char number[20]; for (int i = 0; i < MAX; i++) { scanf("%s %s %d", name, number, &member.. 2018. 10. 28.
[c언어콘서트] 11장 2번 (이메일 표현) [11장 2번] 구조체를 이용하여 이메일을 표현할 수 있는 구조체를 정의하고, 적당한 초깃값을 부여하고 출력하는 프로그램을 작성하라. 구조체의 멤버는 제목, 수신자, 발신자, 내용, 날짜, 우선순위 등으로 구성된다. [풀이]#include #include #define MAX 2 struct user { char title[20]; char receiver[20]; char caller[20]; char main[30]; char date[20]; int priority; }; int main() { struct user member[MAX]; char title[20]; char receiver[20]; char caller[20]; char main[30]; char date[20]; printf(".. 2018. 10. 28.
[c언어콘서트] 11장 1번 (시간차이 계산) [11장 1번] 구조체를 이용하여서 현재 시각을 표현한다. 사용자로부터 2개의 시각을 입력받아서 두 시각 사이의 차이를 계산하여 출력하는 프로그램을 작성한다. [풀이]#include struct time { int hour, min, sec; }; int main() { struct time now; struct time future; int hour, min, sec; printf("시작시간(시, 분, 초) : "); scanf("%d %d %d", &now.hour, &now.min, &now.sec); printf("종료시간(시, 분, 초) : "); scanf("%d %d %d", &future.hour, &future.min, &future.sec); hour = future.hour - now.. 2018. 10. 28.
[c언어콘서트] 10장 14번 (철자 교정 프로그램) [10장 14번] 간단한 철자 교정 프로그램을 작성해보자. 문장의 끝에 마침표가 존재하는지를 검사한다. 역시 마침표가 없으면 넣어준다. 또한 문자열의 첫 번째 문자가 대문자인지를 검사한다. 만약 대문자가 아니면 대문자로 변환한다. 즉 입력된 문자열이 "pointer is easy"라면 "Pointer is easy."로 변환하여 화면에 출력한다. [풀이]#include #include #include int main() { char buffer[100]; int len; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", buffer); buffer[0] = toupper(buffer[0]); len = strlen(buffer); if (buffer[len - 1] != '.').. 2018. 10. 22.
[c언어콘서트] 10장 13번 (문자의 빈도 계산) [10장 13번] 사용자로부터 받은 문자열에서 각각의 문자가 나타나는 빈도를 계산하여 출력하는 프로그램을 작성하시오. [풀이]#include int main() { int i; char buffer[200]; char ascii[127] = { 0, }; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", buffer); for (i = 0; buffer[i]; i++) ascii[buffer[i]]++; for (i = 0; i < 26; i++) printf("%c : %d\n", 'a' + i, ascii['a' + i]); for (i = 0; i < 26; i++) printf("%c : %d\n", 'A' + i, ascii['A' + i]); return 0; } 2018. 10. 22.
[c언어콘서트]10장 12번 (문자열의 공백 삭제) [10장 12번] 문자열을 입력으로 받아서 문자열에 포함된 모든 공백 문자를 삭제하는 함수를 작성하고 테스트하라. [풀이]#include #include #include int main() { char buffer[20]; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", buffer); for (int i = 0; buffer[i]; i++) if (isspace(buffer[i])) strcpy(&buffer[i], &buffer[i + 1]); printf("공백이 제거된 문자열 : %s\n", buffer); return 0; } 2018. 10. 22.
[c언어콘서트]10장 11번 (문자를 아스키값으로 변환) [10장 11번] 사용자로부터 문자를 입력받아서 그 문자의 아스키 코드 값을 출력하는 프로그램을 작성하라. [풀이]#include #include int main() { char buffer; printf("문자 하나를 입력하시오 : "); scanf("%c", &buffer); printf("%c의 아스키코드 : %d\n", buffer, buffer); return 0; } 2018. 10. 22.
[c언어콘서트]10장 10번 (회문 검사) [10장 10번] 사용자로부터 받은 문자열이 회문인지를 점검하는 프로그램을 작성하라. [풀이]#include #include int main() { char buffer[200]; int len; int result = 1; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", buffer); len = strlen(buffer); for (int i = 0; i < len / 2; i++) if (buffer[i] != buffer[len - i - 1]) result = 0; if (result == 0) { printf("이 문자열은 회문이 아닙니다.\n"); } else { printf("이 문자열은 회문입니다.\n"); } return 0; } 2018. 10. 22.
[c언어 콘서트] 10장 9번 (문자열의 단어 세기) [10장 9번] 문자열 안의 단어들의 개수를 세는 프로그램을 작성해보자 [풀이]#include #include #include int main() { char buffer[200]; int cnt = 0; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", buffer); if (isalpha(buffer[0])) cnt++; for (int i = 0; i < strlen(buffer) - 2; i++) { if (isalpha(buffer[i]) == 0 && isalpha(buffer[i + 1]) != 0) cnt++; } printf("단어 개수 출력 : %d\n", cnt); return 0; } 2018. 10. 22.