프로젝트: 학생 성적 관리 프로그램
이 프로젝트에서는 학생들의 성적을 관리하는 간단한 프로그램을 작성합니다. 이 프로그램은 다음과 같은 기능을 포함합니다:
학생 성적 입력
학생 성적 출력
성적의 평균 계산
최고 성적과 최저 성적 찾기
요구사항
학생 수는 최대 5명으로 제한합니다.
각 학생의 성적은 0점에서 100점 사이의 정수입니다.
포인터를 사용하여 배열을 처리합니다.
#include <stdio.h>
int sumArray(int *arr, int length);
float averArray(int *arr, int length);
int maxArray(int *arr, int length);
int minArray(int *arr, int length);
int main(void)
{
// 사용자로부터 5개의 정수 입력받아 배열에 저장
// 배열의 요소들을 순서대로 출력
// 배열의 모든 요소들의 합을 계산하여 출력
// 배열의 모든 요소들의 평균을 계산하여 출력
// 배열의 요소들 중 최대값과 최소값을 찾아 출력
int num;
int num_arr[5];
int length = sizeof(num_arr)/sizeof(num_arr[0]);
//printf("%d", length);
for(int i = 0; i < length; i++)
{
printf("원하는 숫자를 입력하세요. %d 번에 저장됩니다.", i+1);
scanf("%d", &num);
num_arr[i] = num;
}
for(int j = 0; j < length; j++)
{
printf("arr[%d] : %d\n", j, num_arr[j]);
}
int sum = sumArray(num_arr, length);
printf("배열의 모든 요소들의 합 : %d\n", sum);
float aver = averArray(num_arr, length);
printf("배열의 모든 요소들의 평균 : %.2f\n", aver);
int max = maxArray(num_arr, length);
printf("배열의 요소들 중 최대 값 : %d\n", max);
int min = minArray(num_arr, length);
printf("배열의 요소들 중 최소 값 : %d\n", min);
return 0;
}
int sumArray(int *arr, int length)
{
int sum = 0;
for(int i = 0; i < length; i++)
{
sum += arr[i];
}
return sum;
}
float averArray(int *arr, int length)
{
float sum = sumArray(arr,length);
float aver = sum / length;
return aver;
}
int maxArray(int *arr, int length)
{
int max = arr[0];
for(int i = 1; i < length; i++)
{
if(max < arr[i])
{
max = arr[i];
}
}
return max;
}
int minArray(int *arr, int length)
{
int min = arr[0];
for(int i = 1; i < length; i++)
{
if(arr[i] < min)
{
min = arr[i];
}
}
return min;
}
시간 순서에 따른 문제풀이
1) 우선 숫자를 입력받아 배열의 요소에 저장해준다
2) 제대로 저장되었는지 for문을 통해 배열을 출력해본다
3) 합, 평균, 최소, 최대값을 출력해주는 함수를 만들어 각 해답을 출력한다.
!! 배열을 사용한 함수를 만들때는 pointer를 잘 활용해야한다.
출력
원하는 숫자를 입력하세요. 1 번에 저장됩니다.10
원하는 숫자를 입력하세요. 2 번에 저장됩니다.836
원하는 숫자를 입력하세요. 3 번에 저장됩니다.72654
원하는 숫자를 입력하세요. 4 번에 저장됩니다.22
원하는 숫자를 입력하세요. 5 번에 저장됩니다.5
arr[0] : 10
arr[1] : 836
arr[2] : 72654
arr[3] : 22
arr[4] : 5
배열의 모든 요소들의 합 : 73527
배열의 모든 요소들의 평균 : 14705.40
배열의 요소들 중 최대 값 : 72654
배열의 요소들 중 최소 값 : 5
문제: 배열 정렬 프로그램
사용자로부터 여러 개의 정수를 입력받아 배열에 저장한 후, 배열의 요소들을 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요.
요구사항
사용자로부터 최대 10개의 정수를 입력받아 배열에 저장합니다.
배열의 요소들을 오름차순으로 정렬합니다.
정렬된 배열의 요소들을 출력합니다.
함수와 포인터를 사용하여 문제를 해결하세요.
세부 요구사항
입력된 정수의 개수가 10개 미만일 수 있습니다. 이 경우 입력이 완료된 후 -1을 입력하여 더 이상 입력하지 않음을 표시합니다.
배열의 요소들을 오름차순으로 정렬하기 위해 정렬 알고리즘을 직접 구현합니다(버블 정렬, 선택 정렬, 삽입 정렬 중 하나를 선택).
정렬 및 출력 기능을 함수로 분리하여 구현합니다.
#include <stdio.h>
void EArray(int *arr1, int SIZE);
/*
사용자로부터 여러 개의 정수를 입력받아 배열에 저장한 후, 배열의 요소들을 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요.
- 요구사항
사용자로부터 최대 10개의 정수를 입력받아 배열에 저장합니다.
배열의 요소들을 오름차순으로 정렬합니다.
정렬된 배열의 요소들을 출력합니다.
함수와 포인터를 사용하여 문제를 해결하세요.
- 세부 요구사항
입력된 정수의 개수가 10개 미만일 수 있습니다. 이 경우 입력이 완료된 후 -1을 입력하여 더 이상 입력하지 않음을 표시합니다.
배열의 요소들을 오름차순으로 정렬하기 위해 정렬 알고리즘을 직접 구현합니다(버블 정렬, 선택 정렬, 삽입 정렬 중 하나를 선택).
정렬 및 출력 기능을 함수로 분리하여 구현합니다.
*/
int main(void)
{
int SIZE;
int num;
int arr[10];
while (1)
{
printf("입력할 정수의 개수를 입력해주세요 (1~10): ");
scanf("%d", &SIZE);
if (SIZE < 1 || SIZE > 10)
{
printf("1~10 사이의 숫자만 입력해주세요\n");
continue; // 조건이 맞지 않으면 다시 입력 받음
}
break; // 조건이 맞으면 루프 탈출
}
for(int i = 0; i < SIZE; i++)
{
printf("배열의 요소를 입력해주세요\n");
scanf("%d", &num);
arr[i] = num;
}
for(int j = 0; j < SIZE; j++)
{
printf("배열 요소[%d] : %d\n", j, arr[j]);
}
printf("\n\n");
// 배열 요소들의 크기를 비교하여 순서를 바꿔주기
EArray(arr, SIZE);
for(int k = 0; k < SIZE; k++)
{
printf("배열 요소[%d] : %d\n", k, arr[k]);
}
printf("\n\n");
return 0;
}
void EArray(int *arr1, int SIZE)
{
for(int i = 0; i < SIZE; i++)
{
for(int j = i+1; j < SIZE; j++)
{
if(arr1[i] > arr1[j])
{
int temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
}
시간 순서에 따른 문제풀이
1) 문제 1과 마찬가지로 입력받은 정수를 기반으로 배열을 만들어준다.
2) 이 문제에서는 1~10개 사이의 정수를 입력받아 배열에 저장해야하므로 if문을 통해 조건을 걸어 해당 범위에 포함되지 않으면 다시 실행되도록 while문을 활용한다.
3) 입력한 정수의 개수대로 배열의 요소를 입력하고, 각 요소가 제대로 저장되었는지 확인한다.
4) 배열 요소들의 크기를 비교하여 순서를 바꿔주는 함수를 생성한다.
!! " 버블 정렬 알고리즘" 이라는 것을 활용하여 각 배열 요소를 바꿔주는 함수를 만들어준다.
해당 코드의 출력 내용
입력할 정수의 개수를 입력해주세요 (1~10): 5
배열의 요소를 입력해주세요
625
배열의 요소를 입력해주세요
2293
배열의 요소를 입력해주세요
6
배열의 요소를 입력해주세요
63
배열의 요소를 입력해주세요
924
배열 요소[0] : 625
배열 요소[1] : 2293
배열 요소[2] : 6
배열 요소[3] : 63
배열 요소[4] : 924
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
배열 요소[0] : 6
배열 요소[1] : 63
배열 요소[2] : 625
배열 요소[3] : 924
배열 요소[4] : 2293