[C] 백준 1546번

체인지영·2021년 3월 19일
0

[C언어] 백준

목록 보기
10/10
#include <stdio.h>

int main() {
	int N;
	float S,max;
	scanf("%d", &N);
	max = 0;
	float arr[N];
	for (int i = 0; i < N; i++) {
		scanf("%f", &arr[i]);
		if (max < arr[i])max = arr[i];
		
	}
	float sum = 0.0f;
	for (int i = 0; i < N; i++) {
		arr[i] = ((arr[i] / max) * 100.0f);
		sum += arr[i];
	}
	printf("%.6f", sum / N);
	return 0;
}

매우매우 주의 해야 하는 점..
파이썬만 하다보니 맨날 착각하기 쉬웠던 것 같다...ㅠㅠ
점수 / M*100 인경우 점수 /M값이 0보다 작기때문에 자료형을 평소처럼 int로 했더니 계속 0만 떳다..

이경우는 실수형 자료형으로 설정해 주어야한다!! float나 double등

자료형 문제 조건에 따라 정확히 설정하는것이 c언어에 있어서는 좋은것 같다.

Q. 아니 그리고 진짜 이해할수 없는건 visual studio 에서 대체 왜 배열의 크기를 변수(scanf로 값까지 받은) 로 설정해서 초기화 할때 오류가 뜨는거지?!

A. visual studio 는 고전C언어다. 고전 C에서는
scanf("%d", &N); float arr[N]; 이게 불가능하다
이런식으로 받으려면 유일한 방법이 동적할당을 이용하는 법이다.

반면 백준의 C99 나, VS code의 컴파일러는 이것과 달라서인지 경고는 뜨지만 저대로 실행은 잘된다. 백준은 계속 성공하기도 한다...

profile
Startup, FrontEnd, BlockChain Developer

0개의 댓글