티스토리 뷰

언어/C

[C언어] 1차원 배열

SOo • 2023. 2. 12. 21:07

예제 1)

길이가 5인 int형 배열을 선언해서 프로그램 사용자로부터 총 5개의 정수를 입력 받자 ! 그리고 입력이 끝나면 다음의 내용을 출력하도록 예제를 작성해보자.

  • 입력된 정수 중에서 최댓값
  • 입력된 정수 중에서 최솟값
  • 입력된 정수의 총 합 

단, 반드시 입력을 완료한 상태에서 '최댓값'과 '최솟값' 그리고 '총 합'을 계산해야 한다. 참고로 배열을 대상으로 scanf문을 구성할 때에는 다음과 같이 해야 한다.

 

scanf("%d",&arr[2]); // 3번째 배열ㅇ소에 정수 값 입력 받음

변수를 대상으로 & 연산자를 붙여주듯이. 배열요소를 대상으로 할 때에도, & 연산자를 붙여야 한다.

 

 

🤦‍♀ 생각 과정

1. 먼저 사용자로부터 5개의 정수를 입력받아야하니 for문을 활용하여 배열의 수를 입력받으면 되겠다.

2. max와 min을 구하려면 각각의 수를 비교하는 과정이 있어야하니 arr[i]로 두고 if 문을 통해 i++ 해가면서 비교하자.

3. 총합 또한 arr[i]를 통해 i가 0 ~ 4가 될때까지 반복하여 더해나가면 될 듯

 

 

답안

#include <stdio.h>

int main()
{
	int max, min, sum, i;
	int arr[5];

	for (int i = 0; i < 5; i++)
	{
		printf("정수를 입력하시오:");
		scanf("%d", &arr[i]);
	}
	max = min = sum = arr[0];
	for (i = 1; i < 5; i++)
	{
		sum = sum + arr[i];
		if (max < arr[i])
			max = arr[i];
		if (min > arr[i])
			min = arr[i];
	}
	printf("최댓값: %d \n", max);
	printf("최솟값: %d \n", min);
	printf("총합: %d \n", sum);

	return 0;
}

RESULT:

. 정수 임의로 입력

 

 

✔ 보충할 부분 

1. 생각하는 과정은 얼추 맞았는데 코드화 하는 과정에서 시간이 많이 소요됐다. 특히 max, min 값을 일일이 if 문을 통해계산하려고 했는데 for문의 if문을 통해 훨씬 간결하게 코드화 할 수 있었다. 

 

 


예제 2)

char형 1차원 배열을 선언과 동시에 다음 문장의 내용으로 초기화하고, 초기화 이후에는 저장된 내용을 출력하는 예제를 작성해보자. 

"GOOD TIME"

 

 

🤦‍♀ 생각 과정

1. 사실 문제를 이해하지 못했다 .. 

2. 그냥 단순히 char형 배열 초기화하고 printf 이용해서 char 출력하면 안되나  ? 라는 생각을 했다 

 

 

답안

#include <stdio.h>

int main()
{
	char str[] = { 'G','O','O','D',' ','T','I','M','E'};
	int arrLen = sizeof(str) / sizeof(char); //문자열 길이 알아내기 
	
    int i;
	for (i = 0;i < arrLen; i++) // i가 문자열보다 작으면 하나씩 더하기
		printf("%c", str[i]); // 결과적으로 문자열 모두 출력되게끔 
	printf("\n");
	return 0;
}

 

 

RESULT:

 

 

 

✔ 보충할 부분 

1. 문자열 배열 만들 때는 ''안에 한 글자씩 넣어줘야 한다는 것 !

2. 문자열 길이 알아내고 싶을 때는 sizeof를 이용하여 알아내기

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함