C언어 학생 점수 출력 - ceon-eo hagsaeng jeomsu chullyeog

code/C언어

(C언어) 학생 수와 성적을 입력하면 평균을 구하는 프로그램, for문

눈송눈송 2019. 11. 7. 13:29

1. 입력할 학생의 숫자를 입력

2. 해당 학생을 for문으로 받아 성적을 입력

3. 평균을 구하기 (평균은 정수로 나오지 않을 수도 있으므로 double형)

4. 입력한 학생의 숫자와 평균 출력


int main() {
	int number;
	int score =0;
	int sum = 0;
	double mean = 0; //평균은 실수이르모 double형
	int i;
	printf("학생 수: ");
	scanf_s("%d", &number); 

	for (int i = 1; i <= number; i++) {
		printf("학생%d의 성적:", i);
		scanf_s("%d", &score);
		sum += score;
	}
	mean = sum / number;
	printf("학생수: %d, 평균 성적: %lf", number, mean); //double은 %lf
}

C언어 학생 점수 출력 - ceon-eo hagsaeng jeomsu chullyeog
실행 결과

C

[C언어] 실습: 점수를 입력받은 후, 총점 및 평균 계산하기 (다차원 배열)

sweetnew 2021. 3. 4. 22:22

점수를 입력받은 후, 총점 및 평균 계산하기 (다차원 배열)


#include<stdio.h>

int main(){
   int data[3][4] = {0};   // 3명, 4개 점수(국어, 영어, 수학, 총점)
   double avg[3] = {0.0};
   char *subject[3] = {"국어", "영어", "수학"};

   for(int i = 0; i < 3; i++){
      printf("%d 번째 학생의 점수\n", i + 1);
      for(int j = 0; j < 3; j++){
         printf("%s : ", subject[j]);
         scanf("%d", &data[i][j]);
         data[i][3] += data[i][j];
      }
      avg[i] = data[i][3] / 3.;
   }

   for(int i = 0; i < 3; i++){
      printf("\n--- %d 번째 학생의 성적 ---\n", i + 1);
      printf("총점 : %d, 평균 : %.2lf\n", data[i][3], avg[i]);
   }

   return 0;
}
C언어 학생 점수 출력 - ceon-eo hagsaeng jeomsu chullyeog

프로그래밍 언어/c언어

[ C 언어 ] 학생 성적 - 연결 리스트 이용

구구름 2021. 1. 26. 22:36

학생 성적을 입력받아 출력하는 것입니다.

연결리스트를 사용합니다.

- 요구

- 음수 값이 들어오면 입력을 종료
- 모든 학생의 점수를 출력한다.

- 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h> 
#include<stdlib.h> 

struct linked_list {
    int score;
    struct linked_list* next;
};
typedef struct linked_list NODE;
typedef NODE* LINK;

LINK createNode(int score);
LINK append(LINK head, LINK newNode);
int printList(LINK head); //연결 리스트의 모든 노드 출력 함수

int main(void) {
    int score;
    LINK head = NULL; //연결 리스트의 헤드로 사용
    LINK newNode; //현재 새로이 생성된 노드를 가리키는 포인터
    printf("점수를 입력하고 Enter를 누르세요.\n");
    printf("(입력을 종료는 음수입니다)\n");
    printf(">> ");
    scanf("%d", &score);
    while (score >= 0) {
        newNode = createNode(score); //노드 동적 할당
        if (newNode == NULL) {
            printf("동적메모리 할당에 문제가 있습니다.\n");
            exit(1);
        }
        head = append(head, newNode);
        scanf("%d", &score);
    }
    printList(head); //연결 리스트 모두 출력
    return 0;
}
LINK createNode(int score) {  //노드를 생성하는 함수
    LINK newNode;  //새로 생성되는 노드의 주소를 저장할 변수 newNode를 선언
    newNode = (LINK)malloc(sizeof(NODE));
    if (newNode == NULL) {
        printf("노드 생성을 위한 메모리 할당에 문제가 있습니다.\n");
        return NULL;
    }
    newNode->score = score;
    newNode->next = NULL;
    return newNode;
}
LINK append(LINK head, LINK newNode) { //newNode 노드를 연결 리스트에 추가하는 함수
    LINK cur = NULL;
    LINK nextNode = head;
    if (head == NULL) { //연결리스트의 노드가 하나도 없는 경우
        head = newNode; //추가하려는 노드가 head가 됨
        return head;
    }
    while (newNode->score > nextNode->score) { //삽입 위치까지 이동
        if (nextNode->next != NULL) { // 다음 멤버가 있을때
            cur = nextNode;
            nextNode = nextNode->next;
        }
        else { // 맨 끝에 추가
            nextNode->next = newNode;
            return head;
        }
    }
    newNode->next = nextNode;  // 삽입 위치 찾음
    if (cur != NULL) 
        cur->next = newNode; //중간에 추가
    else 
        head = newNode; //맨앞에 추가할때

    return head;
}
int printList(LINK head) { //연결 리스트 모두 출력하는 함수
    int cnt = 0; //방문한 노드의 수를 저장
    LINK nextNode = head;
    while (nextNode != NULL) {
        printf("%3d번째 학생의 성적: %d\n", ++cnt, nextNode->score);
        nextNode = nextNode->next;
    }
    return cnt;
}

- 결과화면

C언어 학생 점수 출력 - ceon-eo hagsaeng jeomsu chullyeog

도움이 되었기를 바랍니다.

감사합니다.