c언어를 배우하는 학생입니다.

조회수 932회

현재 제가 풀고 있는 문제입니다. https://noj.am/4344

#include <stdio.h>

int main(){
    int i, j, c, ec[c], numec, std[ec[i]]; 
    float avg, avgover;
    scanf("%d", &c); //전체 케이스 입력 

    for(i=0;i<c;i++){ //전체 케이스 수만큼 각각의 케이스 입력
        scanf("%d", &ec[i]);
        for(j=0;j<ec[i];j++){ //각각의 케이스 수만큼 학생점수 입력 
            scanf("%d", &std[j]);
            avg+=std[j];
        }
        avg/=ec[i];
        for(j=0;j<ec[i];j++){ //평균 넘는 애
            if(std[j]>avg){
                avgover+=1;
            }
        }
        printf("%.3lf", (avgover/(float)ec[i])*100);
    }
    return 0;
}

이 코드를 컴파일 하면 실행하자마자 종료되는 현상이 있는데 제가 여기서 실수한 부분이나 잘못된점 있으면 알려주시면 감사하겠습니다!

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 실행하자마자 종료된다면, scanf 코드 부분까지도 가기 전에 종료된다는걸까요? 혹시 화면에 출력되는건 없나요? 편집요청빌런 2017.6.19 10:21

1 답변

  • 대략 눈에 보이는 오류만 주석으로 적어드리겠습니다.

    #include <stdio.h>
    
    int main(){
        // ec가 선언되지 않았습니다. c가 초기화되지 않은 상태로 ec[c]와 같이 쓰였습니다. std가 선언되지 않았습니다. i가 초기화되지 않은 상태로 std[ec[i]]와 같이 쓰였습니다.
        int i, j, c, ec[c], numec, std[ec[i]];
    
        //avg, avgover을 초기화하지 않은 채, 아래 코드에서 += 연산을 하고 있습니다.
        float avg, avgover;
        scanf("%d", &c);
    
        for(i=0;i<c;i++){
            scanf("%d", &ec[i]);
            for(j=0;j<ec[i];j++){
                scanf("%d", &std[j]);
                // 이 코드가 실행되기 전에 avg의 값을 초기화하세요.
                avg+=std[j];
            }
            avg/=ec[i];
            for(j=0;j<ec[i];j++){
                if(std[j]>avg){
                    // 이 코드가 실행되기 전에 avg의 값을 초기화하세요.
                    avgover+=1;
                }
            }
            printf("%.3lf", (avgover/(float)ec[i])*100);
        }
        return 0;
    }
    
    
    

    답변이 도움이 됐으면 좋겠습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 친절하시군뇽. dbwodlf3 2017.6.28 17:44

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

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

(ಠ_ಠ)
(ಠ‿ಠ)