본문 바로가기

프로그래밍/C언어

(7)
21-05-24 1. 행맨 게임 제작 #include #include #include int check(char s[], char a[], char ch); int main(void) { char solution[10][100] = { "in car", "at noon", "a boy" }; // 문제 int nstr = 3; // 문제 개수 char answer[10][100]; // 문제의 빈칸 표시 저장 int k, i, t, ind; char op; // 문제를 빈칸으로 바꾸어 출력 printf("문제:\n"); while (1) { for (k = 0; k < nstr; k++) { strcpy(answer[k], solution[k]); i = 0; while (solution[k][i] != NULL) { .. 2021. 5. 24. 20:00
21-05-18 1. 배열로 평균 구하기 #include int get_average(int scores[], int n); int main() { int scores[5] = { 1, 2, 3, 4, 5 }; int avg; avg = get_average(scores, 5); printf("평균 = %d\n", avg); return 0; } int get_average(int scores[], int n) { int i; int sum = 0; for (i = 0; i < n; i++) { sum += scores[i]; } return sum / n; } 배열의 경우, 사본이 아닌 원본이 전달된다. 즉, 전역 변수와 같은 성질을 갖는다. 2. 선택 정렬 #include #define SIZE 10 int main.. 2021. 5. 18. 02:39
21-05-17 1. 순환(recursion) 함수는 자기 자신을 호출할 수도 있다. 1) 팩토리얼 구하기 long factorial(int n) { if (n 0) { print_binary(x / 2); printf("%d", x % 2); } } int main() { int n; scanf("%d", &n); print_binary(n); return 0; } 3) 최대공약수 구하기 #include int gcd(int x, int y) { if (y == 0) return x; else return gcd(y, x % y); } int main() { int x, y; scanf("%d %d", &x, &y); printf("%d\n", gcd(x, y)); } 수학적 알고리즘에 대한 지식(유클리드 호제법)이 .. 2021. 5. 17. 03:42
21-05-15 1. 지역 변수와 전역 변수 1) 지역 변수 지역 변수는 선언된 블록이 끝나면 자동으로 소멸된다. 반복문 블록 내 지역 변수의 경우, 반복될 때마다 초기화된다. 초기화되지 않은 지역 변수는 쓰레기값을 같은다. 매개 변수도 일종의 지역 변수이다. 2) 전역 변수 자동으로 0으로 초기화된다. #include int x; // x를 전역 변수로 설정 void sub(); int main() { for (int x = 0; x < 10; x++) sub(); } void sub() { for (int x = 0; x < 10; x++) printf("*"); } x는 전역 변수이므로 모든 함수에서 같은 값을 공유한다. 2. 생존 기간 - 저장 유형 지정자 1) auto : 자동 변수 함수가 시작되면 생성, 끝나.. 2021. 5. 15. 10:39
21-05-07 1. Tic-Tac-Toe #define _CRT_SECURE_NO_WARNINGS #include int main(void) { char board[3][3]; int x, y, k, i, m; int end = 0; // 9번째 수를 두면서 승패가 결정나는 경우, // 무승부 메세지와 승리 메세지 둘 다 출력되는 경우를 방지하기 위해 설정 // 보드를 초기화한다. for (x = 0; x < 3; x++) for (y = 0; y < 3; y++) board[x][y] = ' '; // 사용자로부터 위치를 받는다. for (k = 0; k < 9; k++) { printf("(x, y) 좌표: "); scanf(" %d %d", &x, &y); // 이미 둔 곳에 다시 두려고 할 때 출력하는 메세지 .. 2021. 5. 7. 01:13
21-05-06 전반적으로 발생하는 문제 오버플로우 문제 배열을 몰라서 발생하는 문제 1. 난수 함수 #define _CRT_SECURE_NO_WARNINGS #include #include // 난수 함수의 헤더 파일 #include int main() { int i; srand((unsigned)time(NULL)); // 현재의 시각을 시드로 사용하는 방식 for (i = 0; i < 6; i++) printf("%d ", rand()%45); // 0부터 44까지 45개의 수 중 랜덤하게 선택 return 0; } 당연하지만 같은 수가 중복돼서 나타날 수 있다. 2. 랜덤하게 점 찍기 #define _CRT_SECURE_NO_WARNINGS #include #include // 난수 헤더 파일 #include #.. 2021. 5. 6. 02:59
21-05-05 1. 함수 적용 예제 #define _CRT_SECURE_NO_WARNINGS #include int get_max(int x, int y) { if (x > y) return x; else return y; } int get_integer() { int value; printf("정수를 입력하시오: "); scanf("%d", &value); return value; } int main() { int a = get_integer(); int b = get_integer(); printf("더 큰 값은 %d 입니다.\n", get_max(a, b)); return 0; } 2. 팩토리얼 #define _CRT_SECURE_NO_WARNINGS #include long factorial(int n) { l.. 2021. 5. 5. 02:16