본문 바로가기

Solution_134

[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.
[c언어 콘서트] 10장 2번 (비밀번호 입력) [10장 2번] 사용자로부터 비밀 번호를 받아서 화면에 표시하고 미리 정해진 문자열 ("1234")과 같은지를 검사한다. 비밀번호 입력이 보이지 않도록 getch() 함수와 putch('*") 함수를 사용한다. [풀이]#include #include #include int main() { char pass[] = "1234"; char answer[100]; int buffer = 0; int i = 0; printf("비밀번호를 입력하시오 : "); for (i = 0;buffer != 13; i++) { answer[i] = getch(); if (answer[i] == '\0') { i--; continue; } putch('*'); buffer = (int)answer[i]; } answer[i-.. 2018. 10. 11.
[c언어 콘서트] 10장 1번 (암호 생성) [10장 1번] 사용자로부터 암호를 입력받는다. 사용자의 암호가 해킹에 대한 안전도가 강력한지를 검사한다. 만약 암호 안에 대문자, 소문자, 숫자가 모두 들어있으면 강력한 암호로 간주한다. 만약 사용자의 암호가 3가지 종류의 문자를 다 가지고 있지 않으면 프로그램은 보안을 위하여 더 강력한 암호를 고려하라고 제안한다. [풀이]#include int check(char *str, char *str_check); void set(char *str_check); int main() { char str[100]; char str_check[3] = { 0, }; do{ set(str_check); printf("암호를 생성하시오 : "); scanf("%s", str); } while (check(str, st.. 2018. 10. 11.
[c언어 콘서트] 9장 4번 (정수와 소수 출력) [9장 4번] 실수 3.14를 보내면 정수부 3과 소수부 0.14를 나누어서 보내주는 함수 void get(double value, int *i_part, double f_part)을 구현해보자. 매개 변수로 포인터를 사용하면 함수가 2개 이상의 값을 반환할 수 있다. [풀이]#include void get(double, int*, double*); int main() { double value = 3.14; double f_part; int i_part; get(value, &i_part, &f_part); printf("정수부=%d\n", i_part); printf("소수부=%f\n", f_part); return 0; } void get(double value, int *i_part, double.. 2018. 9. 30.
[c언어 콘서트] 9장 3번 (두개의 근 출력) [9장 3번] 2차 방정식의 근을 계산하는 함수를 작성하고 이 함수를 호출하여서 2차 방정식의 근을 출력하는 프로그램을 작성해보자. 매개 변수로 포인터를 사용하면 함수가 2개 이상의 값을 반환할 수 있다. 다음과 같이 두개의 근을 모두 포인터를 이용하여서 반환하도록 한다. void quadratic(int a, int b, int c, double* xplus, double* xminus) { *xminus = (-b - sqrt(b*b - 4 * a*c)) / (2 * a); *xplus = (-b + sqrt(b*b - 4 * a*c)) / (2 * a); } [풀이]#include #include void quadratic(int, int, int, double*, double*); int main.. 2018. 9. 30.
[c언어 콘서트] 9장 2번 (역순 출력) [9장 2번] 포인터를 이용하여서 크기가 5인 1차원 정수 배열에 저장된 값을 역순으로 출력해보자. [풀이]#include void reverse(int *, int); int main() { int arr[5]; int i; printf("5개의 정수를 입력하시오 : "); for (i = 0; i = 0; i--) { printf("%d ", A[i]); } printf("\n"); } 2018. 9. 30.
[c언어 콘서트] 9장 1번 (배열 요소들의 합) [9장 1번] 1차원 배열을 받아서 배열 요소들의 합을 계산하는 함수 int get_array_sum(int *A, int size)을 구현하고 int data[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };을 가지고 테스트 하라. [풀이]#include void print_array(int *, int); int get_array_sum(int *, int); int main() { int data[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int sum; int *a = data; sum = get_array_sum(a, 10); printf("print_array()\n"); print_array(a, 10); printf("배열 요소의 합 = %d\n", .. 2018. 9. 14.
[c언어 콘서트] 8장 13번 (n의 3승 더하기) [8장 13번] 다음을 계산하는 재귀적인 프로그램을 작성하시오.1³+2³+3³+...+n³ [풀이]#include int sum(int); int main() { int num, result; printf("정수를 입력하시오 : "); scanf("%d", &num); result = sum(num); printf("%d\n", result); return 0; } int sum(int num) { if (num == 1) { return 1; } else { return (num*num*num) + sum(num - 1); } } 2018. 9. 12.
[c언어 콘서트] 8장 12번 (자리수 출력) [8장 12번] 재귀 호출을 이용하여 정수의 각 자리수를 출력하는 함수 show_digit(int x)를 작성하고 테스트하라. 즉 정수가 1234이면 화면에 1 2 3 4와 같이 출력한다. 함수는 일의 자리를 출력하고 나머지 부분을 대상으로 다시 같은 함수를 재귀 호출한다. 예를 들어서 1234의 4를 출력하고 나머지 123을 가지고 다시 같은 함수를 재귀 호출한다. 1234를 10으로 나누면 123이 되고 4는 1234를 10으로 나눈 나머지이다. [풀이]#include void show_digit(int x); int main() { int num; printf("정수를 입력하시오 : "); scanf("%d", &num); show_digit(num); printf("\n"); return 0; }.. 2018. 9. 12.
[c언어 콘서트] 8장 10번 (계산기) [8장 10번] 덧셈, 뺄셈, 곱셈, 나눗셈을 지원하는 계산기 프로그램을 작성하여 보자. 이번에는 각 연산들이 몇 번씩 계산되었는지를 기억하게 하자. 각 연산을 지원하는 함수들은 자신이 호출된 횟수를 화면에 출력한다. a) 정적 지역 변수를 사용하여 프로그램을 작성하라.b) 전역 변수를 사용하여 프로그램을 작성하라. [풀이]#include void sum(int, int); void sub(int, int); void mul(int, int); void div(int, int); int main() { int num1, num2; char cal; while (1) { printf("연산을 입력하시오(종료는 Ctrl+C) : "); scanf("%d%c%d", &num1, &cal, &num2); if .. 2018. 9. 12.