728x90
728x170
누구나 쉽게 즐기는 C언어 콘서트 7장 실습문제 정답
누구나 쉽게 즐기는 C언어 콘서트 7장 실습문제 정답
1번
#include <stdio.h>
int main(void) {
int i;
int days[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
for (i = 0; i < 12; i++)
printf("%d월은 %d일까지 있습니다.\n", i + 1, days[i]);
return 0;
}
2번
#include <stdio.h>
int main(void) {
int max, min, i, num[5];
printf("정수를 입력하시오: ");
scanf("%d", &num[0]);
max = num[0];
min = num[0];
for (i = 1; i < 5; i++) {
printf("정수를 입력하시오: ");
scanf_s("%d", &num[i]);
if (max < num[i]) {
max = num[i];
}
if (min > num[i]) {
min = num[i];
}
}
printf("최대값 = %d 최소값 = %d", max, min);
return 0;
}
3번
#include <stdio.h>
int main(void) {
int table[3][3];
int r, c, max[3] = { 0, }, aver[3] = { 0, }, sum, th = 1;
for (r = 0; r < 3; r++) {
printf("학번 %d인 학생의 시험1, 2, 3 점수 입력 : ", th++);
sum = 0;
for (c = 0; c < 3; c++) {
scanf("%d", &table[r][c]);
sum += table[r][c];
if (max[c] < table[r][c])
max[c] = table[r][c];
}
aver[r] = sum / (double)3;
}
printf("\n");
printf("============================================\n");
printf("%5s %6s %6s %6s\n", "학번", "시험#1", "시험#2", "시험#3");
for (r = 0; r < 3; r++) {
printf("%5d ", r + 1);
for (c = 0; c < 3; c++)
printf("%6d ", table[r][c]);
printf("\n");
}
for (r = 0; r < 3; r++)
printf("%d 학생의 평균 점수는 %d점입니다.\n", r + 1, aver[r]);
return 0;
}
4번
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int ran[10] = { 0, };
int i, cnt, many = 0, rannum;
srand((unsigned)time(NULL));
// 난수 100번
for (cnt = 0; cnt < 100; cnt++) {
// 난수 범위: 0~9까지
rannum = rand() % 10;
ran[rannum]++;
}
for (i = 0; i < 10; i++) {
// 0~9까지의 수가 몇 번 출력되는지 확인
printf("%d: %d개\n", i, ran[i]);
// i가 many보다 수가 클 경우 many에 i를 저장
if (ran[i] > ran[many])
many = i;
}
printf("\n가장 많이 생성된 수: %d\n", many);
printf("%d가 생성된 개수: %d개\n", many, ran[many]);
return 0;
}
5번
#include <time.h>
#include <stdlib.h>
int MAX = 100000;
int research(int(*tile)[20]);
void where(int* n, int* m, int val);
void move(int(*tile)[20], int n, int m);
void view(int(*tile)[20]);
int main(void) {
int n, m, i, j;
int tile[20][20];
int number;
int count = 0;
srand(time(0));
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
tile[i][j] = 0;
}
}
n = 9; m = 9;
tile[n][m] = 1;
for (; count < MAX && research(tile) != 1; ) {
number = rand() % 8;
where(&n, &m, number);
move(tile, n, m);
count++;
}
view(tile);
printf("벌레가 범위를 전부 이동하는 동안 %d번의 이동이 있었습니다.\n", count);
return 0;
}
void view(int(*tile)[20]) {
int i, j;
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
printf("%d ", tile[i][j]);
}
printf("\n");
}
}
int research(int(*tile)[20]) {
int i, j;
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
if (tile[i][j] == 0) return 0;
}
}
return 1;
}
void where(int* n, int* m, int val) {
switch (val) {
case 0:
if (*n == 0) return;
*n -= 1;
break;
case 1:
if (*n == 0 || *m == 19) return;
*n -= 1;
*m += 1;
break;
case 2:
if (*m == 19) return;
*m += 1;
case 3:
if (*m == 19 || *n == 19) return;
*m += 1;
*n += 1;
break;
case 4:
if (*n == 19) return;
*n += 1;
break;
case 5:
if (*n == 19 || *m == 0) return;
*n += 1;
*m -= 1;
break;
case 6:
if (*m == 0) return;
*m -= 1;
break;
case 7:
if (*m == 0 || *n == 0) return;
*m -= 1;
*n -= 1;
break;
}
}
void move(int(*tile)[20], int n, int m) {
tile[n][m] = 1;
}
6번
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int dice[6] = { 0, };
int i, j;
srand((unsigned)time(NULL));
// 난수 6만번
for (i = 0; i < 60000; i++)
// 범위는 0~5
dice[rand() % 6]++;
printf("====================\n");
printf("%5s %8s\n", "면", "빈도");
printf("====================\n");
// 면과 빈도를 출력
for (j = 0; j < 6; j++)
// i + 1이므로 범위는 1~6
printf("%5d %10d회\n", j + 1, dice[j]);
return 0;
}
7번
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char sel;
int raser, i;
// 예약 상태
int SEAT[10] = { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0 };
while (1 == 1) {
printf("좌석을 예약하시겠습니까? (y 또는n) ");
sel = getchar();
getchar();
// 만약 예약을 하겠다고 한 경우 (y 입력)
if (sel == 'Y'||'y') {
// 현재 예약 상태 출력
printf("\n현재의 예약 상태는 다음과 같습니다.\n");
printf("---------------------------------------\n");
printf("1 2 3 4 5 6 7 8 9 10\n");
printf("---------------------------------------\n");
// 예약 상태
for (i = 0; i < 10; i++)
printf("%d ", SEAT[i]);
// 예약 과정
while (1 == 1) {
printf("\n몇 번째 좌석을 예약하시겠습니까? ");
scanf("%d", &raser);
// 1번째 좌석이 배열 0번째 요소에 저장돼 있음
SEAT[raser - 1]++;
// 만약 이미 예약이 된 경우라면 이미 있던 1에 ++가 되어 2가 되기 때문
if (SEAT[raser - 1] >= 2)
printf("이미 예약된 자리입니다.\n");
// 예약이 되지 않았던 자리라면 0에서 1이 되어 예약 상태가 됨
else {
printf("\n예약되었습니다.\n");
break;
}
}
printf("---------------------------------------\n");
printf("1 2 3 4 5 6 7 8 9 10\n");
printf("---------------------------------------\n");
for (i = 0; i < 10; i++)
printf("%d ", SEAT[i]);
printf("\n");
}
// 예약안함 (n 입력)
else if (sel == 'N' || 'n') {
printf("좌석 예약 종료\n");
exit(0);
}
}
return 0;
}
8번
#include <stdio.h>
#include <math.h>
int main(void) {
int i;
double num[5];
double sum = 0, avg = 0, dev = 0;
int count = 0;
//실수 5개 입력받기
printf("평균과 표준편차를 계산할 5개 이하의 실수를 입력해주세요.\n");
while (scanf("\n%lf", &num[count]) != NULL) {
sum += num[count];
count++;
if (count == 5) break;
}
//평균
avg = sum / count;
printf("평균 = %lf\n", avg);
//표준편차
sum = 0;
for (i = 0; i < count; i++)
sum += (num[i] - avg)*(num[i] - avg);
dev = sqrt(sum / count);
printf("표준편차 = %lf\n", dev);
return 0;
}
9번
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define X 7
#define Y 7
int main(void) {
char tile[Y][X] = { 0 };
int x, y, i, j;
int count = 0, remain;
srand((unsigned)time(NULL));
x = X / 2;
y = Y / 2;
tile[y][x] = 1;
if (getch() != '\0')
while (1 == 1) {
for (i = 0; i < Y; i++) {
for (j = 0; j < X; j++) {
if (tile[i][j] == 1) printf("* ");
else printf("_ ");
}
printf("\n");
}
printf("\n");
remain = 0;
for (i = 0; i < Y; i++)
for (j = 0; j < X; j++)
if (tile[i][j] == 1)
remain++;
if (remain == Y * X) break;
switch (rand() % 8) {
case 0:
if (y == 0) break;
tile[y--][x] = 1;
count++;
break;
case 1:
if (y == 0 || x == X - 1) break;
tile[y--][x++] = 1;
count++;
break;
case 2:
if (x == X - 1) break;
tile[y][x++] = 1;
count++;
break;
case 3:
if (y == Y - 1 || x == X - 1) break;
tile[y++][x++] = 1;
count++;
break;
case 4:
if (y == Y - 1) break;
tile[y++][x] = 1;
count++;
break;
case 5:
if (y == Y - 1 || x == 0) break;
tile[y++][x--] = 1;
count++;
break;
case 6:
if (x == 0) break;
tile[y][x--] = 1;
count++;
break;
case 7:
if (y == 0 || x == 0) break;
tile[y--][x--] = 1;
count++;
break;
}
}
printf("총 이동 수: %d번\n", count);
return 0;
}
728x90
그리드형
'IT > 프로그래밍' 카테고리의 다른 글
누구나 쉽게 즐기는 C언어 콘서트 9장 실습문제 정답 (0) | 2020.12.13 |
---|---|
누구나 쉽게 즐기는 C언어 콘서트 8장 실습문제 정답 (0) | 2020.12.13 |
누구나 쉽게 즐기는 C언어 콘서트 6장 실습문제 정답 (0) | 2020.12.13 |
누구나 쉽게 즐기는 C언어 콘서트 5장 실습문제 정답 (0) | 2020.12.13 |
누구나 쉽게 즐기는 C언어 콘서트 4장 실습문제 정답 (0) | 2020.12.13 |
댓글