(방송통신대 c프로그래밍 기말시험)C 프로그래밍의 2019년도 기출문제에 대해 다음의 내용과 지시사항을 참고하여 작성하시오(홀수 학번 과제물)
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

(방송통신대 c프로그래밍 기말시험)C 프로그래밍의 2019년도 기출문제에 대해 다음의 내용과 지시사항을 참고하여 작성하시오(홀수 학번 과제물)에 대한 보고서 자료입니다.

목차

C 프로그래밍의 2018년도, 2019년도 기출문제에 대해 다음의 내용과 지시사항을 참고하여 작성하시오.
1. 다음 중 원시 프로그램이 번역되어 실행될 때의 파일 확장자로서 올바른 것은?
2. 다음 중 상수에 대한 설명으로 올바르지 않는 것은?
3. 위에서 ㉠의 결과로 올바른 것은?
4. 위에서 ㉡의 결과로 올바른 것은?
5. 다음 프로그램의 ㉠, ㉡, ㉢에서 각각 10진수,8진수,16진수를 출력하려고 한다. 출력양식 변환기호가 순서대로 올바르게 나열된 것은?
...............
25. 다음 기억공간 할당함수들에 대한 설명으로 잘못된 것은?

본문내용

void mainO {
static int a[ ]={10, 20, 30, 40, 50};
int *pt, b, c;
pt=a;
b=*pt + *(pt+2);
pt=pt+2;
c=*pt + *(pt+2);
printf(\"b=%d\\n\", b); ㉠
printf(\"c=%d\\n\", c); ㉡
}
※(18 19)다음과 같은 프로그램이 있을 때 물음에 답하시오.
18. 위에서 ㉠의 결과로서 올바른 것은?
① b = 10 ② b = 30 ③ b = 40 ④ b = 50
정답해설
*pt는 *(pt+0) 즉, 배열 a[0]을 의미하고, *(pt+2)는 배열의 시작주소에 2를 더한 위치의 배열값을 의미한다. 따라서 b = 10 + 30 = 40이 된다.
19. 위에서 ㉡의 결과로서 올바른 것은?
① c = 30 ② c = 40 ③ c = 50 ④ c = 80
정답해설
할당문 “pt = pt + 2”가 수행되면 배열 a의 시작주소에서 2만큼 증가한 주소, 즉 a[2]의 주소가 pt의 값이 된다. 따라서 (pt+2)는 a[2]에서 2만큼 이동한 a[4]의 주소가 되므로, c = *pt + *(pt+2) = 30 + 50 = 80이 된다.
char *cp, s[ ]=\"computer\";
cp=s;
20. 다음과 같은 배열이 선언되어 있을 때 *(cp+2)의 값은?
① c ② o ③ m ④ p
정답해설
포인터 변수 cp는 배열 s의 시작주소 값을 가진다. 따라서 (cp + 2)는 배열 s의 시작주소에서 2만큼 증가한 위치 즉, 문자 \'m\'의 주소를 의미하게 된다. 따라서 *연산자로 이 값에 접근하기 위해서는 *(cp + 2)를 사용하면 된다.
21. 다음과 같은 구조체가 선언되어 있을 때 초기화 방법으로 알맞은 것은?
struct person{
char name[8];
int age;
char gender;
};
struct person x;
① person.x=\"흥길동 ② x.gender=‘M’;
③ person x.name = \"홍길동\"; ④ struct x= ‘M’;
정답해설
구조체 자료형 변수의 멤버에 접근하기 위해서는 ‘.’연산자를 사용해 “변수명.멤버명”의 형식으로 사용하면 된다.
22 다음과 같은 프로그램의 결과로 올바른 것은?
① KIM HG 90 95 ② LEE SY 85 90
③ PARK GS 70 85 ④ CHOI HJ 95 75
정답해설
포인터 변수 p는 구조체인 student형의 배열 hs의 시작주소로 초기화되었다. 이후 다시 2가 더해지면서 p는 배열 hs의 시작주소에서 2만큼 이동한 위치, 즉 hs[2]의 주소를 가리키게 된다. 따라서 printf문에서는 p의 멤버들이 각각 출력된다. 다만,
#include
struct student {
char name[10];
int kor;
int math;
};
void mainO {
struct student hs[4]={{\"KIM HG\",90,95},{\"LEE SY\",85,90},
{\"PARK GS\",70,85}, {\"CHOI HJ\",95,75}};
struct student *p;
p=hs;
p+=2;
printf(\"%s %d %d\\n\", p->name, p->kor, p->math);
}
구조체 포인터의 멤버를 참고할 때는 도트 연산자(.) 외에 포인터 연산자(->)를 사용할 수 있다.
(2324) 다음과 같은 프로그램이 있을 때 물음에 답하시오.
#include
#include
void main() {
FILE ㉠;
int c;
if((fp= ㉡ (\"oldname.dat\",\"rb\")) == NULL){
exit(1);
}
while((c=fgetc(fp)) != EOF)
fprintf(stdout, \"%c”,c);
fclose(fp);
}
23. 위에서 빈칸 ㉠에 들어갈 내용으로 올바른 것은?
① *fp ② fopen ③ stdin ④ EOF
정답해설
모든 파일 입출력 함수는 파일이 어디에 있는지 가리키는 파일 포인터를 사용한다. 이를 위해 FILE라는 자료형을 가지는 포인터 변수를 FILE *변수명과 같이 선언해야 한다.
24. 위에서 빈칸 ㉡에 들어갈 내용으로 올바른 것은?
① fclose ② fopen ③ fscanf ④ stdio
정답해설
파일 입출력 작업을 위해서는 파일 포인터 선언과 함께 파일을 여는 과정이 필수적이다. 파일을 여는 함수는 fopen이다. 그리고 파일을 연 후 파일 작업이 종료되면 항상 버퍼를 비우고 파일 포인터가 가리키는 파일을 닫아야 한다. 그렇지 않으면 해당 파일에 손상이 올 수 있다. 파일을 닫는 함수는 fclose(파일포인터 변수명)이다.
25. 다음 기억공간 할당함수들에 대한 설명으로 잘못된 것은?
① mallocO함수는 가장 대표적인 기억공간 할당 표준함수이다.
② memsetO함수는 기억 공간을 동적으로 할당 또는 해제하기 위해 사용한다.
③ callocO함수는 할당받은 기억 공간을 0으로 초기화한다.
④ reallocO함수는 새로운 영역에 기억공간을 재할당을 하게 되면 기존의 기억공간에 있던 자료를 복사해 온다.
정답해설
메모리의 동적 할당에는 malloc()함수가 대표적이다. memsetO함수는 기억공간의 자료를 지정한 문자로 채우는 함수로 할당된 기억공간의 초기화나 내용 삭제를 위해 주로 사용된다. 동적으로 할당된 기억공간을 해제할 때는 free()함수가 사용된다. 동적으로 할당받은 메모리 공간이 더 이상 필요 없을 때에는 free()함수를 사용해 명시적으로 메모리를 반납해야 한다. 그렇지 않으면 메모리의 낭비가 발생할 수 있다. 동적 할당 함수인 callocO함수은 같은 동적 할당 함수인 malloc()함수과는 달리 할당 받은 기억공간을 0으로 초기화는 차이점이 있다. 동적 할당 함수인 reallocO함수는 이미 할당받은 메모리의 크기를 변경할 때 사용할 수 있다. 이때 메모리가 재할당 되면서 기존 메모리의 내용은 그대로 복사되므로 재할당에 의해 메모리 위치가 변경되어도 원래의 내용은 그대로 유지된다.
*참고문헌
김형근, 곽덕훈, 정재화(2020), C프로그래밍, 한국방송통신대학교출판문화원.
  • 가격10,000
  • 페이지수11페이지
  • 등록일2021.05.03
  • 저작시기2021.5
  • 파일형식한글(hwp)
  • 자료번호#1149375
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니