모두의 코드
모두의 코드

총 42 개의 강의로 준비된 씹어먹는 C 언어 강좌를 통해 C 언어의 처음부터 끝까지 배우실 수 있습니다! 특히 악명 높은 C 언어의 포인터나, 어려운 개념들을 충실히 짚고 넘어갑니다.

이 강좌는 2010년에 완결되었지만, 지속적으로 개선 및 보완하고 있습니다.

C 언어 문법을 아시는 분들이라면, 씹어먹는 C++ 강좌를 통해 C++ 기초 부터 최근의 C++ 17 까지 모든 내용을 배우실 수 있습니다. C 언어와 C++ 의 기본적인 문법이 비슷하기 때문에, C 언어를 어느 정도 아는 독자를 가정하여 쓰여져 있습니다.

이 강좌는 2020년에 완결되었고 총 50 개의 강좌가 준비되어 있습니다.

사이트 내에서 검색 하기
C 언어 레퍼런스
표준 입출력 라이브러리 stdio.h
문자열 관련 라이브러리 string.h
시간 관련 라이브러리 time.h
C ++ 레퍼런스
문자열 라이브러리 string
알고리즘 라이브러리 algorithm
최근 댓글
#include <stdio.h> #include <stdlib.h> void cal_average(int students, int subject, int (*arr)[subject+1]); void print(int students, int subject, int(*arr)[subject+1]); void sort(int students, int subject, int(*arr)[subject+1]); int main(){ int subject, students; printf("subject number : "); scanf("%d", &subject); printf("student number : "); scanf("%d", &students); //이차원 배열을 연속적으로 할당하는 방법 int (*arr)[subject+1]=(int (*)[subject+1])malloc((subject+1)*students*sizeof(int)); for(int i=0; i<students; i++){ printf("Input subject's score this student : %d\n",subject); for(int j=0; j<subject; j++){ scanf("%d",&arr[i][j]); } } cal_average(students,subject,arr); printf("before sort \n"); print(students,subject,arr); printf("------------------------------------------\n"); sort(students,subject,arr); print(students,subject,arr); free(arr); return 0; } //평균값 계산하기 void cal_average(int students, int subject, int (*arr)[subject+1]){ for(int i=0; i<students; i++){ int student_score_sum=0; for(int j=0; j<subject; j++) student_score_sum+=arr[i][j]; arr[i][subject]=student_score_sum/subject; } } //arr출력하는 함수 void print(int students, int subject, int(*arr)[subject+1]){ for(int i=0; i<students; i++){ for(int j=0; j<subject+1; j++){ printf("%d ",arr[i][j]); } printf("\n"); } } //평균점수를 기준으로 오름차순 정렬하는 함수 void sort(int students, int subject, int(*arr)[subject+1]){ for(int i=0; i<students-1; i++){ for(int j=i+1; j<students; j++){ if(arr[i][subject]>arr[j][subject]){ for(int k=0; k<subject+1; k++){ int temp=arr[i][k]; arr[i][k]=arr[j][k]; arr[j][k]=temp; } } } } } 안녕하세요. 강의를 차근차근 보고있는 사람입니다~ 평균점수를 기준으로 오름차순을 정렬하는 함수에서 좀 막혀서 질문드립니다. 지금 올린코드는 정상적으로 돌아가지만 제가 원하는건 2차원 배열에서 행을 바꿀때 포인터를 이용해서 바꿀수 있는 방법이 있을까요? 그렇게 한다면 sort부분에서 삼중 반복문까지 아니고 포인터만 바꿔준다면 좀 더 빠른 프로그램이 될 것 같아서 질문남깁니다. 항상 잘보고 있습니다. 감사합니다.
c언어공부 11.28