<문제.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 |
댓글