본문 바로가기
솔루션모음/쉽게 풀어 쓴 C언어 Express 실습문제

[쉽게 풀어 쓴 C언어 Express] 11장 프로그래밍 programming 솔루션 답지

by 이얏호이야호 2020. 4. 11.

쉽게 풀어 쓴 C언어 express 솔루션입니다.
파일을 따로 준비해놨으니 필요하시다면 다운받아서 사용해주세요^^

 

 

1.

#include <stdio.h>

int main(void) {

 int x = 0x12345678;

 unsigned char *xp = (char *)&x;

 printf("바이트순서: %x %x %x %x\n", xp[0], xp[1], xp[2], xp[3]);

 return 0;

}

바이트순서: 78 56 34 12

계속하려면 아무 키나 누르십시오 . . . 인텔 CPU는 리클 엔디안임을 알 수 있다.

 

2.

#include <stdio.h>

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

int main(void) {

 int sum=0, diff=0;

 get_sum_diff(100, 200, &sum, &diff);

 printf("원소들의 합=%d\n", sum);

 printf("원소들의 차=%d\n", diff);

 return 0;

}

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

 *p_sum = x+y;

 *p_diff = x-y;

}

 

 

3.

#include <stdio.h>

#include <stdlib.h>

void array_fill(int *A, int size);

void array_print(int *A, int size);

int main(void) {

 int data[10];

 array_fill(data, 10);

 array_print(data, 10);

 return 0;

}

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");

}

 

 

 

 

 

 

 

4.

#include <stdio.h>

void array_print(int *A, int n);

int main(void) {

 int list[10]= {

 1, 2, 3, 4

 }

 ;

 array_print(list, 10);

 return 0;

}

void array_print(int *A, int n) {

 int i;

 printf("A[]={ ");

 for (i=0;i<n;i++) {

 printf("%d ", A[i]);

 }

 printf(" }\n");

}

 

5.

#include <stdio.h>

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

void print(double *a, int size) {

 int i;

 for (i=0; i<size; i++) {

 printf("%f ", a[i]);

 }

 printf("\n");

}

int main(void) {

 double grades[10] = {

 1, 2, 3, 4, 3, 2,1, 2,3, 4

 }

 ;

 double scores[10] = {

 0

 }

 ;

 convert(grades, scores, 10);

 print(scores, 10);

 return 0;

}

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

 int i;

 for (i=0 ; i<size ; i++) {

 scores[i] = 100.0*(grades[i]/4.3);

 }

}

 

6.

#include <stdio.h>

#define N_DATA 10

void array_copy(int *a, int *b, int size);

void array_print(int *a, int size);

int main(void) {

 int A[N_DATA] = {

 1, 2, 3

 }

 ;

 int B[N_DATA] = {

 0

 }

 ;

 array_copy(A, B, N_DATA);

 array_print(B, N_DATA);

 return 0;

}

void array_copy(int *a, int *b, int size) {

 int i;

 for (i=0; i<size; i++) {

 b[i] = a[i];

 }

}

void array_print(int *a, int size) {

 int i;

 for (i=0; i<size; i++) {

 printf("%d ", a[i]);

 }

 printf("\n");

}

 

7.

#include <stdio.h>

#define N_DATA 10

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

int main(void) {

 int A[N_DATA] = {

 1, 2, 3

 }

 ;

 int B[N_DATA] = {

 0

 }

 ;

 int C[N_DATA] = {

 0

 }

 ;

 array_add(A,B,C, N_DATA);

 return 0;

}

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];

 }

}

 

 

8.

#include <stdio.h>

#define N_DATA 10

int array_sum(int a[], int size);

int main(void) {

 int A[N_DATA] = {

 1, 2, 3

 }

 ;

 int sum ;

 sum = array_sum(A, N_DATA);

 printf(“%d \n”, sum);

 return 0;

}

int array_sum(int a[], int size) {

 int i;

 int sum=0;

 for (i=0; i<size; i++) {

 sum += a[i];

 }

 return sum;

}

 

 

9.

#include <stdio.h>

int search(int *A, int size, int x);

int main(void) {

 int data[10] = {

 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

 }

 ;

 int index = search(data, 10, 9);

 printf("%d\n", index);

 return 0;

}

int search(int *A, int size, int x) {

 int i;

 for (i=0;i<size; i++) {

 if( A[i] == x ) return i;

 }

 return -1;

}

 

 

 

 

10.

#include <stdio.h>

void get_gcd_lcm(int x, int y, int *gcd, int *lcm);

int main(void) {

 int x, y, g, l;

 printf("두개의 정수를 입력하시오: ");

 scanf("%d %d", &x, &y);

 get_gcd_lcm(x, y, &g, &l);

 printf("최소공배수는 %d입니다.\n",l);

 printf("최대공약수는 %d입니다.\n",g);

 return 0;

}

void get_gcd_lcm(int org_x, int org_y, int *gcd, int *lcm) {

 int x = org_x;

 int y = org_y;

 int tmp;

 while(y != 0) {

 tmp = y;

 y = x % y;

 x = tmp;

 }

 *gcd = x;

 *lcm = org_x * org_y / *gcd;

}

 

 

11.

/* i는 정렬된 왼쪽리스트에 대한 인덱스

 j는 정렬된 오른쪽리스트에 대한 인덱스

 k는 정렬될 리스트에 대한 인덱스 */

void merge(int left, int mid, int right) {

 int i, j, k, l;

 i=left;

 j=mid+1;

 k=left;

 /* 분할 정렬된 list의 합병 */

 while(i<=mid && j<=right) {

 if(list[i]<=list[j])

  sorted[k++] = list[i++]; else

  sorted[k++] = list[j++];

 }

 if(i>mid) 

 /* 오른쪽리스트에 남아 있는 레코드의 일괄 복사 */

 for (l=j; l<=right; l++)

  sorted[k++] = list[l]; else 

 /* 왼쪽리스트에 남아 있는 레코드의 일괄 복사 */

 for (l=i; l<=mid; l++)

  sorted[k++] = list[l];

 /* 배열 sorted[]의 리스트를 배열 list[]로 재복사 */

 for (l=left; l<=right; l++)

  list[l] = sorted[l];

}

 

 

 

 

 

 

 

 

더 많은  쉽게 풀어 쓴 C언어EXPRESS 이론 솔루션

 https://chuinggun.tistory.com/category/%EC%86%94%EB%A3%A8%EC%85%98%EB%AA%A8%EC%9D%8C/%EC%89%BD%EA%B2%8C%20%ED%92%80%EC%96%B4%20%EC%93%B4%20C%EC%96%B8%EC%96%B4%20Express%20%EC%9D%B4%EB%A1%A0

더 많은 쉽게 풀어 쓴 C언어EXPRESS 프로그래밍 솔루션 : 

https://chuinggun.tistory.com/category/%EC%86%94%EB%A3%A8%EC%85%98%EB%AA%A8%EC%9D%8C/%EC%89%BD%EA%B2%8C%20%ED%92%80%EC%96%B4%20%EC%93%B4%20C%EC%96%B8%EC%96%B4%20Express%20%EC%8B%A4%EC%8A%B5%EB%AC%B8%EC%A0%9C

댓글