도전! 프로그래밍3 정답
7145 단어 visual studioC열혈 C 프로그래밍C
도전 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void printArr(int (*ary)[4], int col) {
for (int i = 0; i < col; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", ary[i][j]);
}
printf("\n");
}
printf("\n");
}
void rotateArr(int (*ary)[4], int col) {
int temp[4][4];
for (int i = 0; i < 4; i++) {
for (int j = col - 1; j >= 0; j--) {
temp[i][col - j - 1] = ary[j][i];
}
}
for (int i = 0; i < col; i++) {
for (int j = 0; j < 4; j++) {
ary[i][j] = temp[i][j];
}
}
}
int main(void) {
int arr[4][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} };
printArr(arr, sizeof(arr) / sizeof(arr[0]));
for (int i = 0; i < 3; i++) {
rotateArr(arr, sizeof(arr) / sizeof(arr[0]));
printArr(arr, sizeof(arr) / sizeof(arr[0]));
}
return 0;
}
도전 2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void printArr(int (*ary)[10], int num) {
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
printf("%d ", ary[i][j]);
}
printf("\n");
}
printf("\n");
}
void snailArr(int (*ary)[10], int num) {
int Hlimit = num - 1; // 배열 좌표의 상한선
int Llimit = 0; // 배열 좌표의 하한선
int x = 0, y = 0;
int s = 1;
while (s <= num * num) {
if (Llimit == Hlimit) { // num이 홀수이고 x와 y가 배열의 정가운데를 가리킬 때
ary[y][x] = s;
break;
}
for (; x < Hlimit; x++) {
ary[y][x] = s;
s++;
}
for (; y < Hlimit; y++) {
ary[y][x] = s;
s++;
}
for (; x > Llimit; x--) {
ary[y][x] = s;
s++;
}
for (; y > Llimit; y--) {
ary[y][x] = s;
s++;
}
x++;
y++;
Llimit++;
Hlimit--;
}
}
int main(void) {
int n;
int arr[10][10]; // 비주얼 스튜디오의 VLA 미지원으로 인해 부득이하게 배열 최대 크기 10x10으로 지정
printf("숫자를 입력하시오 : ");
scanf("%d", &n);
snailArr(arr, n);
printArr(arr, n);
return 0;
}
배열의 테두리를 바깥쪽부터 한겹씩 만든다는 생각으로 코드를 짰다.
도전 3
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
printf("난수의 범위 : 0부터 99까지 \n");
for (i = 0; i < 5; i++)
printf("난수 출력 : %d \n", rand() % 100); // 100으로 나누면 나머지는 0 ~ 99까지 나올수 있음
return 0;
}
도전 4
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
srand((int)time(NULL));
printf("주사위 1의 결과 : %d\n", rand() % 6 + 1); // 6으로 나누면 나머지는 0 ~ 5사이가 나옴
printf("주사위 2의 결과 : %d\n", rand() % 6 + 1); // 0은 주사위에서 나올 수 없으므로 1을 더해 1 ~ 6까지 나오도록 조정
return 0;
}
도전 5
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int user;
int computer;
int win = 0;
int draw = 0;
while (1) {
srand((int)time(NULL));
computer = rand() % 3 + 1;
printf("바위는 1, 가위는 2, 보는 3 : ");
scanf("%d", &user);
switch (user) {
case 1 :
printf("당신은 바위 선택, ");
break;
case 2 :
printf("당신은 가위 선택, ");
break;
case 3 :
printf("당신은 보 선택, ");
break;
}
switch (computer) {
case 1:
printf("컴퓨터는 바위 선택, ");
break;
case 2:
printf("컴퓨터는 가위 선택, ");
break;
case 3:
printf("컴퓨터는 보 선택, ");
break;
}
if ((user == 1 && computer == 2) ||
(user == 2 && computer == 3) ||
(user == 3 && computer == 1)) {
printf("당신이 이겼습니다!\n");
win++;
}
else if (user == computer) {
printf("비겼습니다!\n");
draw++;
}
else {
printf("당신이 졌습니다!\n");
printf("게임의 결과 : %d승, %d무\n", win, draw);
break;
}
}
return 0;
}
도전 6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
srand((int)time(NULL));
int computer[3] = {0};
while (computer[0] == computer[1] ||
computer[1] == computer[2] ||
computer[0] == computer[2]) {
for (int i = 0; i < 3; i++) {
computer[i] = rand() % 10;
}
}
int user[3];
int strike, ball, n = 1;
printf("Start Game!\n");
while (1) {
strike = 0;
ball = 0;
printf("3개의 숫자 선택 : ");
scanf("%d %d %d", &user[0], &user[1], &user[2]);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if ((user[i] == computer[j]) && (i == j)) // 숫자와 위치가 같을 때
strike++;
if ((user[i] == computer[j]) && (i != j)) // 숫자만 같고 위치는 다를 때
ball++;
}
}
printf("%d번째 도전 결과 : %dstrike, %dball!!\n", n, strike, ball);
if (strike == 3)
break;
else
n++;
}
printf("\n");
printf("Game Over!\n");
return 0;
}
개인적으로 도전 2가 시간도 오래 걸리고 제일 어려웠다.
아직 갈 길이 먼듯...
Author And Source
이 문제에 관하여(도전! 프로그래밍3 정답), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seosdh/열혈-C-프로그래밍-도전-프로그래밍3-정답저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)