게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[본삭금] c언어 이게 왜 제대로 돌아가는지봐주세요..
게시물ID : programmer_11232짧은주소 복사하기
작성자 : 수원오징어
추천 : 0
조회수 : 625회
댓글수 : 3개
등록시간 : 2015/06/14 08:20:29
옵션
  • 본인삭제금지
전에 제가 성적표 2차원배열로 짠 코드는 국영수 합을 n으로 나눠서 이상하게 나온걸 깨달았는데
1차원배열로 짠코드를 보니 여기도 n으로 나누고있더군요
#include <stdio.h> 
void Swap(int n,int *num, int *sum, double *avg); 
int main() 
{       
   int  i, j,num[100], temp,temp1;  
   int n;        
   double temp2;  
   int kor[100],eng[100],mat[100];     
   double kors=0, engs=0, mats=0;         
   double avgk=0,avgm=0,avge=0;       
   int sum[100];    
   double avg[100];  
   printf("┌─────────────┐\n");    
   printf("│성적 처리 프로그램입니다. │\n");    
   printf("└─────────────┘\n");    
   printf("성적 처리할 학생들이 몇명입니까? ");      
   scanf("%d",&n);         
   for(i=0;i<n;i++) 
   {               
      printf("%d번째 학생의 학번을 입력하고 Enter를 누르세요=",i+1);     
      scanf("%d",&num[i]);             
      printf("국어점수를 입력하고 Enter를 누르세요=");    
      scanf("%d",&kor[i]);             
      printf("영어점수를 입력하고 Enter를 누르세요=");    
      scanf("%d",&eng[i]);             
      printf("수학점수를 입력하고 Enter를 누르세요=");   
      scanf("%d",&mat[i]);              
      sum[i]=kor[i]+eng[i]+mat[i];       
      avg[i]=(double)sum[i]/n;          
      kors+=kor[i];        
      engs+=eng[i];            
      mats+=mat[i];       
   }     
   Swap(n,num, sum, avg);  
   avgk=(double)kors/n; 
   avgm=(double)mats/n;      
   avge=(double)engs/n;  
   printf("┌─────────────────┐\n");  
   printf("│등수순으로 성적처리한 결과입니다. │\n"); 
   printf("└─────────────────┘\n");    
   for(i=0;i<n;i++)          
   printf("%d %d %g\n",num[i],sum[i],avg[i]); 
   printf("국어 평균: %g\n",avgk);     
   printf("영어 평균: %g\n",avge);    
   printf("수학 평균: %g\n",avgm);  
   return 0; 

void Swap(int n,int *num, int *sum, double *avg) 
{   
   int i,j;  
   int temp,temp1;   
   double temp2;   
   for(i=0; i<n-1;i++)  
   {             
      for(j=i+1;j<n;j++)  
      {                   
         if(sum[i] < sum[j])  
         { 
            temp=num[i];             
            num[i]=num[j];            
            num[j]=temp;                
            temp1=sum[i];                 
            sum[i]=sum[j];                  
            sum[j]=temp1;                    
            temp2=avg[i];                   
            avg[i]=avg[j];                  
            avg[j]=temp2;                   
         }         
      }   
   } 
 
avg[i]=(double)sum[i]/n;          
지금 이부분이 이렇게 되어있는데도 책에서 점수 똑같이입력해봐도 똑같이나오네요.. 왜 제대로 돌아가는건가요
그래서 3명이아닌 5명도 입력받아봤는데도 정상적으로나오는데 왜 정상적으로나오죠..?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호