본문 바로가기

Solution_/C언어 콘서트40

[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.
[c언어 콘서트] 10장 8번 (대문자를 소문자로) [10장 8번] 사용자가 입력한 문자열에서 대문자를 소문자로 변경하는 프로그램을 작성해보자. [풀이]#include #include #include int main() { char buffer[200]; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", buffer); for (int i = 0; buffer[i]; i++) buffer[i] = tolower(buffer[i]); printf("소문자 출력 : %s\n", buffer); return 0; } 2018. 10. 22.
[c언어 콘서트] 10장 7번 (문자열을 거꾸로) [10장 7번] 사용자가 입력한 문자열을 거꾸로 하는 프로그램을 작성해보자. [풀이]#include #include int main() { char str[100]; char re_str[100]; int i, len; printf("문자열을 입력하시오 : "); scanf("%[^\n]s",str); len = strlen(str) - 1; for (i = 0; str[i]; i++) { re_str[i] = str[len]; len--; } re_str[i] = '\0'; printf("반대로 된 문자열 : %s \n", re_str); return 0; } 2018. 10. 11.
[c언어 콘서트] 10장 6번 (소문자를 대문자로 변환) [10장 6번] 사용자로부터 텍스트를 입력받아서 텍스트를 모두 대문자로 출력하는 프로그램을 작성해보자. 어떤 라이브러리 함수를 사용하여도 좋다. [hint] _ 소문자를 대문자로 변경해주는 toupper() 함수를 사용한다. [풀이]#include #include int main() { char str[100]; int i; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", str); for (i = 0; str[i]; i++) { str[i] = (char)toupper(str[i]); } printf("대문자 출력 : %s\n", str); return 0; } 2018. 10. 11.
[c언어 콘서트] 10장 5번 (모음 제거) [10장 5번] 텍스트 안의 모음을 전부 삭제하는 프로그램을 작성해본다. [풀이]#include #include int main() { char str[100]; int i, j; printf("텍스트를 입력한다 : "); scanf("%[^\n]s", str); for (i = 0; str[i]; i++) { if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u') { for (j = i; str[j]; j++) { str[j] = str[j + 1]; } } else if (str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i.. 2018. 10. 11.
[c언어 콘서트] 10장 4번 (공백 제거) [10장 4번] 텍스트 안에 포함된 과도한 공백을 없애는 프로그램을 작성해보자. [풀이]#include int main() { char str[100]; int i; printf("텍스트를 입력하시오 : "); scanf("%[^\n]s", str); for (i = 0; str[i]; i++) { if (str[i] == ' ' && str[i + 1] == ' ') { continue; } printf("%c", str[i]); } printf("\n"); return 0; } 2018. 10. 11.
[c언어 콘서트] 10장 3번 (문자반복 횟수 계산) [10장 3번] 문자열 안에 포함된 문자들의 출현 횟수를 계산하는 프로그램을 작성한다. 예를 들어, 문자열 "abc"라면 'a', 'b', 'c'문자가 한 번만 출현한다. [풀이]#include #include int main() { int i; char str[100]; char ascii[127] = { 0, }; printf("입력 문자열 : "); scanf("%s", str); for (i = 0; str[i]; i++) { ascii[str[i]]++; } for (i = 0; str[i]; i++) { if (ascii[str[i]] == 0) { continue; } else { printf("%c문자가 %d번 등장하였음!\n", str[i], ascii[str[i]]); ascii[str.. 2018. 10. 11.