IT/C언어

[쉽게 풀어쓴 C언어 Express 개정4판] 11장 Exercise & Programming

곰탱이들 2024. 2. 12.

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_array(double *b);

 

9. 값을 넘겼으므로 ip값은 변경되지 않음.

11장 programming

 

1.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>

void get_frac(double f, int* pi, double* pd) {
	*pi = (int)f;
	*pd = f - *pi;
}

int main(void){

	double d;
	double f;
	int i;


	printf("실수를 입력하시오: ");
	scanf("%lf", &d);
	get_frac(d, &i, &f);

	printf("\n");
	printf("get_frac(3.14)이 호출되었습니다\n", d);
	printf("정수부는 %d입니다.\n", i);
	printf("소수부는 %.2lf입니다.\n", f);

	return 0;
}

 

2.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int arr[3];

    for (int i = 0; i < 3; i++) {
        printf("정수를 입력하시오: ", i + 1);
        scanf("%d", &arr[i]);
    }

    printf("=======================\n");
    printf("주소\t\t값\n");
    printf("=======================\n");

    for (int i = 0; i < 3; i++) {
        printf("%08x\t%03d\n", &arr[i], arr[i]);
    }
    return 0;
}

 

3.

#include <stdio.h>
#include <stdlib.h>

void array_fill(int* A, int size);
void array_print(int* A, int size);

void array_fill(int* A, int size){

	int i;
	for (i = 0; i < size; i++) {
		A[i] = rand();
	}
}
void array_print(int* A, int size){

	int i;
	for (i = 0; i < size; i++) {
		printf("%d ", A[i]);
	}
	printf("\n");
}

int main(){

	int data[10];
	array_fill(data, 10);
	array_print(data, 10);
	return 0;
}

 

4.

#include <stdio.h>

int my_strlen(char* p) {

    int count = 0;

    while (*p != '\0') {
        count++;
        p++;
    }
    return count;
}

int main() {
    char arr[] = "HELLO";
    int length = my_strlen(arr);

    printf("저장된 문자열 = %s\n", arr);
    printf("문자열의 길이 = %d\n", length);

    return 0;
}

 

5.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){

    char buffer[1000];
    char* p;
    int* pi;
    float* pf;

    p = buffer;
    *p = 'a';
    pi = p + 1;
    *pi = 100;
    pf = p + 5;
    *pf = 3.14;

    printf("    ", *p);
    printf("%d      ", *pi);
    printf("%.2f      \n", *pf);

    return 0;
}

 

6.

#include<stdio.h>
#include<stdlib.h>

void array_print(int* A, int size) {

	int i;

	printf("A[] = { ");

	for (i = 0; i < size; i++) {
		printf("%d ", A[i]);
	}
	printf("}\n");
}

int main() {

	int a[] = { 1,2,3,4,0,0,0,0,0,0 };
	array_print(a, 10);
}

 

7.

#include <stdio.h>

void reverse_print(int* p, int size) {
    if (size <= 0) {
        return;
    }
    printf("A[] = ");

    for (int i = size - 1; i >= 0; i--) {
        printf("%d ", *(p + i));
    }
    putchar('\n');
}

