자료형 배열명[크기];
예시:
int arr[5]; // 5개의 정수를 저장할 수 있는 배열
int arr[5] = {1, 2, 3, 4, 5}; // 완전 초기화
int amount[5] = {1, 1, 5}; // 1, 1, 5, 0, 0으로 초기화
int price[5] = {0}; // 배열 전체를 0으로 초기화
int arr[] = {1, 2, 3, 4, 5}; // 배열 크기는 5로 결정됨
int size = sizeof(arr) / sizeof(arr[0]);
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
int sum = 0;
for(int i = 0; i < size; i++) {
sum += arr[i];
}
double average = (double)sum / size;
int data[행][열];
int data[3][2] = {
{10, 20},
{30, 40},
{50, 60}
};
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
printf("%d ", data[i][j]);
}
printf("\n");
}
void print_array(int arr[], int size) {
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int data[3] = {10, 20, 30};
print_array(data, 3); // 배열 이름과 크기를 인자로 전달
for(int i = 0; i < size; i++) {
if(data[i] == key) {
printf("찾은 원소의 인덱스: %d\n", i);
}
}
for(int i = 0; i < size - 1; i++) {
int index_min = i;
for(int j = i + 1; j < size; j++) {
if(data[index_min] > data[j]) {
index_min = j;
}
}
if(i != index_min) {
int temp = data[i];
data[i] = data[index_min];
data[index_min] = temp;
}
}
크기가 10인 정수형 배열을 선언하고 초기화한 후, 배열 원소 중 홀수만 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void) {
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i;
printf("홀수인 원소: ");
for(i = 0; i < 10; i++) {
if(arr[i] % 2 == 1) {
printf("%d ", arr[i]);
}
}
printf("\n");
return 0;
}
크기가 10인 정수형 배열을 선언하고, 2번 배열원소까지만 값을 할당하고, 나머지는 0으로 초기화한다. 배열 원소값이 0인 경우에만 값을 할당받는 프로그램을 작성하시오.
#include <stdio.h>
int main(void) {
int arr[10] = {1, 2, 3}; // 3번째 원소까지만 초기화, 나머지는 0
int i, value;
printf("초기 배열 상태: ");
for(i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
for(i = 0; i < 10; i++) {
if(arr[i] == 0) {
printf("%d번 원소에 값 입력: ", i);
scanf("%d", &value);
arr[i] = value;
}
}
printf("변경된 배열: ");
for(i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
크기가 10인 정수형 배열을 선언하고, 등차수열로 값을 채우려고 한다. 첫번째 항의 값과 공차를 입력받아서 배열원소 값을 채우고 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void) {
int arr[10];
int first, diff, i;
printf("첫번째 항 입력: ");
scanf("%d", &first);
printf("공차 입력: ");
scanf("%d", &diff);
for(i = 0; i < 10; i++) {
arr[i] = first + (i * diff);
}
printf("등차수열 배열: ");
for(i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
주어진 배열 {15, 0, -20, -30, 50, -5, -120, -5, 10, -12}에서 가장 높은 값(최대값)을 찾아 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void) {
int freeze[10] = {15, 0, -20, -30, 50, -5, -120, -5, 10, -12};
int max, i;
max = freeze[0]; // 첫번째 원소를 최대값으로 가정
for(i = 1; i < 10; i++) {
if(freeze[i] > max) {
max = freeze[i];
}
}
printf("가장 높은 어는 점: %d\n", max);
return 0;
}
정수형 배열에 점수를 입력받아 저장한 후, 입력된 점수와 점수 평균을 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#define ST_SIZE 5
int main(void) {
int score[ST_SIZE];
int i, sum = 0;
double average;
printf("%d개의 점수를 입력하세요:\n", ST_SIZE);
for(i = 0; i < ST_SIZE; i++) {
printf("점수 %d: ", i+1);
scanf("%d", &score[i]);
sum += score[i];
}
average = (double)sum / ST_SIZE;
printf("\n입력된 점수: ");
for(i = 0; i < ST_SIZE; i++) {
printf("%d ", score[i]);
}
printf("\n합계: %d\n", sum);
printf("평균: %.2f\n", average);
return 0;
}
5*5 행렬의 원소를 1부터 25까지라고 할 때, 2차원 정수형 배열에 저장하고 행렬의 대각 원소만 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#define ARR_SIZE 5
int main(void) {
int matrix[ARR_SIZE][ARR_SIZE];
int diagonal[ARR_SIZE]; // 대각 원소를 저장할 1차원 배열
int i, j, num = 1;
// 행렬에 1부터 25까지 저장
for(i = 0; i < ARR_SIZE; i++) {
for(j = 0; j < ARR_SIZE; j++) {
matrix[i][j] = num++;
}
}
// 행렬 출력
printf("5*5 행렬:\n");
for(i = 0; i < ARR_SIZE; i++) {
for(j = 0; j < ARR_SIZE; j++) {
printf("%3d ", matrix[i][j]);
}
printf("\n");
}
// 대각 원소 저장
for(i = 0; i < ARR_SIZE; i++) {
diagonal[i] = matrix[i][i];
}
// 대각 원소 출력
printf("\n대각 원소: ");
for(i = 0; i < ARR_SIZE; i++) {
printf("%d ", diagonal[i]);
}
printf("\n");
return 0;
}
2차원 정수형 배열을 선언하고 초기화한 후, A반 학생 5명의 국어, 영어, 수학 성적을 2차원 배열에 입력받아 각 학생의 평균과 각 과목의 평균을 구하여 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#define R_SIZE 5 // 학생 수
#define C_SIZE 3 // 과목 수
int main(void) {
int scores[R_SIZE][C_SIZE];
double student_avg[R_SIZE] = {0}; // 학생별 평균
double subject_avg[C_SIZE] = {0}; // 과목별 평균
int i, j, sum;
char *subjects[C_SIZE] = {"국어", "영어", "수학"};
printf("A반 %d명의 %d과목 성적을 입력하세요.\n", R_SIZE, C_SIZE);
// 성적 입력
for(i = 0; i < R_SIZE; i++) {
printf("\n%d번 학생 성적 입력:\n", i+1);
for(j = 0; j < C_SIZE; j++) {
printf("%s 점수: ", subjects[j]);
scanf("%d", &scores[i][j]);
}
}
// 학생별 평균 계산
for(i = 0; i < R_SIZE; i++) {
sum = 0;
for(j = 0; j < C_SIZE; j++) {
sum += scores[i][j];
}
student_avg[i] = (double)sum / C_SIZE;
}
// 과목별 평균 계산
for(j = 0; j < C_SIZE; j++) {
sum = 0;
for(i = 0; i < R_SIZE; i++) {
sum += scores[i][j];
}
subject_avg[j] = (double)sum / R_SIZE;
}
// 결과 출력
printf("\n[성적표]\n");
printf("번호 ");
for(j = 0; j < C_SIZE; j++) {
printf("%s ", subjects[j]);
}
printf("평균\n");
printf("-----------------------------\n");
for(i = 0; i < R_SIZE; i++) {
printf("%d번 ", i+1);
for(j = 0; j < C_SIZE; j++) {
printf("%3d ", scores[i][j]);
}
printf("%.2f\n", student_avg[i]);
}
printf("-----------------------------\n");
printf("평균 ");
for(j = 0; j < C_SIZE; j++) {
printf("%.2f ", subject_avg[j]);
}
printf("\n");
return 0;
}
정수형 배열을 사용자로부터 입력받아 값을 채운 후, 배열 내에서 특정 값을 찾고, 오름차순으로 정렬하는 프로그램을 작성하시오.
#include <stdio.h>
#define SIZE 5
void print_array(int arr[], int size) {
int i;
for(i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main(void) {
int data[SIZE];
int i, j, temp, key;
int index_min;
int found = 0;
// 배열 값 입력
printf("%d개의 정수를 입력하세요:\n", SIZE);
for(i = 0; i < SIZE; i++) {
printf("숫자 %d: ", i+1);
scanf("%d", &data[i]);
}
// 배열 출력
printf("\n입력된 배열: ");
print_array(data, SIZE);
// 탐색 기능
printf("\n찾을 값을 입력하세요: ");
scanf("%d", &key);
for(i = 0; i < SIZE; i++) {
if(data[i] == key) {
printf("값 %d는 배열의 %d번 인덱스에 있습니다.\n", key, i);
found = 1;
}
}
if(!found) {
printf("값 %d는 배열에 없습니다.\n", key);
}
// 선택 정렬(오름차순)
for(i = 0; i < SIZE - 1; i++) {
index_min = i;
for(j = i + 1; j < SIZE; j++) {
if(data[index_min] > data[j]) {
index_min = j;
}
}
if(i != index_min) {
temp = data[i];
data[i] = data[index_min];
data[index_min] = temp;
}
printf("정렬 단계 %d: ", i+1);
print_array(data, SIZE);
}
printf("\n정렬된 배열: ");
print_array(data, SIZE);
return 0;
}
두 개의 2×3 행렬을 입력받아 합친 결과를 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#define ROWS 2
#define COLS 3
int main(void) {
int matrix1[ROWS][COLS];
int matrix2[ROWS][COLS];
int result[ROWS][COLS];
int i, j;
// 첫 번째 행렬 입력
printf("첫 번째 %dx%d 행렬 입력:\n", ROWS, COLS);
for(i = 0; i < ROWS; i++) {
for(j = 0; j < COLS; j++) {
printf("matrix1[%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 두 번째 행렬 입력
printf("\n두 번째 %dx%d 행렬 입력:\n", ROWS, COLS);
for(i = 0; i < ROWS; i++) {
for(j = 0; j < COLS; j++) {
printf("matrix2[%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// 행렬 합치기
for(i = 0; i < ROWS; i++) {
for(j = 0; j < COLS; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
// 행렬 출력
printf("\n첫 번째 행렬:\n");
for(i = 0; i < ROWS; i++) {
for(j = 0; j < COLS; j++) {
printf("%3d ", matrix1[i][j]);
}
printf("\n");
}
printf("\n두 번째 행렬:\n");
for(i = 0; i < ROWS; i++) {
for(j = 0; j < COLS; j++) {
printf("%3d ", matrix2[i][j]);
}
printf("\n");
}
printf("\n결과 행렬:\n");
for(i = 0; i < ROWS; i++) {
for(j = 0; j < COLS; j++) {
printf("%3d ", result[i][j]);
}
printf("\n");
}
return 0;
}
크기가 10인 정수형 배열에 0부터 9까지의 숫자를 무작위로 입력받아 저장한 후, 각 숫자의 출현 빈도를 히스토그램 형태로 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#define SIZE 10
int main(void) {
int numbers[SIZE];
int frequency[SIZE] = {0}; // 빈도수 저장 배열 초기화
int i, j;
printf("%d개의 숫자(0-9)를 입력하세요:\n", SIZE);
for(i = 0; i < SIZE; i++) {
printf("숫자 %d: ", i+1);
scanf("%d", &numbers[i]);
// 입력 검증 (0-9 범위)
while(numbers[i] < 0 || numbers[i] > 9) {
printf("0부터 9까지의 숫자만 입력하세요.\n");
printf("숫자 %d: ", i+1);
scanf("%d", &numbers[i]);
}
// 빈도수 증가
frequency[numbers[i]]++;
}
printf("\n입력된 숫자: ");
for(i = 0; i < SIZE; i++) {
printf("%d ", numbers[i]);
}
printf("\n\n[히스토그램]\n");
for(i = 0; i < SIZE; i++) {
printf("%d: ", i);
for(j = 0; j < frequency[i]; j++) {
printf("*");
}
printf(" (%d)\n", frequency[i]);
}
return 0;
}