본문 바로가기
College Computer Science/C Language

[C 프로그래밍 실습] 기말고사 문제

by 2den 2021. 1. 8.
728x90

1. 다음 내용을 참고로 구조체 fraction을 정의하고, 2개의 분수를 표준입력으로 받아, 두 분수의 사칙 연산을 수행하는 프로그램을 작성하시오. (20점)

  • 구조체 fraction 멤버 구성: 정수형의 분자(numerator)와 분모(denominator)
  • 구조체 변수 선언은 포인터 형으로 한다.
  • 연산식 입력 : 분수1 연산자 분수2
  • 분수와 연산자 사이에는 임의의 공백이 있을 수 있다(뺄셈 연산 참고)
  • 계산 결과후 약분(reduction of fraction)은 불필요(곱셈 연산 결과 참고)
  • 연산은 무한 루프로 실행

 

2. 다음 파일(in.txt) 내용을 참고하여 구조체를 정의하고, 파일의 내용을 읽어 연결리스트를 구성하시오. 각 학생의 점수의 합을 구하여 아래와 같이 연결리스트를 출력하는 프로그램을 작성하시오. (20)

  • 입력파일(in.txt) : 명령형 인자(main 함수의 인자)로 입력 받는다

1    강동구    30.3    40.5
2    강혜진    28.3    37.5
3    김다영    32.5    77.3
4    김민지    67.2    39.9
5    김소연    77.8    67.4
6    안태용    22.4    37.5

  • 각각의 학생 구조체를 연결리스트로 구성하고 연결리스트를 따라가면서 출력

 

3. 다음과 같은 조건을 만족하도록 가변인자 함수 vafunc()을 정의하여 출력 예시와 같은 결과가 나오도록 프로그램을 작성하시오. (20)

  • 가변인자를 처리하는 함수 vafunc()의 인자
    • 첫번째 인자 : 처리유형으로 문자 d이면 int 가 가변인자의 자료형이며, 문자 f이면 double이 가변인자의 자료형, 문자 a이면 int형 배열.
    • 두번째 인자 : 처리해야할 원소의 개수를 지정(, 배열인 경우 배열 원소의 개수)
  • vafun() 함수는 가변인자의 평균을 반환한다
  • 다음과 같은 함수원형, 자료와 함수 호출을 참고하여 예시와 같은 결과가 나오도록 한다.

 

double vafunc(char *type, int count, ...);

int ary[] = {15, 57, 39, 21, 32, 44};

vafunc("d", 5, 72, 21, 36, 43, 58)

vafunc("f", 4, 5.8, 7.3, 2.8, 3.5, 1.9)

vafunc("a", 6, ary)

 

4. 동적 메모리 할당을 이용하여 이름이 포함된 노드들의 연결 리스트를 만들면서, 현재 만들어진 리스트의 처음부터 마지막까지 반복하여 출력하는 재귀호출 함수 recprintList()를 정의하여  아래와 같이 출력하는 프로그램을 작성하시오.

  • 입력 : 공백이 포함된 이름(James Kim )
  • 무한루프를 반복하고, EOF^Z(ctrl-z) 를 누르면 종료한다

 

5. 선택 정렬(Selection Sorting) : 다음과 같은 문자열 배열과 알고리즘을 이용하여 문자열을 오름차순으로 정렬하는 프로그램을 쓰시오

  • 입력: 크기가 n인 배열 ary  char *str[] = {"pascal","java","Ada","Python","C#","C++","C","Ruby","basic","Lisp" };
  • 출력: 정렬된 배열 ary
  • SelectionSort 알고리즘

for i = 0 to n-2 {

     min = i

     for j = i+1 to n-1 {   

         if (ary[j] < ary[min])

               min = j

     }

     ary[i]  ary[min]   

 }

 

728x90

댓글