C++ 왕초보 arr 배열 질문드립니다.

조회수 600회
#include <stdio.h>

int main() {

    LOOP:

    int n, k;
    int arr[1000];
    printf("당신이 쓴 ' n개 '의 정수의 순열중 최댓값을 찾는 프로그램입니다. n을 설정해 주세요 (단 n은 1000보다 작거나 같습니다..)\n\n\n\n n : ");
    scanf_s("%d",&n);

    printf("\n\n 당신이 설정한 n 값은 %d 입니다. \n\n 당신이 설정한 n의 값은 %d 이 맞습니까??\n\n\n\n Yes (1) , No (2)  \n\n ->",n,n);
    scanf_s("%d",&k);

    if (k == 1) {
        printf("\n================\n\n계속 진행합니다.\n\n\n");
    } else if (k == 2) {
        printf("초기 화면으로 돌아갑니다.\n\n\n");
        goto LOOP;
    } else {
        printf("초기 화면으로 돌아갑니다\n\n\n");
        goto LOOP;
    }
     //여기서는 각각의 n값을 arr[] 에 집어넣어야 한다.만약 n=5면 나올때의 i=5이고, arr[0] ~ arr[4]까지.
    for (int i = 0; i <= (n - 1); i++) {
        scanf_s("%d",&arr[i]);   //29줄
    }
    //정리된 arr을 순서대로 크기를 비교하면서 최댓값을 찾는다.
     int max = arr[0];
    for (int j = 1; j <= (n - 1); j++) {
        if (max < arr[j]) {
            max = arr[j];
        }
    }
    printf("당신이 입력한 값중 가장 큰 값은 %d 입니다", max);

}

visual studio에서는 29줄에서 "초기화 되지 않은 메모리 'arr'을(를) 사용하고 있습니다" 라고 C6001 오류는 아니고 경고가 나오는데 무시하고 넘어가도 상관이 없을까요?

대체 어떤부분을 수정해야 할지 감이 안잡혀서 아시는분 있으면 부탁드립니다.

  • goto는 왠만하면 쓰지 마세요... 무한 반복문으로 대체 가능해요. 그리고 지금 코드에서 k가 1이 아니면 그냥 처음으로 돌아가는거 같은데 그럼 else if 빼버리고 else만 쓰셔도 될 거 같네요. 마지막으로 초기화 경고는 int arr[1000] = {0}; 이런 식으로 전부 0으로 초기화 해주면 됩니다. 알 수 없는 사용자 2021.12.5 13:58
  • 아 0으로 시작해놓고 하면 되는군요.. 감사합니다 ㅠㅠ koladuckhu 2021.12.5 14:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)