|
안녕하세요? 레조입니다.
일단 in[MAX]=0; 부분은 프로그램의 흐름상 별의미없는 코드입니다.
구하는 값은 배열 10개를 잡아서 최대값을 구하는데 11번째 자리에
0을 대입한다는건, 더군다나 스트링이 아니라 정수형 배열에서는
별의미가 없습니다.
또한 코드상에서 삭제하신다 하더라도 문제가 없습니다.
물론 스트링의 경우 배열에 입력한 후에 '\0'을 넣어줌으로서 스트링의
끝을 나타내지만 지금의 경우는 그것과도 거리가 멈니다.
그럼 다른 이유로 그 코드를 생각해보면...
1. 코딩중 이런저런 테스트를 겸하다가 지우지 않았다던지..
(정수형의 경우 10개의 정적메모리할당후에 11번째 값을 써넣으면 어떻게될까?? 등등의 의문때문에?)
2. 약간의 결벽증적?? 코딩성향 때문에??
예를들면 자신이 할당해 놓은 배열의 바로 뒷주소가 다른 쓰레기 값으로 차는걸 원치
않아서 일부로 적어놓았다든지. ^^;(다분히 인간중심적 생각이겠지만..)
프로그램의 성격도 일반적인 최대값을 구하는것이고 작동에도 영향을 미치지 않는데다가
특별한 의미를 부여할 상황도 아니기에 약간 빗나간 답변을 해봤습니다.
^^ 그럼..
김경래 님이 쓰신 글 :
:
: /*10개의 수를 입력받아서
: 가장 높은 수를 출력 배열을 사용*/
: #include<stdio.h>
: #define MAX 10
: int kim1(int x[],int y);
:
: int in[MAX],count;
:
: void main()
: {
: int count;
:
: printf("당신이 입력하고 싶은 10개의 값을 입력하세요\n");
: printf("단 값은 -12000이하의 값은 안됩니다.\n");
: for(count=0;count<MAX;count++)
: {
: scanf("%d",&in[count]);
:
: if(in[count]==0)
: {
: count=MAX;
:
:
: }
:
: }
:
: in[MAX]=0;
:
:
:
:
: printf("가장큰값은 %d\n입니다.",kim1(in,MAX));
: }
: int kim1(int x[],int y )
: {
: int count, gijun=-12000;
:
: for(count=0;x[count]!=0;count++)
: {
: if(x[count]>gijun)
: {
: gijun=x[count];
: }
: }
:
:
: return gijun;
: }
:
:
: 여기서말이져 에러가 나는게 아니고요
: 제가 이해를 못하는부분이있어서요
: main함수에서요 if문 마치고나서요 in[MAX]=0;<-이거를 해주잖습니까?
: 위에 이프문에서 0이 들어왔을때 count가 MAX로 바끼면서 저절로 in[MAX]에
: 0이 들어가잖습니까 그런데 왜 또 밑에서 in[MAX]=0;이라고 해주는지 이해가 가지 않거든요
: 고수님 갈카주세요
: 그럼 즐거운하루되세요 ^^
|