소스 프로그램 실행중 중지 현상 도움을 부탁드립니다.
사지타리우스
#include stdafx.h
#include string.h
#include stdlib.h
typedef struct student{
char name[20];
int korean, english, math, total;
double average;
}student;void up_average(struct student *s);
void down_average(struct student *s);
void SlectionByName(struct student *s);
int people;
int main()
{
int i,menu;
struct student *s;
s = (student*)malloc(sizeof(student)*people);
printf(전체 학생수를 입력하세요 : );
scanf_s(%d , &people);
printf(%d 명의 학생정보를 입력하세요 \n , people);
for(i=0 ; i people; i++)
{
printf( 이름 : );
scanf_s(%s, (s+i)-name, sizeof((s+i)-name));
printf( 국어 : );
scanf_s(%d , (s+i)-korean);
printf( 영어 : );
scanf_s(%d , (s+i)-english);
printf( 수학 : );
scanf_s(%d , (s+i)-math);
s[i].total = (int)(s[i].korean +s[i].english + s[i].math);
s[i].average = (double)(s[i].korean +s[i].english + s[i].math)/3;
}
printf( 1. 이름순으로 출력 \n2. 성적순(오름차순)으로 출력 \n3. 성적순(내림차순)으로 출력 \n);
printf(어떻게 출력하시겠습니까? : );
scanf_s(%d ,&menu);
switch (menu)
{
case 1 :
SlectionByName(s);
printf( 전체 성적표\n );
printf( 이름 국어 영어 수학 총점 평균\n);
for(i=0; ipeople; i++);
{
printf(%-10s %3d %3d %3d %4d %6.2f \n ,(s+i)-name , (s+i)-korean, (s+i)-english ,(s+i)-math, (s+i)-total , (s+i)-average);
}
break;
case 2 :
up_average(s);
printf( 전체 성적표\n );
printf( 이름 국어 영어 수학 총점 평균\n);
for(i=0; ipeople; i++);
{
printf(%-10s %3d %3d %3d %4d %6.2f \n ,(s+i)-name , (s+i)-korean, (s+i)-english ,(s+i)-math, (s+i)-total , (s+i)-average);
}
break;
case 3 :
down_average(s);
printf( 전체 성적표\n );
printf( 이름 국어 영어 수학 총점 평균\n);
for(i=0; ipeople; i++);
{
printf(%-10s %3d %3d %3d %4d %6.2f \n ,(s+i)-name , (s+i)-korean, (s+i)-english ,(s+i)-math, (s+i)-total , (s+i)-average);
}
break;
}
return 0;
}
void SlectionByName(struct student *s)
{
int i,j;
student temp;
for(i=0 ; ipeople-1; i++)
{
for(j=1; jpeople; j++)
{
if(strcmp((s+i)-name , (s+j)-name)0)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
void up_average(struct student *s)
{
int i,j;
student temp;
for(i=0; ipeople-1; i++)
{
for(j=1; jpeople; j++)
{
if((s+i)-average (s+j)-average)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
void down_average(struct student *s)
{
int i,j;
student temp;
for(i= 0; ipeople-1; i++)
{
for(j=1; jpeople; j++)
{
if((s+i)-average (s+j)-average)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
제가 만든 소스인데요...
이게 컴파일 에러도 없고 실행도 되는데..
처음에는 문자열 입력을 못받아서 고생했는데
Visual studio 2012 버전의 특성으로
scanf_s에서 받을때는 크기를 지정해야된다는걸 알아서 해결했으나...
이상하게 영어점수 입력후에 중지됩니다.
문제가 뭔지 도저히 모르겠습니다.
고수님들... 부탁드립니다.. 몇일째 방법을 못찾고 있습니다.
..... 뭐가 문제일까요..