07. 배열

2025. 10. 16. 23:54·Coding/C
  • 배열 선언
// 자료형 배열명[크기];
int name[size];

 

  • 배열 초기화
int arr_1[20] = {0}; // 정수 배열 0 초기화
char arr_2[21] = {'\0'}; // 문자열 배열 NULL 초기화

 

  • 배열 크기 / 길이 (sizeof)

- sizeof(배열명) → size_t 타입의 byte 단위의 배열의 크기 반환

- 길이 : (int)(sizeof(배열명) / sizeof(자료형)) → int 타입의 배열의 길이 반환

 

  • n차원 배열

2차원 int형 배열 선언 : int array[5][5] = {0} (5x5 크기의 0으로 초기화된 배열)

 

  • 예제

- 숫자 뒤집기

#include <stdio.h>

#define LEN 10
int main() {
    int numbers[LEN]; // 길이 10 -> 인덱스 [0]~[9]
    
    printf("Enter %d numbers: ", LEN);
    for (int i = 0; i < LEN; i++) { // i -> 0~9
        scanf("%d", &numbers[i]);
    }

    printf("The numbers in reverse order: ");
    for (int i = LEN - 1; i >= 0; i--) { // i -> 9~0
        printf("%d ",numbers[i]);
    }

    return 0;
}

 

- 반복되는 숫자 확인

#include <stdio.h>

int main() {
    int digit_check[10] = {0};
    int digit;
    long number;

    printf("Enter a number: ");
    scanf("%ld", &number);

    while (number > 0) {
        digit = number % 10; // 일의 자리
        if (digit_check[digit] == 1) {
            printf("Repeated digit");
            return 0;
        }
        digit_check[digit] = 1;
        number /= 10; // 일의 자리 없애기
    }
    printf("No repeated digit");
    return 0;
}

 

- 행렬의 각 행과 열의 합 구하기

#include <stdio.h>

int main() {
    int array[5][5]; // 5x5 행렬
    int row_sum, col_sum;

    for (int i = 0; i < 5; i++) {
        printf("Enter row %d: ", i+1);
        for (int j = 0; j < 5; j++){
            scanf("%d", &array[i][j]);
        }
    }

    printf("\n");

    printf("Row totals: ");
    for (int i = 0; i < 5; i++) {
        row_sum = 0;
        for (int j = 0; j < 5; j++){
            row_sum += array[i][j];
        }
        printf("%d ", row_sum); // 각 행의 합
    }

    printf('\n');

    printf("Column totals: ");
    for (int j = 0; j < 5; j++) {
        col_sum = 0;
        for (int i = 0; i < 5; i++){
            col_sum += array[i][j];
        }
        printf("%d ", col_sum); // 각 열의 합
    }

    return 0;
}

 

- 문장 속 단어 역순 출력

#include <stdio.h>

#define SIZE 100
int main() {
    char sentence[SIZE];
    char ch;
    char last_ch;
    int len = 0;

    printf("Enter a sentence: ");
    for (int i = 0; i < SIZE - 1; i++) { // NULL 문자, 최대 길이 SIZE - 1
        scanf('%c', &ch); // 한 글자씩 변수 ch에 저장
        if (ch == '.' || ch == '?' || ch == '!') { // 종결 문자가 나타난 경우
            last_ch = ch; // 종결 문자를 저장
            break;
        }
        // 종결 문자가 나타나지 않은 경우
        sentence[len] = ch; // 배열 sentence에 변수 ch를 읽어서 저장
        len += 1; // 배열 sentence의 종결 문자를 제외한 길이
    }

    printf("Reversal of sentence: ");
    int word_end = len - 1; // 단어가 끝나는 위치의 인덱스

    for (int i = word_end; i >= -1; i--) { // 뒤에서 앞으로
        if (i == -1 || sentence[i] == ' ') {
            int word_start = i + 1; // 단어가 시작하는 위치의 인덱스
            for (int j = word_start; j <= word_end; j++) {
                printf('%c', sentence[j]); // 단어 출력
            }
            if (i == -1) { // 첫 글자인 경우
                printf('%c', last_ch); // 종결 문자 출력
                break;
            }
            // 첫 글자가 아닌 경우
            printf(' '); // 공백 출력
            word_end = i - 1; // 단어가 끝나는 위치의 인덱스 -> 공백의 앞글자
        }
    }
    return 0;
}

 

- 애너그램

#include <stdio.h>

int main() {
    char ch;
    int count[26] = {0}; // 알파벳 개수

    printf("Enter first word: ");
    do {
        scanf('%c', &ch);
        if ('a' <= ch && ch <= 'z') { // 소문자인 경우
            count[ch - 'a'] += 1;
        } 
        else if ('A' <= ch && ch <= 'Z') { // 대문자인 경우
            count[ch - 'A'] += 1;
        } 
    } while (ch != '\n');

    printf("Enter second word: ");
    do {
        scanf('%c', &ch);
        if ('a' <= ch && ch <= 'z') {
            count[ch - 'a'] -= 1;
        } 
        else if ('A' <= ch && ch <= 'Z') {
            count[ch - 'A'] -= 1;
        } 
    } while (ch != '\n');

    for (int i = 0; i < 26; i++) {
        if (count[i] > 0) {
            printf("The words are not anagrams.");
            return 0;
        }
    }
    printf("The words are anagrams.");
    return 0;
}

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

09. 변수의 범위와 지속기간  (0) 2025.11.21
08. 함수  (0) 2025.10.17
06. 반복문  (0) 2025.09.30
05. 조건문  (0) 2025.09.30
04. 연산자 / 표현식  (0) 2025.09.30
'Coding/C' 카테고리의 다른 글
  • 09. 변수의 범위와 지속기간
  • 08. 함수
  • 06. 반복문
  • 05. 조건문
rlarudfhr
rlarudfhr
  • rlarudfhr
    androcom
    rlarudfhr
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • Coding (28)
        • Python (10)
        • C (13)
        • Github & Git (2)
        • WEB FE (3)
      • Mathematics (3)
        • 미적분학 (19)
        • 통계학 (16)
        • 선형대수 (10)
      • Quantum Computing (0)
      • PC & Mobile & Audio (7)
      • Etc (13)
  • 링크

    • Github
    • Baekjoon
    • Instagram
  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
rlarudfhr
07. 배열
상단으로

티스토리툴바