본문 바로가기
C/Example

[C] 배열 예제

by 꾸압 2021. 3. 8.

<문제.1>

임의의 5개 수를 랜덤으로 출력하는 프로그램을 만드시오.

 

<해설>

#include <stdio.h>
#include <stdlib.h>
#define SIZE 5

int main(){
	
	int array[SIZE];	// 0, 1, 2, 3, 4
	int i;
	
	for(i=0; i < SIZE; i++){
		array[i] = (rand() % 100)+1;
	}
	
	for(i=0; i<SIZE; i++){
		printf("%3d", array[i]);
	}
	
	return 0;
}

 

 

<문제.2>

int array_1[SIZE] = {1, 2, 3, 4, 5};
int array_2[SIZE] = {1, 2, 3, 4, 5};

일 때 제시된 두 배열이 같은지 비교하는 프로그램을 작성하세요

 

<해설>

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

#define SIZE 5	// 상수

int main(){
	
	int array_1[SIZE] = {1, 2, 3, 4, 5};
	int array_2[SIZE] = {1, 2, 3, 4, 5};
	
	int i;
	
	for(i=0; i<SIZE; i++){
		if(array_1[i] != array_2[i] ){
			i = -1;		// 이 부분은 없어도 되지만 만약의 오류를 대비하여 넣음 
			printf("다르다");
			break;
		}
	}
	
	if(i == SIZE ){
		printf("같다");
	}
	
	return 0;
} 

 for 문에서 틀리면 break로 나가게 하여 구조를 간단회시켰다.

 

<해설> (포인터 활용)

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

#define SIZE 5	// 상수

int check(int x, int y){
	static int count = 0;
	
	if(x == y){
		count++;
		printf("같음\n");
	}
	
	else{
		printf("다름\n");
	}
	
	if(count == SIZE){
		printf("모두 같음\n");
	}
}

int main(){
	int i;
	int array_1[SIZE] = {1, 2, 3, 4, 5};
	int array_2[SIZE] = {1, 2, 3, 4, 5};
	
	int (*fp)(int, int) = check;
	
	for(i=0; i<SIZE; i++){
		fp(array_1[i], array_2[i] );
	}
	
	return 0;
} 

 

 

<문제 (3)>

다음 배열에서 최댓값과 최솟값을 구하시오

array[SIZE] = { 6, 8, 2, 4, 5, 1, 14, 4, 56, 0};

 

<해설 (3-1)>

#include <stdio.h>
#define SIZE 10

int main(){
	
	int array[SIZE] = { 6, 8, 2, 4, 5, 1, 14, 4, 56, 0};
	
	int i;
	int max=0;
	int min=0;
	
	for(i=0; i<SIZE; i++){
		
		if(array[i] > max){
			max = array[i];
		}
	}
	
	for(i=0; i<SIZE; i++){
		
		if(array[i] < min){
			min = array[i];
		}
	}
	
	printf("max 값은 %d \nmin 값은 %d \n", max, min);
	
	return 0;
}

 

<해설 (3-2)>

#include <stdio.h>
#define SIZE 10

int max(int data[], int size);
int min(int data[], int size);

int main(){
	
	int array[SIZE] = { 6, 8, 2, 4, 5, 1, 14, 4, 56, 0};
	
	printf("max 값은 %d \nmin 값은 %d \n", max(array, 10), min(array, 10) );
	
	return 0;
}

int max(int data[], int size){
	
	int i;
	int max_tmp = 0;
	
	for(i=0; i<size; i++){
		
		if(max_tmp < data[i]){
			max_tmp = data[i];
		}
	}
	
	return max_tmp;
}

int min(int data[], int size){
	
	int i;
	int min_tmp = 1000;
	
	for(i=0; i<size; i++){
		
		if(min_tmp > data[i]){
			min_tmp = data[i];
		}
	}
	
	return min_tmp;
}

 

 

<문제.4>

[3][5] 배열에 대해 1~15의 수가 출력되도록 프로그램을 짜세요

 

<해설>

#include <stdio.h>
#define SIZE_i 3
#define SIZE_j 5

int main(){

	int array[SIZE_i][SIZE_j] = {0};
	int cnt = 1;
	int i, j;
	
	for(i=0; i<SIZE_i; i++){
		
		for(j=0; j<SIZE_j; j++){
			
			array[i][j] = cnt;
			cnt++;
		}
	}
	
	for(i=0; i<SIZE_i; i++){
		
		for(j=0; j<SIZE_j; j++){
			
			printf("%4d", array[i][j] );
		}
		
		printf("\n");
	}

	return 0;
}

* 입력과 출력 부분의 코드가 같아 두 구조를 합치고 기능을 다르게 나오도록 하면 작성하는 프로그래머가 보기엔 좋다.

그러나 다른 사람이 보기엔 혼동을 줄 수 있으므로 최대한 형태 및 기능은 간결하게(1가지 기능만 가지도록) 함이 좋다.

 

 

'C > Example' 카테고리의 다른 글

[C] 좌석 예약 프로그램 (배열)  (0) 2021.03.08
[C] 배열 예제 (심화)  (0) 2021.03.08
[C] 로그인 프로그램 예제 (static 변수)  (0) 2021.03.08
[C] 예제 (함수, 포인터, 구조체)  (0) 2021.03.05

댓글