2013년 프로그래밍입문 과제물 리스트
(1) 자신의 이번 학기 시간표를 출력하는 프로그램을 작성하라.
결과는 콘솔창에 나타날 것인데 이것이 자신의 이번 학기 시간표가 되도록 한다.
다음 그림과 같은 형태가 될 것이다.
제출요령 : 아래한글 파일에 소스 텍스트를 옮겨 붙이고 콘솔 결과창을 Ctrl-PrintScreen 키로 캡쳐하여
첨부한다. 소스 텍스트의 폰트는 바탕체/돋움체/굴림체 중 하나로 한다.
만들어진 아래한글 파일을 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(시간표출력), 제출자, 제출일을 반드시 기록한다.
제출기한 : 9월 16일 수업시간
(2) 다음의 연습문제 프로그램을 작성하라. (p.73)
제출요령 : 아래한글 파일에 소스 텍스트를 옮겨 붙이고 실행된 콘솔 결과창을 Ctrl-PrintScreen 키로 캡쳐하여
첨부한다. 소스 텍스트의 폰트는 바탕체/돋움체/굴림체 중 하나로 한다.
만들어진 아래한글 파일을 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(마일변환), 제출자, 제출일을 반드시 기록한다.
제출기한 : 9월 25일 수업시간
(3) 다음의 연습문제 프로그램을 작성하라. (p.114)
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(실수출력), 제출자, 제출일을 반드시 기록한다.
제출기한 : 9월 25일 수업시간 (추석휴일로 2번 과제와 같이 제출합니다)
(4) 다음의 연습문제 프로그램을 작성하라. (p. 152)
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(사분면판단), 제출자, 제출일을 반드시 기록한다.
실행예를 다양하게 수록하라.
제출기한 : 10월 2일 수업시간
(5) 다음의 지시대로 프로그램을 작성하라. (교재에 없음)
[문제 1] 사용자로부터 3개의 정수를 입력받는다. 이를 작은 크기의 순서대로 출력한다.
(힌트) 중첩된 if 문을 사용하라.
두번째 정수를 입력하세요 : 10
세번째 정수를 입력하세요 : 30
작은수부터 10, 25, 30 입니다.
[문제 2] 0 ~ 15의 정수를 사용자로부터 입력받아 이를 이진수로 출력하라.
(힌트) 주어진 정수를 8로 나눈 몫이 이진수의 첫째 자리이다. 그리고 8로 나눈 나머지를 4로 나눈 몫이 두번째 자리이다. 이런 방식으로 계속한다.
이진수 = 0110
[문제 3] (0,0), (1,0), (0,1)을 꼭지점으로 하는 2차원 삼각형이 있다. 사용자로부터 점의 x, y 좌표를 입력받아 입력점이 삼각형 내부인지 아닌지 판별하여 출력하는 프로그램을 작성하라. 경계선에 있는 것은 내부가 아닌 것으로 한다.
(힌트) x, y 좌표 중 하나라도 0이하이면 내부가 아니다. 또 x+y가 1 이상이면 내부가 아니다.
y 좌표를 입력하세요 : 0.9
삼각형의 내부가 아닙니다.
or
x 좌표를 입력하세요 : 0.2
y 좌표를 입력하세요 : 0.3
삼각형의 내부입니다.
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(조건문), 제출자, 제출일을 반드시 기록한다.
실행예를 다양하게 수록하라.
제출기한 : 10월 14일 수업시간
(6) 다음의 지시대로 프로그램을 작성하라.
[문제 1]
피타고라스의 정리는 직각삼각형의 세변을 a, b, c라 할 때 a2 + b2 = c2이 성립한다는 것이다.
각변의 길이가 100보다 작은 자연수일때 피타고라스의 정리를 만족시키는 쌍은 몇개인가?
3중 반복문을 이용하여 이를 찾는 프로그램을 작성해 구하라.
[문제 2]
2와 100 사이에 있는 모든 소수(prime number)를 찾는 프로그램을 작성하여라. 소수는 1과
자기 자신외에는 약수를 가지지 않는 수이다. 즉 n이 소수가 되려면 2부터 (n-1)까지의 수로
나누어지지 않아야 한다. 나누어지는지는 나머지 연산자 (%)를 이용하여 검사할 수 있다.
[문제 3]
1에서 10000까지의 수 중에 약수를 가장 많이 가지는 수를 구하는 프로그램을 작성하라.
그 수와 약수의 개수를 출력하도록 한다.
[문제 4]
가로 세로의 크기를 입력받아 S를 출력하고 중앙에만 O를 출력하는 프로그램을 작성하라.
크기는 3, 5, 7, ... 등의 홀수만 입력받는다고 한다. 크기가 5이면 아래와 같이 된다.
이중 for 루프를 사용하라.
S S S S S
S S S S S
S S O S S
S S S S S
S S S S S
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(반복문), 제출자, 제출일을 반드시 기록한다.
실행예를 수록하라.
제출기한 : 10월 21일 수업시간
모범답안을 게시합니다.
(7) 다음 문서의 문제를 프로그램하라.
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(반복문프로그래밍), 제출자, 제출일을 반드시 기록한다.
실행예를 수록하라
제출기한 : 11월 04일 수업시간
모범답안을 게시합니다
(8) 다음의 프로그램 중 2, 4, 6, 7번을 작성하여 제출하라.
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(함수), 제출자, 제출일을 반드시 기록한다.
제출기한 : 11월 11일 수업시간
(9) 다음의 프로그램을 작성하라.
[문제 1] 학생 100명의 시험성적을 다음과 같이 정리하고자 한다.
---------------------------------------------------------
학생번호 과목A 과목B 과목C
---------------------------------------------------------
1 63 78 45
...
100 58 55 67
(a) 성적을 int score[100][3] 의 2차원 배열에 저장하라. 점수는 난수로 정한다.
(b) 각 학생의 합계점수와 평균을 계산해서 int sum[100], double ave_student[100] 에 저장하라.
(c) 각 과목의 평균점수를 계산하여 double ave_subject[3]에 저장하라.
(d) 각 과목에 대해 최고점수와 해당 학생의 번호를 구하라.
(e) 최고 점수를 얻은 학생의 번호를 구하라.
전체 학생의 점수를 표로 출력하고, 위의 계산을 할 때마다 적절한 형태로 출력하라.
[문제 2] 위의 1번에서 구한 sum[100]의 배열을 내림차순으로 정렬해서 출력하라. 정렬방법은 선택정렬(selection sort)를 사용한다. 선택정렬의 기본 골격은 교과서를 참고한다.
결과로 문제1과 문제2는 하나의 프로그램이 되어야 한다.
[문제 3] 다음과 같은 조건을 갖는 20x20 행렬을 만드는 프로그램을 작성하라.
- 행렬의 대각선 위 부분은 +1로 채운다
- 행렬의 대각선 아래 부분은 -1로 채운다
- 행렬의 대각선 부분은 0으로 채운다.
만들어진 행렬을 화면에 적절히 출력해라.
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(배열), 제출자, 제출일을 반드시 기록한다.
제출기한 : 11월 20일 수업시간
(10) 다음의 프로그램을 작성하라.
영역 내의 모든 점에 대응되는 벡터(vector)가 정의되어 있는 것을 벡터장(vector field)라고 한다. 즉 점 (x, y)에 대해 대응 벡터 F를 얻을 수 있으면 벡터장(vector field)이다. 물리계의 예로는 전자장, 자기장, 주행 물체 주변 공기의 속도, 대기의 흐름 속도 등이 있다.
벡터장이 F(x, y) = y i + sin(x) j 와 같이 주어져 있다고 할 때 이를 (-5,-5) ~ (5,5) 범위에서 아래 그림과 같이 그리는 프로그램을 작성하라.
① 범위 내에서 x, y 각 방향으로 0.5 간격마다의 점에서 얻어지는 벡터를 그린다.
② 각 벡터의 원점을 표시하기 위해 벡터 원점에는 반지름 0.02의 원을 그린다.
③ 벡터의 크기는 0.15배로 스케일링한다.
다음의 링크에 소개되어 있는 Graphic Workbench를 사용한다. 숙제문제는 거기에 수록되어 있는 실습문제의 마지막 문제이다.
http://masw.tistory.com/entry/프로그래밍-입문을-위한-Graphic-Workbench
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(그래픽), 제출자, 제출일을 반드시 기록한다.
제출기한 : 11월 27일 수업시간
(11) 다음의 프로그램을 작성하라.
1. double vector[3] 배열에 3차원 벡터가 저장되어 있다고 하자. 이 벡터의 크기를 계산해서 리턴하는 함수를 작성하고 테스트 하라.
double vector_magnitude(int size, double vector[]);
2. double vector[3] 배열에 3차원 벡터가 저장되어 있다고 하자. 이 형태의 배열을 입력 받아 단위 벡터(unit vector)로 바꾸어 주는 함수를 작성하고 테스트하라.
void vector_normalize(int size, double vector[]);
제출요령 : 이전과 동일하게 소스와 출력결과를 A4 용지에 출력하여 표지를 붙여 제출한다.
표지에는 과제명칭(포인터), 제출자, 제출일을 반드시 기록한다.
제출기한 : 12월 4일 수업시간