개요
2개의 정수의 합과 차를 동시에 반환하는 함수를 작성하고 테스트하라. 포인터 매개 변수를 사용한다. x=100 y=200 void get_sum_diff(int x, int y, int *p_sum, int *p_diff) { } |
목표
원소들의 합= 300 원소들의 차= -100 |
Code
#include<stdio.h>
void get_sum_diff(int x, int y, int* p_sum, int* p_diff);
int main(void)
{
int x = 100, y = 200, sum, diff;
get_sum_diff(x, y, &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;
}
Output
개요
정수 배열의 크기가 10인 원소들을 난수로 채우는 함수를 작성하고 테스트하라. 난수는 라이브러리 함수인 rand()를 사용하여 생성한다. void array_fill(int *a, int size) {} void array_print(int *A, int size){} |
Code
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXSIZE 10
void array_fill(int* a, int size);
void array_print(int* A, int size);
int main(void)
{
int iArr[MAXSIZE] = { 0 };
array_fill(iArr, MAXSIZE);
array_print(iArr, MAXSIZE);
return 0;
}
void array_fill(int* a, int size)
{
srand((unsigned)time(NULL));
for (int i = 0; i < size; i++) {
a[i] = rand() & 100 + 1;
}
}
void array_print(int* A, int size)
{
for (int i = 0; i < size; i++) {
printf("%4d", A[i]);
}
}
Output
개요
학생들의 평점은 4.3점이 만점이라고 하자. 배열 grades[]에 학생 10명의 학점이 저장되어 있다. 이것을 100점 만점으로 변환하여서 배열 scores[]에 저장하는 함수를 작성하고 테스트하라. double grades[10] = { 0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.3 }; double scores[10] = { 0 }; void convert(double *grades, double *scores, int size) {} |
Code
#include<stdio.h>
#define MAXSIZE 10
void convert(double* grades, double* scores, int size);
void outCon(double* grades, double* scores, int size);
int main(void)
{
double grades[10] = { 0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.3 };
double scores[10] = { 0 };
convert(grades, scores, MAXSIZE);
outCon(grades, scores, MAXSIZE);
}
void convert(double* grades, double* scores, int size)
{
for (int i = 0; i < size; i++) {
scores[i] = grades[i] * 100 / 4.3;
}
}
void outCon(double* grades, double* scores, int size)
{
for (int i = 0; i < size; i++) {
printf("Grade : %0.1lf >> %0.1lf\n", grades[i], scores[i]);
}
}
Output
개요
직원들의 월급이 저장된 배열에서 월급이 200만원인 사람을 찾고 싶을 때가 있다. 주어진 값을 배열 A[] 에서 탐색하여 배열 원소의 인덱스를 반환하는 함수를 작성하고 테스트하라. int data[10] = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 }; int search (int *A, int size, int search value) { int i; for(i=0 ; i<size ; i++){ if( A[i] == search_value ) return i; } return -1; } |
Code
#include<stdio.h>
#define MAXSIZE 10
int search(int* A, int size, int search_value);
int main(void)
{
int data[10] = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
int iVal, indexNum;
printf("찾고자 하는 금액을 입력하세요 :");
scanf_s("%d", &iVal);
indexNum = search(data, MAXSIZE, iVal);
if (indexNum == -1) { printf("찾는 값이 없습니다.\n"); }
else printf("%d의 인덱스는 %d번입니다.", iVal, indexNum);
return 0;
}
int search(int* A, int size, int search_value) {
int i;
for (i = 0; i < size; i++) {
if (A[i] == search_value)
return i;
}
return -1;
}
Output
개요
2개의 정렬된 정수 배열 A[]와 B[]가 있다고 가정하자. 이 2개의 배열을 합쳐서 하나의 정렬된 배열 C[]로 만드는 함수를 작성하고 테스트한다. 다음과 같은 함수 원형을 가진다고 가정하라. int A[] = { 2, 5, 7, 8}; int B[] = { 1, 3, 4, 6}; void merge(int *a, int *B, int *C, int size) { ..................... } 여기서 배열 A[], B[]는 똑같은 크기로 정의되어 있다고 가정한다. 배열 C[] 에는 충분한 공간이 확보되어 있다고 가정하자. 합치는 알고리즘은 다음과 같다. 먼저 A[0] 와 B[0]를 비교한다. 만약 A[0] 가 B[0] 보다 작으면 A[0] 를 C[0] 에 복사한다. 다음에는 A[1] 과 B[0]를 비교한다. 이번에는 B[0] 가 A [1] 보다 작다면 B[0] 를 C[1] 에 저장한다. 똑같은 방식으로 남아있는 원소들을 비교하여 더 작은 원소를 C[]로 복사한다. 만약 A[] 나 B[] 중에서 어느 하나가 먼저 끝나게 되면 남아있는 원소들을 전부 C[]로 이동한다. |
Code
#include<stdio.h>
void merge(int* A, int* B, int* C, int size);
int main(void)
{
int A[] = { 2, 5, 7, 8 };
int B[] = { 1, 3, 4, 6 };
int C[8] = { 0 };
merge(A, B, C, 8);
return 0;
}
void merge(int* A, int* B, int* C, int size)
{
int aIndex = 0, bIndex = 0, cIndex = 0;
while (!(aIndex==4 && bIndex==4)) {
if (aIndex == 4 && bIndex!=4)
{ C[cIndex++] = B[bIndex++]; }
if (bIndex == 4 && aIndex!=4)
{ C[cIndex++] = A[aIndex++]; }
else if (A[aIndex] < B[bIndex]) {
C[cIndex++] = A[aIndex++];
}
else if (A[aIndex] > B[bIndex]) {
C[cIndex++] = B[bIndex++];
}
}
for (int k = 0; k < size; k++) {
printf("C[%d] = %d\n", k, C[k]);
}
}
Output
'C\C++' 카테고리의 다른 글
Linked List 회원관리 프로그램 (0) | 2022.03.04 |
---|---|
malloc, realloc 예제 (0) | 2022.03.03 |
배열 문제 (0) | 2022.03.02 |
구조체 문제 (0) | 2022.03.02 |
최대 최소 구하기(bubble sort) (0) | 2022.02.28 |