목록C (65)
개인노트
문제 ) 컴퓨터와 야구게임을 하는 프로그램을 만들어 보자. 야구 게임의 자릿수를 입력 받은 뒤 컴퓨터는 입력된 자릿수 만큼의 야구게임을 제시한다. 사용자가 1번 답을 입력할 때마다 값과 위치가 같으면 스트라이크, 값만 같으면 볼 이라고 알려 주어야 한다. 도전 3-6.c #include #include #include int main(void) {int p, p2, i,a=0; // 자리수 선택int st=0, ba=0; // 스트라이크, 볼int arr[10], n[10]; // 컴퓨터 숫자 저장, 입력 숫자 저장 배열srand((int)time(NULL)); main:printf("야구 게임 자리수 입력 : ");scanf_s("%d", &p);if (p >= 11) {printf("10이하의 숫자를..
문제 ) 가위바위보 게임을 만들어 컴퓨터가 랜덤으로 선택하게하여 사용자와 가위바위보를 겨루게 해보자.맨 마지막에는 승 패 무의 결과값도 만들어보자. 도전 3-5.c #include #include #include int main(void) {int i, me, pc, win = 0, lose = 0, draw = 0;char scissors[] = { "가위" };char rock[] = { "바위" };char paper[] = { "보" };srand((int)time(NULL)); while (win != 1) {restart:printf("# 가위 1, 바위 2, 보 3 #\n");printf("선택 : ");scanf_s("%d", &me);pc = rand() % ((3 - 1) + 1) + ..
문제 ) 주사위를 두개 던졌을 때 예측 불가능한 결과를 출력하는 프로그램을 작성해보자. 도전 3-4.c #include #include #include int main(void) { int i; srand((int)time(NULL)); for (i = 0; i < 2; i++) {printf("주사위 %d의 결과 : %d\n", i + 1, rand() % ((6 - 1) + 1) + 1); // ((최댓값-최솟값)+1)+최솟값} system("pause");}
rand함수를 이용하여 난수를 출력 하게되면, 그 값은 고정이 되어 난수가 아닌 의사 난수가 된다. 이러한 문제를 해결할 수 있도록 ANSI 표준에 srand라는 함수를 정의해놓았다. srand 함수는 rand 함수와 마찬가지로 stdlib.h를 선언 해주어야 한다. #include "stdlib.h" //srand함수 사용을 위한 선언void srand(unsigned int seed); //인자 값으로 시드를 받는다. #include #include "stdlib.h" int main(void) {int seed, i; printf("시드 값 입력 : ");scanf_s("%d", &seed); srand(seed); for (i = 0; i < 5; i++) {printf("난수 : %d\n", r..
문제 ) 난수(Random Number)를 출력해주는 rand함수를 이용하여 0이상 99이하의 난수를 5개 출력해보자.* rand 함수는 컴파일을 하게되면 난수가 고정 값이기 때문에 의사 난수 (pseudo-random number)라고 한다. 도전 3-3.c #include #include "stdlib.h" int main(void) {printf("0부터 %d까지의 랜덤한 수 출력\n\n", RAND_MAX); // RAND_MAX = rand 함수의 최대 값 int i=0; while (i != 5) {printf("%d\n", (rand()%(99-0)+1)+1); // (원하는 최댓값 + 원하는 최솟값)+최솟값)+최솟값)i++;} getchar();}
문제 ) 숫자 n을 입력 받아서 n x n 크기의 배열을 선언한 후 달팽이 배열로 값을 입력 해보자. 도전 3-2.c #include #include "stdlib.h"#define A 100int main(void) {int arr[A][A], size, n = 1;// 배열선언, 입력받을 배열의 크기, 배열의 요소 값 printf("배열의 크기를 입력하세요 : ");scanf_s("%d", &size); int i, l = size; // i = 배열 값 입력 횟수int x = 0, y = -1; // 배열 위치int turn = 1; // 배열 위치 조정을 위한 수 while (l != 0) {for (i = 0; i < l; i++) {y += turn;arr[x][y] = n..
문제 ) 길이가 4 x 4인 int형 2차원 배열을 밑의 그림에서 첫번째 표와 같이 선언한 후 오른쪽 방향으로 90도씩 회전하는 결과를 출력해보자. (회전을 했을 때 각 첫번째 열을 첫번째 표에서 찾으면 규칙을 알 수 있다.) 도전 3-1.c #include #include "stdlib.h" int main(void) {int arr[4][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10,11,12},{13,14,15,16}};int i, o; // 반복문에서 배열의 크기 for (i = 0; i < 4; i++) { // 0회전for (o = 0; o < 4; o++) {printf("%2d ", arr[i][o]);}printf("\n");} printf("\n ▼ \n\n");..
우리가 자주사용하는 main함수의 매개변수 값은 보통 void로 사용 하였다. 하지만 main함수도 다른 함수들과 같이인자 값을 받을 수 있다. #include #include "stdlib.h" int main(int argc, char * argv[]) {int i = 0;printf("전달된 문자열의 수 : %d \n", argc); for (i = 0; i < argc; i++) {printf("%d번째 문자열 : %s \n", i+1, argv[i]);}return 0;} 위의 소스 코드를 그대로 디버깅하여 exe 파일을 만든 후 cmd창을 열어 해당 위치로 간다. cmd창에서 [파일 이름] 문자열 을 입력해주면 위와 같은 그림이 나온다.
모든 함수는 프로그램 실행 시 메인메모리에 저장이 된다. 배열의 이름이 배열의 시작 주소를 의미하듯 함수의 이름은 함수가 저장된 메모리 공간의 주소값을 나타낸다.이러한 함수의 주소값 저장을 위한 포인터를 함수 포인터 변수라고 한다. 1. 함수 포인터 선언 int function(int a, int b); // function 함수int (*ptr)(int, int) = function; // 함수 포인터 void smiple(int * ptra);void (*ptr)(int *) = simple; 2. 매개변수를 함수 포인터 변수로 선언하여 함수 호출 #include #include "stdlib.h" int WhoisFirst(int age1, int age2, int(*cm)(int n1, int n..