게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 질문이요!!
게시물ID : programmer_16030짧은주소 복사하기
작성자 : 오춘기
추천 : 0
조회수 : 454회
댓글수 : 12개
등록시간 : 2016/03/02 11:31:58
코딩하다가 도저히 이해가 안가는 부분이 있어서 질문올려요.
우선 코딩문제는 간단한 문제인데요,
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=283&sca=50
이 문제인데 사실 코딩은 해결하긴 했는데 입맛이 개운하지가 않아서ㄷㄷ..
이해가 안가는 부분은 아래 코드부분에 검은색 줄 표시 해놓았는데요,
total값 출력과 sd값 출력부분에 있어서 질문이있습니다.

우선 제 코드는 ---> 

#include <stdio.h>
#include <math.h>

int main(void)
{
int num;
float nlist[100];
int i;
float medium;
float total=0;
float sd = 0;
int isd = 0;
float temp;
scanf_s("%d", &num);
for (i = 0; i < num; i++){
scanf_s("%f", &nlist[i]);
total += nlist[i];
}
medium = ((float)total / num);
printf("%d\n", total);           (1)  //여기서 출력값이 0이나옵니다.ㄷㄷㄷ 신기한점은 그냥 total을 int형 변수로 선언해버리고,
                                              total에 값을 넣을 때, total += (int)nlist[100];을 사용하면 출력값이 제대로 나온다는 것이죠???
                                              여기서 이해가 안가는데 왜 이런 일이 생기는 건가요? 
if (medium != total / num)
{
printf("%.1f\n", medium);
}
else
{
printf("%.f\n", medium);
}
for (i = 0; i < num; i++)
{
sd += (nlist[i] - medium) * (nlist[i] - medium);
}
sd = sd / num;
sd = sqrt(sd);
isd = (int)sd;
if (sd - isd<0.95)
{
printf("%.1f\n", sd);
}
else if (sd-isd>0.95)
{
printf("%.f\n", sd);
} (2) // 이것도 웃긴게 ㅋㅋㅋㅋㅋㅋㅋ 아닠ㅋㅋㅋ 처음에는 if의 조건문을 "sd != isd" 이렇게 선언했더니
             // sd가 909.95xxxx 값일때 910을 리턴해버리더라구요???? 읭??? 그래서 이렇게 고쳤습니다만... 왜 그런 일이 생기는건지ㅠ
}
(1), (2)부분 해설좀 부탁드립니다!!
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호