본문 바로가기

Solution_/C언어 콘서트40

[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.
[c언어 콘서트] 8장 5번 (소수 검사) [8장 5번] 주어진 정수가 소수(prime number)인지를 검사하는 함수 prime()을 작성하라. 이 함수를 이용하여 1부터 100 사이에 존재하는 소수들을 모두 출력하라. 하나의 힘트는 소수라면 1과 자기 자신을 제외한 약수를 가지면 안 된다. 따라서 만약 정수 n이 소수인지를 검사하려면 2부터 n-1까지의 숫자로 n을 나누어서 나누어 떨어지지 않으면 소수이다. [풀이]#include void prime(int, int); int main() { prime(1, 100); return 0; } void prime(int a, int n) { int i, j; int count = 0; for (i = a; i 2018. 9. 12.