자료구조 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;