int main() {
    int A[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int size = sizeof(A) / sizeof(A[0]);

    printf("A[] = ");
    for (int i = 0; i < size; i++) {
        printf("%d ", A[i]);
    }
    putchar('\n');
    reverse_print(A, size);

    return 0;
}

 

8.

#include <stdio.h>

double* get_max(double* A, int size) {
    if (size <= 0) {
        return NULL;
    }

    double* max_ptr = A;
    for (int i = 1; i < size; i++) {
        if (A[i] > *max_ptr) {
            max_ptr = &A[i];
        }
    }
    return max_ptr;
}

int main() {

    double A[] = { 1.23, 3.14, 9.16, 100.90 };
    int size = sizeof(A) / sizeof(A[0]);
    double* max_ptr = get_max(A, size);

    if (max_ptr != NULL) {
        printf("A[] = ");
        for (int i = 0; i < size; i++) {
            printf("%.2f ", A[i]);
        }
        printf("\n");
        printf("최대값은 %.2f입니다.\n", *max_ptr);
    }
    return 0;
}

9.

#include<stdio.h>

void convert(double* grades, double* scores, int size) {

	for (int i = 0; i < size; i++) {
		scores[i] = (100 / 4.3) * grades[i];
	}
}

int main() {

	double g[] = { 00.00, 00.50, 01.00, 01.50, 02.00, 02.50, 03.00, 03.50, 04.00, 04.30 };
	double s[10];

	convert(g, s, 10);
	for (int i = 0; i < 10; i++) {
		printf("%5.2lf ", g[i]);
	}
	printf("\n");

	for (int i = 0; i < 10; i++) {
		printf("%5.2lf ", s[i]);
	}
}

 

10.

#include<stdio.h>

void array_copy(int* A, int* B, int size) {

	for (int i = 0; i < size; i++) {
		B[i] = A[i];
	}
}

int main() {

	int a[] = { 1,2,3,0,0,0,0,0,0,0 };
	int b[10];

	array_copy(a, b, 10);

	printf("A[] = ");
	for (int i = 0; i < 10; i++) {
		printf("%d ", a[i]);
	}
	printf("\n");

	printf("B[] = ");
	for (int i = 0; i < 10; i++) {
		printf("%d ", b[i]);
	}
	printf("\n");
}

 

11.

#include <stdio.h>
#define N_DATA 10
void array_add(int a[], int b[], int c[], int size);

void array_print(char* name, int* a, int size){

	int i;
	printf("%s[] = ", name);
	for (i = 0; i < size; i++) {
		printf("%d ", a[i]);
	}
	printf("\n");
}

void array_add(int a[], int b[], int c[], int size){

	int i;
	for (i = 0; i < size; i++) {
		c[i] = a[i] + b[i];
	}
}

int main(void){

	int A[N_DATA] = { 1, 2, 3, 0, 0, 0, 0, 0, 0 };
	int B[N_DATA] = { 4,5,6,0,0,0,0,0,0 };
	int C[N_DATA] = { 0 };

	array_print("A", A, N_DATA);
	array_print("B", B, N_DATA);
	array_add(A, B, C, N_DATA);
	array_print("C", C, N_DATA);
    
	return 0;
}

 

12.

#include<stdio.h>

int array_sum(int* A, int size) {

	int sum = 0;

	for (int i = 0; i < size; i++) {
		sum += A[i];
	}
	return sum;
}

int main() {

	int a[] = { 1,2,3,0,0,0,0,0,0,0 };
	int res = array_sum(a, 10);

	printf("A[] = ");

	for (int i = 0; i < 10; i++) {
		printf("%d ", a[i]);

	}
	printf("\n월급의 합=%d", res);
}

 

13.

#include <stdio.h>

int search(const int* A, int size, int search_value) {

    int i;

    for (i = 0; i < size; i++) {
        if (A[i] == search_value) {
            return i;
        }
    }
    return -1;
}

int main() {

    int A[] = { 150, 180, 220, 200, 190 };  // 월급 배열 A
    int size = sizeof(A) / sizeof(A[0]);  // 배열의 크기 계산
    int search_value = 200;  // 찾을 값

    int result = search(A, size, search_value);

    if (result != -1) {
        printf("월급 %d만원인 사람의 인덱스 = %d\n", search_value, result);
    }
    return 0;
}

 

14.

#include<stdio.h>

void get_sum_diff(int x, int y, int* p_sum, int* p_diff) {

	*p_sum = x + y;
	*p_diff = x - y;
}

int main() {

	int x = 100, y = 200;
	get_sum_diff(x, y, &x, &y);

	printf("원소들의 합 = %d\n원소들의 차 = %d", x, y);
}

 

15.

#include<stdio.h>

void convert(double* grades, double* scores, int size) {

	for (int i = 0; i < size; i++) {
		scores[i] = (100 / 4.3) * grades[i];
	}
}

int main() {

	double g[] = { 00.00, 00.50, 01.00, 01.50, 02.00, 02.50, 03.00, 03.50, 04.00, 04.30 };
	double s[10];

	convert(g, s, 10);
	for (int i = 0; i < 10; i++) {
		printf("%5.2lf ", g[i]);
	}
	printf("\n");

	for (int i = 0; i < 10; i++) {
		printf("%5.2lf ", s[i]);
	}
}

 

16.

#include<stdio.h>

void merge(int* A, int* B, int* C, int size) {

	int j = 0;
	int k = 0;

	for (int i = 0; i < size; i++) {
		if (j < size / 2 && k < size / 2) {
			if (A[j] < B[k]) C[i] = A[j++];

			else C[i] = B[k++];
		}
		else if (j == size / 2)
			C[i] = B[k++];

		else if (k == size / 2)
			C[i] = A[j++];
	}
}

int main() {

	int i;
	int a[] = { 2,5,7,8 };
	int b[] = { 1,3,4,6 };
	int c[10];

	merge(a, b, c, 8);

	printf("A[]=");
    
    for (i = 0; i < 4; i++) {
		printf("%d ", a[i]);
	}
	printf("\nB[]=");

	for (i = 0; i < 4; i++) {
		printf("%d ", b[i]);
	}
	printf("\nC[]=");

	for (i = 0; i < 8; i++) {
		printf("%d ", c[i]);
	}
}

12장 Exercise & Programming은 아래 클릭하시면 됩니다

[쉽게 풀어쓴 C언어 Express] 12장 Exercise & Programming

 

[쉽게 풀어쓴 C언어 Express] 12장 Exercise & Programming

12장 Exercise & Programming 12장 Exercise 1. 3번 2. 2번 3. a) strcat() b) strcpy() c) strtok() d) gets() e) strlen() 4. a) ‘?’을 “?”로 변경 b) if( strcmp(s, “value”)==0) c) strcpy(a, “Hello World!”); 5. s1이 의미하는 것은 문

gomszone.tistory.com

 

 

댓글