- 배열 선언
// 자료형 배열명[크기];
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 |