목차
C 프로그래밍의 2018년도, 2019년도 기출문제에 대해 다음의 내용과 지시사항을 참고하여 작성하시오.
1. C 프로그램 작성 시 반드시 작성해야 하는 함수는
2. 다음 중 출력양식 변환기호의 설명으로 잘못된 것은?
3. 다음과 같은 프로그램의 실행결과로서 올바른 것은?
4. 다음 프로그램을 조건 연산자를 사용하여 바꾼다면 가장 올바른 것은?
5. 다음 프로그램의 실행결과로 올바른 것은?
.........
25. 다음 중 동적할당에 대한 설명으로 잘못된 것은?
1. C 프로그램 작성 시 반드시 작성해야 하는 함수는
2. 다음 중 출력양식 변환기호의 설명으로 잘못된 것은?
3. 다음과 같은 프로그램의 실행결과로서 올바른 것은?
4. 다음 프로그램을 조건 연산자를 사용하여 바꾼다면 가장 올바른 것은?
5. 다음 프로그램의 실행결과로 올바른 것은?
.........
25. 다음 중 동적할당에 대한 설명으로 잘못된 것은?
본문내용
void main(){
int array[3][4]={l, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
printf(\"%d\",array[l][2]);
}
16. 다음과 같은 프로그램의 결과로 올바른 것은?
① 5 ② 6 ③ 7 ④ 10
정답해설
배열의 각 원소에 접근하기 위해서는 첨자를 사용한다. 첨자는 0부터 시작된다. array[3][4] = {l, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} = {{1,2,3,4}, {5,6,7,8}, {9,10,11,13}} 이다. 따라서 attay[1][2]는 배열에서 두 번째 행인 {5,6,7,8}의 세 번째 열의 값을 의미하므로 7이 된다.
17. 다음 프로그램의 실행결과로서 올바른 것은?
① 10 ② 20 ③ 30 ④ 에러 발생
정답해설
포인터 배열 array[1]에는 변수 b의 주소가 저장되어 있다. 따라서 *array[1]은 변수 b의 값 20이 된다. 포인터 변수의 앞에 *연산자를 붙이면 포인터 변수가 가리키
는 주소의 실제 값을 의미한다.#include
void main(){
int a=10, b=20, c=30;
int *array[3]={&a,&b, &c};
printf(\"%d\", *array[l]);
}
※ (1819) 다음과 같은 프로그램이 있을 때 물음에 답하시오.
#include
void main() {
int *p, *q;
int a[ ]={10,20,30,40,50,60,70,80,90,100};
p=&a[2];
printf(\"%d %d\\n\", *p, *q); ㉠
printf(\"*(p+3)=%d\\n\", *(p+3)); ㉡
printf(’’p-Q= %d\\n\", p-q); ㉢
}
18. 위에서 ㉠의 결과로서 올바른 것은?
① 10 50 ② 30 60 ③ 30 33 ④ 30 70
정답해설
포인터 변수 p에는 a[2]의 주소가 저장되므로 *p는 a[2]의 값인 30이다. 포인터 변수 q는 p의 값에 4가 더해진 주소로 a[6]의 주소를 의미한다. 따라서 *q는 a[6]의 값인 70이 된다.
19. 위에서 ㉡의 결과로서 올바른 것은?
① *(p+3)=30 ② *(p+3)=33 ③ *(p+3)=60 ④ *(p+3)=70
정답해설
p+3은 a[2]의 위치에서 3만큼 이동한 위치로 a[5]의 주소가 된다. 따라서 *(p+3)는 60이 된다.
float varl, var2;
varl=3.14;
※ (2021) 다음과 같이 변수 선언과 초기화가 되어있을 때 물음에 답하시오.
20. 위에서 실수형 포인터 변수 fptr을 선언한다면 올바른 표현은?
① float fptr ; ② float *fptr ; ③ fptr afloat ; ④ fptr float;
정답해설
포인터 변수의 선언 형식 : 자료형 *변수명;
21. 위에서 포인터 변수 fptr에 주소를 할당하는 방법으로 올바른 것은?
① fptr=varl ; ② fptr=&varl; ③ fptr=&3.14 ; ④ fptr=3.14;
정답해설
포인터 변수에 주소를 할당할 때는 변수명 앞에 &연산자를 붙이면 된다.‘&변수명’은 해당 변수의 주소를 의미하게 된다.
22. 다음 중 “int형 멤버와 double형 멤버를 갖는 구조체 명이 data인 구조체를 정의하고,구조체 변수명이 var 인 구조체를 선언”한것으로 올바른 것은?
① ② ③ ④
struct var{
int x;
double y;
};
struct var data;
struct data{
int x;
double y;
};
struct data var;
struct var{
int x;
double y;
}struct var data;
struct data{
int x;
double y;
};
struct var;
정답해설
구조체 선언의 형식 : struct 구조체명{ 변수명 1; 변수명2; ...};
구조체 변수의 구조체 선언 형식 : struct 구조체명(data) 변수명(var);
#include
#include
void mainO {
FILE ㉠;
int c;
if((fp=fopen(\"oldname.dat\",\"rb\")) == NULL){
exit(l);
}
while((c=fgetc(fp)) != EOF)
fprintf(stdout, \"%c\",c);
㉡;
}
※ (2324) 다음과 같은 프로그램이 있을 때 물음에 답하시오.
23. 위에서 빈칸 ⑪에 들어갈 내용으로 올바른 것은?
① *fscanf() ② oldname.dat ③ stdin ④ *fp
정답해설
모든 파일 입출력 함수는 파일이 어디에 있는지 가리키는 파일 포인터를 사용한다. 이를 위해 FILE라는 자료형을 가지는 포인터 변수를 FILE *변수명과 같이 선언해야 한다.
24. 위에서 빈칸 ㉡에 들어갈 내용으로 올바른 것은?
① fclose(fp) ② fopen(fp) ③ END ④ stderr
정답해설
파일 입출력 작업이 종료되면 항상 버퍼를 비우고 파일 포인터가 가리키는 파일을 닫아야 한다. 그렇지 않으면 해당 파일에 손상이 올 수 있다. 파일을 닫는 함수는 fclose(파일포인터 변수명)이다.
25. 다음 중 동적할당에 대한 설명으로 잘못된 것은?
① 동적할당을 통해 기억공간의 낭비를 막을 수 있다.
② 동적할당은 실행중 필요한 만큼 기억공간을 사용할 수 있다.
③ 배열의 경우 동적할당을 사용하여 배열의 크기를 결정할 수 있다.
④ 동적할당은 정수형 자료에 대해서만 가능하다.
정답해설
동적할당은 기억공간의 절약보다는 프로그램 작성 시점에 변수의 크기를 미리 판단할 수 없을 때, 예를 들면 배열의 크기를 미리 알 수 없을 경우에, 정적할당의 단점을 해결하기 위해 사용된 것으로 동적할당을 통해 적당한 크기만큼의 기억공간을 할당하여 처리가능하도록 하는 데 목적이 있다. 또한 동적 할당 후 메모리 사용이 더 이상 필요없을 경우 free()함수를 통해 메모리를 해제해야 하는데, 이를 하지 않을 경우에는 메모리 낭비가 발생할 수 있다.
*참고문헌
김형근, 곽덕훈, 정재화(2020), C프로그래밍, 한국방송통신대학교출판문화원.
int array[3][4]={l, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
printf(\"%d\",array[l][2]);
}
16. 다음과 같은 프로그램의 결과로 올바른 것은?
① 5 ② 6 ③ 7 ④ 10
정답해설
배열의 각 원소에 접근하기 위해서는 첨자를 사용한다. 첨자는 0부터 시작된다. array[3][4] = {l, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} = {{1,2,3,4}, {5,6,7,8}, {9,10,11,13}} 이다. 따라서 attay[1][2]는 배열에서 두 번째 행인 {5,6,7,8}의 세 번째 열의 값을 의미하므로 7이 된다.
17. 다음 프로그램의 실행결과로서 올바른 것은?
① 10 ② 20 ③ 30 ④ 에러 발생
정답해설
포인터 배열 array[1]에는 변수 b의 주소가 저장되어 있다. 따라서 *array[1]은 변수 b의 값 20이 된다. 포인터 변수의 앞에 *연산자를 붙이면 포인터 변수가 가리키
는 주소의 실제 값을 의미한다.#include
void main(){
int a=10, b=20, c=30;
int *array[3]={&a,&b, &c};
printf(\"%d\", *array[l]);
}
※ (1819) 다음과 같은 프로그램이 있을 때 물음에 답하시오.
#include
void main() {
int *p, *q;
int a[ ]={10,20,30,40,50,60,70,80,90,100};
p=&a[2];
printf(\"%d %d\\n\", *p, *q); ㉠
printf(\"*(p+3)=%d\\n\", *(p+3)); ㉡
printf(’’p-Q= %d\\n\", p-q); ㉢
}
18. 위에서 ㉠의 결과로서 올바른 것은?
① 10 50 ② 30 60 ③ 30 33 ④ 30 70
정답해설
포인터 변수 p에는 a[2]의 주소가 저장되므로 *p는 a[2]의 값인 30이다. 포인터 변수 q는 p의 값에 4가 더해진 주소로 a[6]의 주소를 의미한다. 따라서 *q는 a[6]의 값인 70이 된다.
19. 위에서 ㉡의 결과로서 올바른 것은?
① *(p+3)=30 ② *(p+3)=33 ③ *(p+3)=60 ④ *(p+3)=70
정답해설
p+3은 a[2]의 위치에서 3만큼 이동한 위치로 a[5]의 주소가 된다. 따라서 *(p+3)는 60이 된다.
float varl, var2;
varl=3.14;
※ (2021) 다음과 같이 변수 선언과 초기화가 되어있을 때 물음에 답하시오.
20. 위에서 실수형 포인터 변수 fptr을 선언한다면 올바른 표현은?
① float fptr ; ② float *fptr ; ③ fptr afloat ; ④ fptr float;
정답해설
포인터 변수의 선언 형식 : 자료형 *변수명;
21. 위에서 포인터 변수 fptr에 주소를 할당하는 방법으로 올바른 것은?
① fptr=varl ; ② fptr=&varl; ③ fptr=&3.14 ; ④ fptr=3.14;
정답해설
포인터 변수에 주소를 할당할 때는 변수명 앞에 &연산자를 붙이면 된다.‘&변수명’은 해당 변수의 주소를 의미하게 된다.
22. 다음 중 “int형 멤버와 double형 멤버를 갖는 구조체 명이 data인 구조체를 정의하고,구조체 변수명이 var 인 구조체를 선언”한것으로 올바른 것은?
① ② ③ ④
struct var{
int x;
double y;
};
struct var data;
struct data{
int x;
double y;
};
struct data var;
struct var{
int x;
double y;
}struct var data;
struct data{
int x;
double y;
};
struct var;
정답해설
구조체 선언의 형식 : struct 구조체명{ 변수명 1; 변수명2; ...};
구조체 변수의 구조체 선언 형식 : struct 구조체명(data) 변수명(var);
#include
#include
void mainO {
FILE ㉠;
int c;
if((fp=fopen(\"oldname.dat\",\"rb\")) == NULL){
exit(l);
}
while((c=fgetc(fp)) != EOF)
fprintf(stdout, \"%c\",c);
㉡;
}
※ (2324) 다음과 같은 프로그램이 있을 때 물음에 답하시오.
23. 위에서 빈칸 ⑪에 들어갈 내용으로 올바른 것은?
① *fscanf() ② oldname.dat ③ stdin ④ *fp
정답해설
모든 파일 입출력 함수는 파일이 어디에 있는지 가리키는 파일 포인터를 사용한다. 이를 위해 FILE라는 자료형을 가지는 포인터 변수를 FILE *변수명과 같이 선언해야 한다.
24. 위에서 빈칸 ㉡에 들어갈 내용으로 올바른 것은?
① fclose(fp) ② fopen(fp) ③ END ④ stderr
정답해설
파일 입출력 작업이 종료되면 항상 버퍼를 비우고 파일 포인터가 가리키는 파일을 닫아야 한다. 그렇지 않으면 해당 파일에 손상이 올 수 있다. 파일을 닫는 함수는 fclose(파일포인터 변수명)이다.
25. 다음 중 동적할당에 대한 설명으로 잘못된 것은?
① 동적할당을 통해 기억공간의 낭비를 막을 수 있다.
② 동적할당은 실행중 필요한 만큼 기억공간을 사용할 수 있다.
③ 배열의 경우 동적할당을 사용하여 배열의 크기를 결정할 수 있다.
④ 동적할당은 정수형 자료에 대해서만 가능하다.
정답해설
동적할당은 기억공간의 절약보다는 프로그램 작성 시점에 변수의 크기를 미리 판단할 수 없을 때, 예를 들면 배열의 크기를 미리 알 수 없을 경우에, 정적할당의 단점을 해결하기 위해 사용된 것으로 동적할당을 통해 적당한 크기만큼의 기억공간을 할당하여 처리가능하도록 하는 데 목적이 있다. 또한 동적 할당 후 메모리 사용이 더 이상 필요없을 경우 free()함수를 통해 메모리를 해제해야 하는데, 이를 하지 않을 경우에는 메모리 낭비가 발생할 수 있다.
*참고문헌
김형근, 곽덕훈, 정재화(2020), C프로그래밍, 한국방송통신대학교출판문화원.
추천자료
- [방통대]C프로그래밍 2004,5,6 기말기출문제와 해설
- 의사결정방식에 따른 리더십의 유형에는 지시적, 위임적, 자유형, 참여적 리더십이 있는데 어...
- 교육공학]교육공학 교재1장부터 4장까지(교재3쪽~96쪽) 각각의 장에서 자신에게 가장 흥미로...
- 정신건강과간호 2019-지난 2주일 동안의 자신의 ‘스트레스 인식 일지’를 작성하시오작성과정...
- [방송통신대2018년도 중간과제물자연자원의이해] 자연환경프로그램 체험보고서
- [방송통신대2018년도 중간과제물자연자원의이해] 자연환경해설 프로그램(실내 식물원 곤충원 ...
- 2020년 1학기 Java프로그래밍 기말시험 과제물
- (방송통신대 c프로그래밍 기말시험)C 프로그래밍의 2019년도 기출문제에 대해 다음의 내용과 ...
- (방송통신대 이산수학 기말시험)1. 2019학년도 이산수학의 기말시험 기출문제 중 6개 문제(55...
소개글