#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{int stId;char name[10];int kor;int eng;int math;int total;float avg;enum{A=1,B,C,F}grade;}STUDENTS;
void PrintStructure(STUDENTS *stList);void SortStructure(STUDENTS *stList);int CheckId(STUDENTS *stList,int tempId,int nNumber);char GetGrade(float ar_avg);int main(void){STUDENTS stList[5];int nNumber = 0;int tempId = 0;while(nNumber<5){
printf("student ID : ");scanf("%d",&tempId);fflush(stdin); //버퍼에 남아있는 개행문자 제거if(nNumber == 0 || CheckId(stList,tempId,nNumber)) //Id검사에 통과되었을 경우 수행{
stList[nNumber].stId = tempId;}
else{
printf("this ID can't use.");continue;}
printf("name : ");gets(stList[nNumber].name);printf("kor, eng, math grade : (Ex. 99 99 99)");scanf("%d %d %d",&stList[nNumber].kor,&stList[nNumber].eng,&stList[nNumber].math);fflush(stdin);stList[nNumber].total = stList[nNumber].kor + stList[nNumber].eng + stList[nNumber].math;stList[nNumber].avg = (float)stList[nNumber].total/3.0;stList[nNumber].grade = GetGrade(stList[nNumber].avg);nNumber++;
}
printf("****Before Sort****\n");PrintStructure(stList);
printf("****After Sort****\n");SortStructure(stList);
PrintStructure(stList);
return 0;}void PrintStructure(STUDENTS *stList){int i;for(i=0;i<5;i++){
printf("%d\t",stList[i].stId);printf("%s\t",stList[i].name);printf("%d\t",stList[i].kor);printf("%d\t",stList[i].eng);printf("%d\t",stList[i].math);printf("%d\t",stList[i].total);printf("%.1f\t",stList[i].avg);printf("%c\n",stList[i].grade);}
}void SortStructure(STUDENTS *stList){int i,k;STUDENTS temp;for(i=0;i<5;i++){
for(k=0;k<4;k++){
if(stList[k].total < stList[k+1].total){
temp = stList[k];stList[k] = stList[k+1];stList[k+1] = temp;}
}
}
}int CheckId(STUDENTS *stList,int tempId,int nNumber){int i;for(i=0;i<nNumber;i++){
if(stList[i].stId == tempId)return 0;}
return 1;}char GetGrade(float ar_avg){int k = 0;k = (int)(ar_avg/10);switch(k){
case 10 :case 9 : return 'A'; break;case 8 : return 'B';break;case 7 : return 'C';break;default : return 'F';break;}//조금 이상한것이....'F'에 'D'를 넣어도 아무 이상없이 돌아감..//마음같아서는 enum에 있는것만 하게하고 없으면 오류를 띄어줫으면 좋겠는데 말이야..}
걸어간다...
2016년 6월 14일 화요일
이것이 c언어다. 17장 성적처리
피드 구독하기:
글 (Atom)