none
문자열에서 자꾸 쓰레기값이 나와요 RRS feed

  • 질문

  • #include <stdio.h>
    struct student
    {
    char no[10];
    char name[20];
    double math;
    double eng;
    double total;
    double average;

    };

    int main(void)
    {
    struct student final[3];
    int i;

    for(i=0; i<3; i++)
    {
    printf("학번, 이름, 수학점수, 영어점수 순으로 입력하세요 : ");
    scanf_s("%s %s %lf %lf", final[i].no,10, final[i].name,20, &final[i].math, &final[i].eng);

    }
    printf("\n");

    for(i=0; i<3; i++)
    {

    final[i].average = (final[i].math + final[i].eng)/2;

    printf("%s의 평균은 %lf", final[i].name, final[i].average );
    }
    printf("\n");
    int rank[3];
    int cnt;
    int j, h;
    for(int j=0; j< 3; j++)
    {
    cnt = 0;
    for (int h = 0; h < 3; h++) {
    if (final[j].average < final[h].average)
    cnt++;
    }
    rank[j] = cnt + 1;
    }

    for(i=0; i<3; i++)
    {
    printf("%s 학생의 등수: %d \n", final[i].no, rank[i]);
    }
    }

    이렇게 했는데요, 두번째 for문에서 자꾸 average 값도 0으로 나오고, name으로 출력하려고 하는 문자열도 다르게 나오는데 도대체 뭐가 문제인지 모르겠어요ㅠㅠ

    2018년 6월 30일 토요일 오후 1:31

답변

  • 안녕하세요.

    main()에서 struct student final[3]; 로 생성된 final[0~2] 내부 값이 초기화가 되지 않아서 그런것 같습니다.

    struct 선언시에

    struct student
    {
    char no[10] = '';
    char name[20] = '';
    double math = 0;
    double eng = 0;
    double total = 0;
    double average = 0;
    };

    이렇게 초기화 하고 사용하시면 될것 같습니다.

    2018년 7월 2일 월요일 오전 2:56