c언어를 배우하는 학생입니다.
조회수 936회
현재 제가 풀고 있는 문제입니다. 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;
}
이 코드를 컴파일 하면 실행하자마자 종료되는 현상이 있는데 제가 여기서 실수한 부분이나 잘못된점 있으면 알려주시면 감사하겠습니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
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; }
답변이 도움이 됐으면 좋겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력