자료구조: 20개의 글

자료구조 실습1 - 배열을 이용한 다항식 처리 프로그램

Posted by Patchman
2009.05.01 01:04 Univ Study/자료구조와 실습

자료구조 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) 이다 .


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

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

선수과목 Quiz

1. 배열을 사용하여 32, 54, 98, 234, 27을 초기화하여 출력하고 배열의 총합과 평균을 구하여 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int sum(int n, int ary[]);
double average(int n, int ary[]);
int main(void)
{
int data[] = {32, 54, 98, 234, 27};
printf("배열의 합은 %d이며 평균은 %.3lf입니다.₩n", sum(5, data), average(5, data));
return 0;
}

double average(int n, int ary[])
{
double sum = 0;
int i = 1;
for ( i = 0; i < n; i++ )
{

sum += ary[i];
}
return sum / n;
}

int sum(int n, int ary[])
{
int total = 0, i;
for ( i = 0; i < n; i++ )
{
total += ary[i];
}
return total;
}


2. 3개의 과목 이름 [C 프로그래밍], [컴퓨터 개론], [객체지향 프로그래밍]을 이차원 배열에 저장하고, 이 세 과목에 대한 점수를 각각 다음과 같이 저장하여 각 학생 당 세 과목의 합을 구하여 출력하는 프로그램을 작성하시오.

학생 1 30 30 40
학생 2 78 93 88
학생 3 98 99 75
학생 4 69 78 85

#include <stdio.h>
#define NUMOFLECTURE 3

void print(int totalcredit, double totalpoint);

char lecture[NUMOFLECTURE][20] = { "C 프로그래밍", " 컴퓨터 개론", "객체지향 프로그래밍" };
int point[4][NUMOFLECTURE+1] = {{30, 30, 40}, {78, 93, 88}, {98, 99, 75}, {69, 78, 85}};

int main(void)
{
int i, j;
printf("₩t%-16s%-16s%-16s%6s₩n", lecture[0], lecture[1], lecture[2], "합");

for (j = 0; j < 4; j++)
{
printf("학생%d", j + 1);
for (i = 0; i < NUMOFLECTURE; i++)
{
point[j][3] += point[j][i];
printf("%14d", point[j][i]);
}
printf("%20d₩n", point[j][3]);
}
return 0;
}



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

void swap(int *x, int *y)
{

}

#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;
}



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

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


5. 학번과 이름, 학년을 저장할 수 있는 구조체를 선언하고, 자신의 정보를 각 필드에입력하는 코드를 작성하시오.
// 구조체 선언
// 구조체 이름 : struct information
// 필드 자료형 : 학번, 학년 -> 정수형, 이름 -> 문자형배열(5칸 이상)

struct information
{
int Serial;
int Grade;
char Name[5];
};
// 정보를 입력하는 코드
void InitInformation(struct information *temp)
{
char aName[5];
int nSerial;
int nGrade;

printf("이름을 입력하시오.₩n");
scanf("%s", aName);
*temp->Name = aName;

printf("학번을 입력하시오.₩n");
scanf("%d", &nSerial);
*temp->Serial = nSerial;

printf("학년을 입력하시오.₩n");
scanf("%d", &nGrade);
*temp->Grade = nGrade;