안녕하세요. 스마트팩토리입니다.
c 언어[021] 배열 숫자 입력하고 그 입력한 값을 거꾸로 출력하는 코드- 배열의 크기=배열 요소의 개수에 대해 알아보겠습니다.
1. 배열 :
(1) 배열 숫자 거꾸로 출력하기
arr[5] 에 10,20,30.40.50을 배열 요소로 가지고 있습니다. 출력은 하는 방법은 반복문 for를 사용하는데
이를 거꾸로 하기 위해서는 인덱스번호가 높은 순서대로 출력을 하도록 반복을 해주면 됩니다.
<<배열의 크기>>
int n = sizeof(arr) / sizeof(int);
먼저 배열의 요소의 개수를 구해 보았습니다.
배열의 크기는 배열 요소의 개수를 의미합니다.
배열을 선언하면 메모리에 배열에 대한 공간이 할당되고 그 크기는 자료형에 대한 메모리 할당 크기*배열 요소의 개수가됩니다. 그래서 배열의 크기 즉 배열 요소의 개수가 됩니다.
sizeof를 사용하면 sizeof(arr)값은 배열 메모리 공간 전체의 크기를 의미합니다. 그래서 자료형의 크기로 나누어 주면 배열의 크기가 나옵니다.
<거꾸로 출력하기 >
for (int i = n - 1; i >= 0; i--) {
거꾸로 출력하는 것은 인덱스 번소가 가장 수부터 차례로 줄여나가면 됩니다.
arr[5]는배열의 크기가 5를 의미합니다. 그런데 배열은 arr[0] 부터 시작해서 arr[4]까지 인덱스를 가지고 있기 때문에 거꾸로 출력시 인덱스 번호가 배열의 크기가 하나 적어야 합니다. 그래서 n-1 부터 시작입니다.
마지막은 인덱스 0이므로 >=0 으로하고 하나씩 감소시키면 됩니다.
#include<stdio.h>
int main() {
int arr[5] = { 10,20,30,40,50 };
int n = sizeof(arr) / sizeof(int);
for (int i = n - 1; i >= 0; i--) {
printf("%d", arr[i]);
}
printf("\n");
}
(2) 배열 입력받은 숫자 거꾸로 출력하기
출력하는 방식은 동일합니다.
단지 배열을 각 요소를 입력하기 위해서 scanf를 이용했습니다 .그 값을 배열 요소에 먼저 넣어야 해서 반복문을 활용했습니다.
for (int i = 0; i < n; i++) {
scanf_s("%d", &arr[i]);
}
순차적으로 입력을 하고 요소에 각 요소 값을 입력 받습니다.
for (int i = n - 1; i >= 0; i--) {
printf("%d", arr[i]);
출력은 먼저 큰수에 입력하는 방식으로 해서 줄여나가는 방법을 취했습니다
#include<stdio.h>
int main() {
int n;
int arr[100];
printf("입력할 숫자의 개수를 입력 :");
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
scanf_s("%d", &arr[i]);
}
for (int i = n - 1; i >= 0; i--) {
printf("%d", arr[i]);
}
}
'C 언어' 카테고리의 다른 글
c 언어[023] 배열 원소값 입력하고 배열 원소중 최대값(Max), 최소값(Min) 출력 (0) | 2021.10.02 |
---|---|
c 언어[022] 배열 숫자 입력하고 배열값 순차출력, 거꾸로 출력 (0) | 2021.10.01 |
c 언어[020] 포인터 변수(메모리 주소를 가리키는 변수) (0) | 2021.09.28 |
c 언어[019] 배열 Array , 인덱스, 배열 주소값 , 배열크기, sizeof(arr) (0) | 2021.09.21 |
c 언어[018] 비트연산자(1) <<,>>쉬프트연산자, &(and), |(or) (1) | 2021.02.24 |
댓글