자료구조 2차 퀴즈(Quiz) 문제,답

Posted by Patchman
2009.05.01 00:52 Univ Study/자료구조와 실습

CSE2008-04 / 자료구조와실습 / 선수과목Quiz(2차)(2009년3월26일)


1. 함수의 형식 인자로 다음과 같이 기술된 함수 swap()은 인자 두 정수를 서로 바꾸는기능을 수행한다. 함수 swap()을 구현하여 결과를 알아보는 프로그램을 완성하시오.

#include <stdio.h>
void swap(int *x, int *y);

int main(void)
{
int x, y;
printf("첫 번째 숫자를 입력하세요. -> ");
scanf("%d", &x);

printf("두 번째 숫자를 입력하세요. -> ");
scanf("%d", &y);
swap(&x, &y);

printf("첫 번째는 숫자는 %d이고 두 번째 숫자는 %d입니다.₩n", x, y);
}


void swap(int *x, int *y)
{
int z;
z = *x;
*x = *y;
*y = z;
}




2. 다음의 코드에서 잘못된 곳을 찾아라.

main()
{
int i, a[10];
for(i=0;i<=10;i++)
a[i] = 0;
}

답:
main()
{
int i, a[10];
for(i=0;i<10;i++)
a[i] = 0;
}



3. 다음의 그림은 포인터와 변수의 관계를 그림으로 도식한 것이다. 제시된 연산의 값을 적으시오.

(1) &B : 10
(2) *A : 30



4. 다항식의 최대 차수를 저장하는 변수 max_degree와, 다항식의 계수들을 저장하는 배열 factors[MAX]을 필드로 가지는 구조체 polynomial_st를 선언하시오. 단, MAX의 값은 100이다.

#define MAX 100
struct polynomial_st {
int max_degree;
int factors[MAX];
};



5. 다음의 프로그램의 출력결과를 쓰시오.

#include <stdio.h>

int main() {
int ar[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
printf("%d₩n",ar[2][1]); // 출력결과 : 답: 8
printf("%d₩n",*(*(ar+1)+2)); // 출력결과 : 답: 6
return 0;
}



6. 10개의 원소를 가지는 배열factors[10] 의 모든 값을 0으로 초기화하는 코드를 for 반복문으로 작성하시오.
답: for (i=0; i<10; i++) factors[i] = 0;

7. int i=10; int *p; p=&i; *p=8;의 문장이 수행되면 i값은 얼마인가? 답 : 8

8. int a[10]; int *p; p=a; (*p)++; 의 문장이 수행되면 변경되는 배열의 요소는? 답: a[0]

9. 포인터 p1과 p2가 선언되어 있을때 다음의 문장의 의미를 구별하여 설명하여 보라.

(1) p1 = p2; ->포인터 p2가 가지고 있는 주소값을 포인터 p2에 대입
(2) *p1 = *p2;->포인터 p2가 가리키는 값을 포인터 p2가 가리키는 곳에 대입



10. 아래 각 문장에 알맞도록 괄호 안을 채우시오.

(1) 전역변수이나 하나의 파일에서만 유효한 전역변수는 (정적(static) 전역변수이다.
(2) 키워드 ( register )(을)를 이용하여 선언하는 변수인 레지스터 변수는 변수의 저장공간을 메모리가 아닌 레지스터
     에 할당하는 변수이다.
(3) 일반 지역 변수의 선언에서 자료형 앞에는 키워드 (auto)가 생략된 것이다.
(4) 이미 전역변수로 선언된 변수를 블록이나 함수 내부에서 이 변수는 외부에서 선언된 전역변수임을 알리는 키워드
     가 (extern) 이다 .