728x90
728x170
쉽게 풀어 쓴 C언어 Express 11장 프로그래밍 문제 해설
쉽게 풀어 쓴 C언어 Express 11장 프로그래밍 문제 해설
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];
}
728x90
그리드형
'IT > 프로그래밍' 카테고리의 다른 글
쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설 (0) | 2020.12.10 |
---|---|
쉽게 풀어 쓴 C언어 Express 12장 프로그래밍 문제 해설 (0) | 2020.12.10 |
쉽게 풀어 쓴 C언어 Express 10장 프로그래밍 문제 해설 (0) | 2020.12.10 |
쉽게 풀어 쓴 C언어 Express 9장 프로그래밍 문제 해설 (0) | 2020.12.10 |
쉽게 풀어 쓴 C언어 Express 8장 프로그래밍 문제 해설 (1) | 2020.12.09 |
댓글