/*문제 1.입력 받는 학생들의 성적이 높은 순으로 정렬하는 프로그램을 만들자.
문제 2 입력받은 학생들의 성적을 막대 그래프로 나타내는 프로그램 만들자.*/
#include<stdio.h>
int main() {
int score[10];//성적 입력용 배열
int tmp;//임시 변수
int student_num = sizeof(score) / sizeof(int);//학생의 숫자
printf("10명의 학생들의 성적을 입력하세요\n");
for (int i1 = 0; i1 < 10; i1++) {//학생 성적 입력
printf("%d번째 학생의 성적은:", i1 + 1);
scanf_s("%d", &score[i1]);
if (score[i1] > 100 || score[i1] < 0) {//학생 성적이 올바른 숫자가 아닌경우 원래대로 돌려보냄
printf("올바른 점수를 입력하세요\n");
i1--;
}
}
for (int i3 = 0; i3 < student_num; i3++) {
printf("원래 %d 번 학생의 점수는 %d 점 입니다.\n ", i3 + 1, score[i3]);//원래 학생들의 배열을 출력
}
while (student_num) {//낮은 수를 오른쪽으로 이동
for (int i2 = 0; i2 < student_num; i2++) {
if (score[i2] <= score[i2 + 1]) {//배열의 오른쪽이 같거나 더 크다면 둘의 위치를 바꾼다.
tmp = score[i2];
score[i2] = score[i2 + 1];
score[i2 + 1] = tmp;
}
}
student_num--;//for 문을 한번 실행할때마다 가장 오른쪽에 가장 작은수가 들어가므로 전체 학생수를 하나 줄인다.
}
for (int i4 = 0; i4 < 10; i4++) {
printf("%d등은 %d점 입니다\n", i4+1, score[i4]);
for (int i5 = 0; i5 < score[i4]/10; i5++) {//점수만큼 동그라미 반복 출력해서 그래프 생성 1의 자리 버림
printf("●");
}
printf("\n");
}
return 0;
}
//이 답안은 아무리 다른 답을 찾으려고 노력해도 안 나와서 한분 껄 참고해서 쓴 답안이다...
원래 하고 싶었던 코드는 당신이 %d번째로 입력한 학생의 순위는%d등 이고 %d점 입니다. 였는데 쉽지가 않았다. 우선 각 학생의 입력한 순서를 기억하고 있으려면 이전에 정의 코드에서 바로 내려오거나 아에 다른 변수를 선언해서 넣어줘야 하는데 그렇게 하려면 숫자를 정렬시키는게 그 조건때문에 복잡해진다. 그래서 이렇게 출력하는 것 보다는 차라리 위의 방식으로 타협을 했다.
이 글은 코딩 꼬꼬마 시절에 푼 문제를 보관한 글로 네이버에 저장해둔 글을 옮긴 글입니다.
혹시나 참고하시는 부분에 이상한 부분이나 질문이 생긴다면 남겨주시면 친절히 답변 드리겠습니다.
728x90
'초기 네이버 기록 > 과거 공부 기록' 카테고리의 다른 글
헷갈릴때 보기! 예제 포인터의 포인터 인자로 받는 함수 (0) | 2023.01.07 |
---|---|
씹어먹는 C언어 함수 공부 저장 (3) | 2023.01.07 |
(흔적)코딩 공부 기록 switch문과 배열 (씹어먹는 C언어 정답) (0) | 2023.01.07 |
씹어먹는 C언어코딩 공부 (0) | 2023.01.06 |
씹어먹는 C언어첫번째 코딩 과제 2022. 1. 7. 23:43 (2) | 2023.01.05 |