10장 Exercise & Programming
10장 Exercise
1. 2번
2. 3번
3. 3번, 4번
4. 1번
5. 4번
6. #define MAX_SIZE 4
int b[4];
int i;
for(i=0;i<MAX_SIZE;i++)
7.
a
float grade[3];
float average, sum;
int i;
for (i = 0; i < 3; i++) {
printf("성적을 입력하시오: ");
scanf("%f", &grade[i]);
}
sum = 0.0;
for (i = 0; i < 3; i++) {
sum += grade[i];
}
average = sum / 3.0;
b
float grade[3] = { 10.0, 20.0, 30.0 };
float average, sum;
int i;
sum = 0.0;
for (i = 0; i < 3; i++) {
sum += grade[i];
}
average = sum / 3.0;
c
float get_average(float a[], int n);
int main(void){
float grade[3] = { 10.0, 20.0, 30.0 };
get_average(grade, 3);
return 0;
}
float get_average(float a[], int n)
{
float average, sum;
int i;
sum = 0.0;
for (i = 0; i < 3; i++) {
sum += a[i];
}
average = sum / 3.0;
}
d
void get_freq(float s[], int freq[], int n);
int main(void){
float grade[3] = { 10.0, 20.0, 30.0 };
int freq[10] = { 0 };
get_freq(grade, freq, 3);
return 0;
}
void get_freq(float score[], int f[10], int n){
int i, range;
for (i = 0; i < n; i++) {
range = score[i] / 10;
f[range]++;
}
}
8.
a. 인덱스 크기 생략 가능하다
int main(void){
int grade[10][60];
compute_avg(grade);
}
int compute_avg(int array[][60]) { ... }
b.배열 원소 경우 주소 선언
scanf("%f", &test[0]);
9. 00000
10장 Programming
1
#include <stdio.h>
int days[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int main(void){
int i;
for (i = 0; i < 12; i++)
printf("%d월은 %d일까지 있습니다.\n", i + 1, days[i]);
return 0;
}
2
#include <stdio.h>
int main(void) {
int list[10];
int i, max, min;
for (i = 0; i < 10; i++)
list[i] = rand();
max = min = list[0];
for (i = 1; i < 10; i++) {
if (list[i] < min)
min = list[i];
if (list[i] > max)
max = list[i];
}
printf("최대값은 %d\n", max);
printf("최소값은 %d\n", min);
return 0;
}
3
#include <stdio.h>
#define N_DATA 10
int array_equal(int a[], int b[], int size);
void array_print(int a[], int size) {
int i;
for (i = 0; i < size; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
int array_equal(int a[], int b[], int size) {
int i;
for (i = 0; i < size; i++) {
if (b[i] != a[i])
return 0;
}
return 1;
}
int main() {
int A[N_DATA] = { 1, 2, 3 };
int B[N_DATA] = { 0 };
array_print(A, 10);
array_print(B, 10);
if (array_equal(A, B, N_DATA) == 1)
printf("\n2개의 배열은 같음 \n");
else
printf("\n2개의 배열은 다름 \n");
return 0;
}
4
#include <stdio.h>
int main(void) {
int a[5] = { 1,2,3,0,0 };
int b[5] = { 0 };
array_copy(a, b, 5);
int i;
for (i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
printf("\n");
for (i = 0; i < 5; i++) {
printf("%d ", b[i]);
}
printf("배열이 복사되었음\n");
return 0;
}
int array_copy(int a[], int b[], int size) {
int i;
for (i = 0; i < size; i++) {
b[i] = a[i];
}
}
5
#include <stdio.h>
int main(){
int freq[10] = { 0 };
int i, max;
for (i = 0; i < 100; i++) {
++freq[rand() % 10];
}
max = 0;
for (i = 1; i < 10; i++) {
if (freq[i] > max)
max = i;
}
printf("가장 많이 나온수=%d\n", max);
return 0;
}
6
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUM 45
#define LOTTO_NUM 6
int main() {
int lotto[LOTTO_NUM];
int check[MAX_NUM + 1] = { 0 };
int i, num;
printf("로또 번호는 다음과 같습니다.\n");
srand(time(NULL));
for (i = 0; i < LOTTO_NUM; i++) {
do {
num = rand() % MAX_NUM + 1;
} while (check[num] == 1);
lotto[i] = num;
check[num] = 1;
}
for (i = 0; i < LOTTO_NUM; i++) {
printf("%d ", lotto[i]);
}
printf("\n");
return 0;
}
7
#include <stdio.h>
int main() {
int i, j, sum;
int data[3][5] = { { 12, 56, 32, 16, 98 },
{ 99, 56, 34, 41, 3 },
{ 65, 3, 87, 78, 21 } };
for (i = 0; i < 3; i++) {
sum = 0;
for (j = 0; j < 5; j++)
sum += data[i][j];
printf("%d행의 합계: %d\n", i, sum);
}
for (j = 0; j < 5; j++) {
sum = 0;
for (i = 0; i < 3; i++)
sum += data[i][j];
printf("%d열의 합계: %d\n", j, sum);
}
return 0;
}
8
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int a[3][10] = { 0 };
int i, x;
for (i = 0; i < 10; i++) {
a[0][i] = i + 1;
a[1][i] = (i + 1) * (i + 1);
a[2][i] = (i + 1) * (i + 1) * (i + 1);
}
printf("정수를 입력하시오 : ");
scanf("%d", &x);
for (i = 0; i < 10; i++) {
if (a[2][i] == x) {
printf("%d의 세제곱근은 %d", x, a[0][i]);
}
}
return 0;
}
9
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#define N_DATA 10
void get_data(double data[]);
double get_mean(double data[]);
double get_std_dev(double data[], double mean);
int main() {
double data[20];
double mean;
get_data(data);
mean = get_mean(data);
printf("평균값은 %f\n", mean);
printf("표준편차값은 %f\n", get_std_dev(data, mean));
return 0;
}
void get_data(double data[]) {
int i;
for (i = 0; i < N_DATA; i++) {
printf("데이터를 입력하시오:");
scanf("%lf", &data[i]);
}
}
double get_mean(double data[]) {
int i;
double sum = 0.0;
for (i = 0; i < N_DATA; i++) {
sum += data[i];
}
return sum / N_DATA;
}
double get_std_dev(double data[], double mean) {
int i;
double sum = 0.0;
for (i = 0; i < N_DATA; i++) {
sum += (data[i] - mean) * (data[i] - mean);
}
double std = sqrt(sum / N_DATA);
return std;
}
10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int arr[5][3] = { 0 };
int i, j;
srand(time(NULL));
for (i = 0; i < 3; i++) {
for (j = 0; j < 5; j++) {
arr[j][i] = rand() % 101;
}
}
int min = arr[0][0];
int max = arr[0][0];
for (i = 0; i < 3; i++) {
for (j = 0; j < 5; j++) {
if (arr[j][i] < min)
min = arr[j][i];
if (arr[j][i] > max);
max = arr[j][i];
}
printf("시험 #%d의 최대점수=%d\n", i, max);
printf("시험 #%d의 최소점수=%d\n", i, min);
min = arr[0][0];
max = arr[0][0];
}
return 0;
}
11-1
#include <stdio.h>
void vector_add(double x[], double y[], double z[]);
int main(){
double x[3] = { 1.0, 2.0, 3.0 };
double y[3] = { 1.0, 2.0, 3.0 };
double z[3];
vector_add(x, y, z);
printf("[ %.2f %.2f %.2f] + [ %.2f %.2f %.2f] ", x[0], x[1], x[2], y[0], y[1], y[2]);
printf("= [ %.2f %.2f %.2f] \n", z[0], z[1], z[2]);
return 0;
}
void vector_add(double x[], double y[], double z[]){
z[0] = x[0] + y[0];
z[1] = x[1] + y[1];
z[2] = x[2] + y[2];
11-2
#include <stdio.h>
double vector_dotp(double x[], double y[]);
int main(void)
{
double x[3] = { 1.0, 2.0, 3.0 };
double y[3] = { 1.0, 2.0, 3.0 };
double value;
value = vector_dotp(x, y);
printf("[%.2f %.2f %.2f]*[%.2f %.2f %.2f] = %f\n", x[0], x[1], x[2], y[0], y[1], y[2], value);
return 0;
}
double vector_dotp(double x[], double y[])
{
int i;
double result;
result = 0.0;
for (i = 0; i < 3; i++)
result += x[i] * y[i];
return result;
}
12.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX_PRODUCTS 10
#define MAX_LOCATIONS 100
int main() {
int products[MAX_PRODUCTS] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
int productNum;
printf("상품 번호를 입력하시오: ");
scanf("%d", &productNum);
if (productNum < 1 || productNum > 10) {
printf("유효하지 않은 상품 번호입니다.\n");
}
else {
int location = products[productNum - 1];
printf("상품 %d은 선반 %d에 있습니다.\n", productNum, location);
}
return 0;
}
13-1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void smult(int A[][3], int b, int C[][3]){
int r, c, k;
for (r = 0; r < 3; r++) {
for (c = 0; c < 3; c++) {
C[r][c] = b * A[r][c];
}
}
}
void print(int A[][3]){
int r, c;
for (r = 0; r < 3; r++) {
for (c = 0; c < 3; c++)
printf("%d ", A[r][c]);
printf("\n");
}
}
int main(void){
int A[3][3] = { { 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 } };
int C[3][3];
smult(A, 2, C);
print(C);
return 0;
}
13-2
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void transpose(int a[][3], int b[][3]){
int r, c;
for (r = 0; r < 3; r++)
for (c = 0; c < 3; c++)
b[r][c] = a[c][r];
}
void print(int a[][3]){
int r, c;
for (r = 0; r < 3; r++) {
for (c = 0; c < 3; c++)
printf("%d ", a[r][c]);
printf("\n");
}
}
int main(void){
int A[3][3] = { { 1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int B[3][3];
transpose(A, B);
print(B);
return 0;
}
14
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 6
#define COLS 6
#define SUBGRID_ROWS 3
#define SUBGRID_COLS 3
int main() {
int oilField[ROWS][COLS];
int maxSubgridSum = 0;
int maxSubgridRow = 0, maxSubgridCol = 0;
int i, j, k, l;
srand(time(NULL));
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
oilField[i][j] = rand() % 101;
}
for (i = 0; i <= ROWS - SUBGRID_ROWS; i++) {
for (j = 0; j <= COLS - SUBGRID_COLS; j++) {
int subgridSum = 0;
for (k = i; k < i + SUBGRID_ROWS; k++) {
for (l = j; l < j + SUBGRID_COLS; l++) {
subgridSum += oilField[k][l];
}
}
if (subgridSum > maxSubgridSum) {
maxSubgridSum = subgridSum;
maxSubgridRow = i;
maxSubgridCol = j;
}
}
}
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%2d ", oilField[i][j]);
}
printf("\n");
}
printf("가장 매장량이 많은 구역의 매장량은 %d입니다\n", maxSubgridSum);
return 0;
}
11장 Exercise & Programming은 아래 클릭하시면 됩니다
[쉽게 풀어쓴 C언어 Express] 11장 Exercise & Programming
[쉽게 풀어쓴 C언어 Express] 11장 Exercise & Programming
11장 Exercise & Programming 11장 Exercise 1. a) *(list+6) b) *(name+3) c.) cost[8] d) *message 2. char * p; , p = &code; , p = ‘a’; 3. 3번 4. 3번 5. 55(세로출력) 6. 1008 2008 7.011(세로출력) 8. a) void print_array(double b[]); b) void print
gomszone.tistory.com
'프로그래밍 > C언어' 카테고리의 다른 글
[쉽게 풀어쓴 C언어 Express 개정4판] 12장 Exercise & Programming (4) | 2024.02.12 |
---|---|
[쉽게 풀어쓴 C언어 Express 개정4판] 11장 Exercise & Programming (5) | 2024.02.12 |
[쉽게 풀어쓴 C언어 Express 개정4판] 9장 Exercise & Programming (4) | 2024.02.12 |
[쉽게 풀어쓴 C언어 Express 개정4판] 8장 Exercise & Programming (6) | 2024.02.11 |
[쉽게 풀어쓴 C언어 Express 개정4판] 7장 Exercise & Programming (10) | 2024.02.11 |
댓글