반응형
순전히 공부 목적으로 작성된 게시글이며 이익을 위한 게시글이 아닙니다.
그러므로 혹여나 저작권과 관련된 문제가 있다면 댓글로 남겨주세요!
바로 삭제하겠습니다. 감사합니다.
2012학년도 1학기 기말시험 기출문제 [C 프로그래밍]
36. 다음 중 원시 프로그램이 번역되어 실행될 때의 확장자로서 올바른 것은?
① example.exe | ② example.obj |
③ example.doc | ④ example.c |
- 코딩 단계의 소스 파일(원시 파일)의 확장자는 .c이다.
- 컴파일 후 소스 파일이 목적 파일로 변환되며 확장자는 .obj이다.
- 목적 파일들을 라이브러리 파일과 연결하는 과정이 끝나면 .exe 확장자를 가진 실행파일이 만들어진다.
37. 다음 중 출력양식 변환기호의 설명으로 잘못된 것은?
① %d는 출력 값을 지수형식으로 나타낸다. |
② %f는 출력 값을 부동 소수점 형식으로 나타낸다. |
③ %o는 출력 값을 8진수로 나타낸다. |
④ %x는 출력 값을 16진수로 나타낸다. |
- %d는 부호 있는 10진 정수형식이다.
38. 다음 프로그램 중 잘못된 문장은? (코드 기출문제 참고)
① ㉠ | ② ㉡ |
③ ㉢ | ④ ㉣ |
- 선행처리기 끝부분에는 세미콜론(;)이 붙으면 안된다.
39. 다음 프로그램을 조건 연산자를 사용하여 바꾼다면 가장 올바른 것은? (코드 기출문제 참고)
① x=(a>10; a*100 : a*200); |
② x=(a>10; a*200 : a*100); |
③ x=(a>10 ? a*100 : a*200); |
④ x=(a>10 ? a*200 : a*100); |
- 조건 연산자의 형식이 '조건 ? true일 때 : false 일때'이다.
40. 다음과 같은 프로그램의 실행결과로서 올바른 것은?
① result= -36 | ② result= -38 |
③ result= -10 | ④ result= 0 |
- C언어에서 연산은 사칙연산과 순서가 같다. 그러므로 -a와 b를 먼저 곱하면 -200이 되고, 여기에 / 5를하면 -40이 된다. 그리고 c % 7은 2가 되고 마지막으로 -40 +2를 계산하면 -38이된다.
41. 다음 프로그램의 결과로 올바른 것은? (코드 기출문제 참고)
① A+3 k+2 | ② B M |
③ A K | ④ D M |
- 'A'의 아스키 코드값은 잘 모르겠지만 A의 아스키코드 값 + 3을하면 A 다다다음의 알파벳인 'D' 나온다.
- 'K'의 아스키 코드 값은 잘 모르겠지만 K의 아스키코드 값 + 2를하면 K 다다음의 알파벳인 'M'이 나온다.
42. 위에서 ㉠의 결과로 올바른 것은? (코드 기출문제 참고)
① var1=67 var2=C | ② var1=C var2=65 |
③ var1=C var2=C | ④ var1=65 var2=A |
- 출력 형식이 var1=%d var2=%c이므로 var1은 아스키코드 값이 출력되고, var2는 char형으로 출력된다.
43. 위에서 ㉡의 결과로 올바른 것은?
① 65 | ② 69 |
③ D | ④ E |
- putchar() 메서드는 char 타입을 출력하는 메서드이므로 'C'+2가 'E'로 출력된다.
44. 다음 프로그램이 수행되었을 때 sum의 값은? (코드 기출문제 참고)
① 4 | ② 5 |
③ 15 | ④ 16 |
- 이중 for문 문제인데 바깥쪽 for문은 a가 1부터 시작해서 5까지가 조건이므로 총 4번을 반복한다. 안쪽 for문도 b가 5에서부터 시작하고 1까지가 조건이므로 총 4번을 반복해 4X4 = 16이 된다.
45. 위에서 문자열 자료를 입력받기 위해 ㉠의 위치에 사용될 수 있는 표준 입력함수로서 올바르게 나타낸 것은?
① gets(s); | ② puts(s); |
③ scanf("%c", s); | ④ s=putchar(); |
- ② 문자열 출력 함수이다.
- ③ 입력 양식이 %c라 문자열을 받지 못한다.
- ④ putchar()는 문자형 자료 출력 메서드이다.
46. 위에서 입력된 문자열 자료를 출력하기 위해 ㉡의 위치에 사용될 수 있는 표준 출력함수로서 올바르게 나타낸 것은?
① s=puts(); | ② printf("%c", s); |
③ puts(s); | ④ gets(s); |
- ① puts()가 문자열 자료 출력 메서드는 맞지만 사용 형식이 틀렸다.
- ② 출력 양식이 %c라 문자열을 받지 못한다.
- ④ gets()는 문자열 자료 입력 메서드이다.
47. 다음과 같은 프로그램의 결과로 올바른 것은? (코드 기출문제 참고)
① 3 | ② 6 |
③ 7 | ④ 8 |
- int array[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};와 int array[3][4]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}와 같은 의미이다.
48. 다음의 배열에 대한 설명 중 올바르지 않는 것은?
① 모든 배열은 자료형과 기억 클래스를 갖는다. |
② 배열명을 증가시키거나 감소시킬 수 있다. |
③ 배열의 각 원소를 변수처럼 사용한다. |
④ 배열명은 배열 공간의 시작주소를 가리킨다. |
- 배열명을 증가시키거나 감소시킬 수 없다.
49. 위에서 사용자 정의함수의 헤더(header)는 어디인가? (코드 기출문제 참고)
① ㉠ | ② ㉣ |
③ ㉤ | ④ ㉥ |
- 위의 코드에서 사용자 정의함수는 void display_line(void){ 하나이므로 ㉤이다.
50. 위에서 함수를 호출하는 부분은 어디인가? (코드 기출문제 참고)
① ㉡ | ② ㉢ |
③ ㉣ | ④ ㉥ |
51. 위에서 실수형 포인터 변수 fptr을 선언한다면 올바른 표현은? (코드 기출문제 참고)
① float fptr; | ② float *fptr; |
③ pftr *float; | ④ fptr float; |
- 포인터 변수를 선언하는 형식은 '자료형 *변수명'이다.
52. 위에서 포인터 변수 fptr에 주소를 할당하는 방법으로 올바른 것은? (코드 기출문제 참고)
① fptr=var1; | ② fptr=&var1; |
③ fptr=&3.14; | ④ fptr=3.14; |
- 포인터 변수에 *가 없으면 변수의 주소를 대입해야하므로 &연산자가 필요하다. 3.14 값의 경우 값은 주소가 없으므로 대입하지 못한다.
53. 위에서 ㉠의 결과로서 올바른 것은? (코드 기출문제 참고)
① 10 50 | ② 30 60 |
③ 30 33 | ④ 30 70 |
- 포인터 변수 p에는 &a[2] 주소를 가리키고 있어서 *p의 값은 30이 된다. 포인터 변수 q는 p+4이므로 a[2]의 4번째 뒤의 배열인 a[6]의 주소를 가리켜 *q는 70이 된다.
54. 위에서 ㉡의 결과로서 올바른 것은? (코드 기출문제 참고)
① *(p+3)=30 | ② *(p+3)=33 |
③ *(p+3)=60 | ④ *(p+3)=70 |
- p+3 부분이 괄호로 쌓여있으므로 p의 주소에서 +3을 한다. 즉 a[2]의 값에서 3번째 뒤에 있는 주소(a[5])를 가리키게 되고 그 주소를 포인터 연산자를 통해 출력하면 60이된다.
55. 위에서 ㉢의 결과로서 올바른 것은? (코드 기출문제 참고)
① p-q=0 | ② p-q=-4 |
③ p-q=40 | ④ p-q=-40 |
- 포인터 연산자가 없는 포인터 변수끼리의 마이너스 연산은 두 포인터 사이의 거리를 나타낸다. p에는 a[2], q에는 a[6]의 주소가 저장되어 있으므로 2-6 = -4이다.
56. 위에서 ㉠의 결과로서 올바른 것은? (코드 기출문제 참고)
① KIM HG 90 95 | ② LEE SY 85 90 |
③ PARK GS 70 85 | ④ CHOI HJ 95 75 |
- 포인터 변수 p에 hs 배열이 저장되었다. 배열의 이름을 저장하는 경우엔 배열의 첫 시작 주소를 가리킨다. 그리고 p에 +=2를해주었으므로 2번지 뒤에 있는 PARK GD 70 85가 출력된다.
57. 위에서 ㉡의 결과로서 올바른 것은? (코드 기출문제 참고)
① KIM HG 90 95 | ② LEE SY 85 90 |
③ PARK GS 70 85 | ④ CHOI HJ 95 75 |
- p++로 주소 값을 1 증가시켰기 때문에 CHOI HJ 95 75가 출력된다.
58. 위에서 빈칸 ㉠에 들어갈 내용으로 올바른 것은? (코드 기출문제 참고)
① fcanf; | ② fopen |
③ fprintf; | ④ malloc; |
- fp=㉠("oldname.dat", "rb") 형식은 file을 open하기 위한 fopen() 메서드형식이다.
59. 위에서 빈칸 ㉡에 들어갈 내용으로 올바른 것은? (코드 기출문제 참고)
① stdout | ② stdin |
③ stderr | ④ stdio |
- 교재에 설명 없음.. 찾으신 분들 알려주세요...
60. 다음 중 기억 공간 할당 함수들에 대한 설명으로 잘못된 것은?
① malloc()함수는 가장 대표적인 기억 공간 할당 표준함수이다. |
② calloc()함수는 할당받은 기억 공간을 0으로 초기화한다. |
③ memset()함수는 기억 공간을 동적으로 할당 또는 해제하기 위해 사용된다. |
④ realloc()함수는 새로운 영역에 기억 공간을 재할당을 하게 되면 기존의 기억 공간에 있던 자료를 복사해 온다. |
- memset() : 기억공간의 자료를 지정한 문자로 채우는 함수로, 할당된 기억공간의 초기화나 내용 삭제를 위해 주로 사용한다.
틀린 부분이 있거나 오타가 있으면 댓글로 알려주세요. 감사합니다.
- 출처 : 방송통신대학교 C프로그래밍 기출문제
반응형