[매우간단] 배열 관련 기초 문제입니다^^(보시는데 3분도 안걸림)
나길
질문 제목 : [매우간단] 배열 관련 기초 문제입니다^^우선 문제입니다!
길이 10인 배열 선언 후 총 10개 정수 입력 받는다. 그 후 입력 받은 숫자가
홀수이면 배열의 앞부터 채워지고, 짝수이면 뒤에서 부터 채워나가는 형식을 취한다.
따라서 [1,2,3,4,5,6,7,8,9,10]을 입력하면
[1,3,5,7,9,10,8,6,4,2]순으로 값이 출력하시오.질문 내용 :
제가 다음과 같이 코드를 짜봤는데...
[1,2,3,4,5,6,7,8,9,10] 넣으면
[1,3,5,7,2,4,6,6,4,2]가 출력 됩니다..ㅠㅠㅠㅠ 뭐가 문제여서 답이 아니고
이런 이상한 값들이 나오는걸까요..
답변 부탁드립니다!!#includestdio.h
int main(void)
{
int arr[10];
int front=0, back=0;
int i;
int n=0;
printf(총 10개의 숫자 입력 \n);
for(i=0; i10; i++)
{
printf(입력: );
scanf_s(%d, &arr[i]);
}
for(n=0;n10;n++)
{
if(arr[n]%2==1)
{arr[front]=arr[n];
front++;}
else
{arr[9-back]=arr[n];
back++;
}
}
printf(배열 요소의 출력 : );
for(i=0; i10; i++)
printf(%d , arr[i]);
return 0;
}
-
민G
그 arr에 temp배열에 있는 요소들을 넣어주면 게임 끝이겠군요..
-
핫핑크
캬..바로 써주시다니 많이 배웁니다 덕분에
-
세실
#includestdio.h
int main(void)
{
int arr[10];
int temp[10];//값을 저장해줄 임시배열
int front=0, back=0;
int i;
int n=0;
printf(\총 10개의 숫자 입력 \\n\);
for(i=0; i10; i++)
{
printf(\입력: \);
scanf_s(\%d\ -
은솔
정확히 짚으셨네요. 감사합니다!
-
모두다
8 9 10을 체크 해야하는데 이미 거기에는 6 4 2가 들어가 있어서 배열의 중간에 2 4 6이 들어간게 아닐까요?
-
보물선
아 진짜 감사합니다. 덕분에 알았네요.. 이게 안보이다니..
-
들빛
초보라 해결책은 모르겠지만 원인은 알았습니다. 짝수인 경우에는 배열 arr의 뒤부터 배열되잖습니까? 그럼 원래 그 자리에 있던 수가 지워져버립니다. 즉 1,2,3,...,10 순으로 입력했을때 먼저 1은 당연히 첫번째 원소가 되는데, 2는 짝수라 맨 뒤로 가면서 맨 뒤에 있던 10이 없어져버립니다. 즉 마지막에 10이 있어야 할 자리에 가면 2가 있게 됩니다.
-
튼튼
배열이 하나만 있어서 그런것 같아요 스왑 해줄 임시 배열 하나를 더 만들어서 넣어주면 될것 같습니다