игра брюс 2048
Главная / Программирование / Программирование на языке C в Microsoft Visual Studio 2010 / Тест 15

Программирование на языке C в Microsoft Visual Studio 2010 - тест 15

Упражнение 1:
Номер 1
Какие из перечисленных операций разрешено выполнять над структурами?

Ответ:

 (1) копирование структуры как целого (поэлементно) 

 (2) присваивание структуры как целого (поэлементно) 

 (3) взятие адреса структуры операцией & 

 (4) обращение к элементам структуры 


Номер 2
Задана структура:

struct fred {
	char x;
	int y;
	float z;
	char str[10]; 
} mike;
	
В каком случае функции func() передается адрес отдельного члена структуры?	
		

Ответ:

 (1) func(&mike.x); 

 (2) func(mike.y); 

 (3) func(mike.str); 

 (4) func(&mike.str[2]); 


Номер 3
Задана структура:

struct fred {
	char x;
	int y;
	float z;
	char str[10]; 
} mike;
	
Каким образом члены структуры могут быть переданы в функцию?	
		

Ответ:

 (1) func(x); 

 (2) func(mike.y); 

 (3) func(mike.str); 

 (4) func(mike.str[2]); 


Упражнение 2:
Номер 1
В каком случае в функцию fun() передается указатель на структуру?

Ответ:

 (1) struct struct_type {int a, b; char ch; }; void fun(struct struct_type STRUCT3); int main (void) { struct struct_type struct2 = {2, 3, 'Z' }; fun(struct2); return 0; } void fun(struct struct_type STRUCT3) { printf("\n %c: %d + %d = %d\n", \ STRUCT3.ch, STRUCT3.a, STRUCT3.b, STRUCT3.a + STRUCT3.b); }  

 (2) struct struct_type { int a, b; char ch; }; void fun(struct struct_type parm); int main (void) { struct struct_type arg; arg.a = 1000; fun(arg); return 0; } void fun(struct struct_type parm) { printf("\n %d\n", parm.a); }  

 (3) struct struct_type { int a, b; char ch; }; void fun(struct struct_type *parm); int main (void) { struct struct_type arg,*PTR; PTR = &arg; PTR->a = 999; fun(PTR); return 0; } void fun(struct struct_type *parm) { printf("\n %d\n", parm->a); }  

 (4) struct struct_type { int a, b; char ch; }; void fun(struct struct_type *parm); int main (void) { struct struct_type arg,*PTR; PTR = &arg; PTR->a = 999; fun(PTR); return 0; } void fun(struct struct_type &parm) { printf("\n %d\n", parm->a); }  


Номер 2
Какая программа содержит ошибку?

Ответ:

 (1) struct struct_type {int a, b; char ch; }; void fun(struct struct_type STRUCT3); int main (void) { struct struct_type struct2 = {2, 3, 'Z' }; fun(struct2); return 0; } void fun(struct struct_type STRUCT3) { printf("\n %c: %d + %d = %d\n", \ STRUCT3.ch, STRUCT3.a, STRUCT3.b, STRUCT3.a + STRUCT3.b); }  

 (2) struct struct_type { int a, b; char ch; }; void fun(struct struct_type parm); int main (void) { struct struct_type arg; arg.a = 1000; fun(arg); return 0; } void fun(struct struct_type parm) { printf("\n %d\n", parm.a); }  

 (3) struct struct_type { int a, b; char ch; }; void fun(struct struct_type *parm); int main (void) { struct struct_type arg,*PTR; PTR = &arg; PTR->a = 999; fun(PTR); return 0; } void fun(struct struct_type *parm) { printf("\n %d\n", parm->a); }  

 (4) struct struct_type { int a, b; char ch; }; void fun(struct struct_type *parm); int main (void) { struct struct_type arg,*PTR; PTR = &arg; PTR->a = 999; fun(PTR); return 0; } void fun(struct struct_type &parm) { printf("\n %d\n", parm->a); }  


Номер 3
В какой программе в качестве параметра используется структура?

Ответ:

 (1) struct struct_type { int a, b; char ch; }; void fun(struct struct_type parm); int main (void) { struct struct_type arg; arg.a = 1000; fun(arg); return 0; } void fun(struct struct_type parm) { printf("\n %d\n", parm.a); }  

 (2) struct struct_type { int a, b; char ch; }; void fun(struct struct_type *parm); int main (void) { struct struct_type arg,*PTR; PTR = &arg; PTR->a = 999; fun(PTR); return 0; } void fun(struct struct_type *parm) { printf("\n %d\n", parm->a); }  

 (3) struct struct_type { int a, b; char ch; }; void fun(struct struct_type *parm); int main (void) { struct struct_type arg,*PTR; PTR = &arg; PTR->a = 999; fun(PTR); return 0; } void fun(struct struct_type &parm) { printf("\n %d\n", parm->a); }  


Упражнение 3:
Номер 1
Какие утверждения являются верными для приведенной программы?

#define MAX 20

double sum(double, double);

int main (void) {

	struct test {
		char A[MAX+1]; 
		double ax; 
		char B[MAX+1]; 
		double by;
	};
	struct test AB;
	
	printf("\nEnter 1st name: ");
	gets_s(AB.A, MAX);
	printf("\nEnter the first real number: ");
	scanf_s("%lf", &AB.ax);
	_flushall();
	printf("\nEnter 2nd name: ");
	gets_s(AB.B, MAX);
	printf("\nEnter the second real number: ");
	scanf_s("%lf", &AB.by);

	printf("\n\nThe sum of two numbers %1.2f and %1.2f, %s and %s: %1.2f\n",
			AB.ax, AB.by, AB.A, AB.B, sum(AB.ax, AB.by)); 

	return 0; 
}

double sum(double x, double y) 
{
	return (x + y);
}
			
		

Ответ:

 (1) для корректного выполнения программы структура test должна быть объявлена глобально 

 (2) в функцию sum передается структура 

 (3) в функцию sum передаются части структуры 

 (4) программа не содержит ошибок 


Номер 2
Какие утверждения являются неверными для приведенной программы?

#define MAX 20

double sum(double, double);

int main (void) {

	struct test {
		char A[MAX+1]; 
		double ax; 
		char B[MAX+1]; 
		double by;
	};
	struct test AB;
	
	printf("\nEnter 1st name: ");
	gets_s(AB.A, MAX);
	printf("\nEnter the first real number: ");
	scanf_s("%lf", &AB.ax);
	_flushall();
	printf("\nEnter 2nd name: ");
	gets_s(AB.B, MAX);
	printf("\nEnter the second real number: ");
	scanf_s("%lf", &AB.by);

	printf("\n\nThe sum of two numbers %1.2f and %1.2f, %s and %s: %1.2f\n",
			AB.ax, AB.by, AB.A, AB.B, sum(AB.ax, AB.by)); 

	return 0; 
}

double sum(double x, double y) 
{
	return (x + y);
}
			
		

Ответ:

 (1) для корректного выполнения программы структура test должна быть объявлена глобально 

 (2) в функцию sum передается структура 

 (3) в функцию sum передаются части структуры 

 (4) программа не содержит ошибок 


Номер 3
Определите, содержит ли приведенная программа ошибки? Если содержит, укажите, какие именно?

#define MAX 20

double sum(double, double);

int main (void) {

	struct test {
		char A[MAX+1]; 
		double ax; 
		char B[MAX+1]; 
		double by;
	};
	struct test AB;
	
	printf("\nEnter 1st name: ");
	gets_s(AB.A, MAX);
	printf("\nEnter the first real number: ");
	scanf_s("%lf", &AB.ax);
	_flushall();
	printf("\nEnter 2nd name: ");
	gets_s(AB.B, MAX);
	printf("\nEnter the second real number: ");
	scanf_s("%lf", &AB.by);

	printf("\n\nThe sum of two numbers %1.2f and %1.2f, %s and %s: %1.2f\n",
			AB.ax, AB.by, AB.A, AB.B, sum(ax, by)); 

	return 0; 
}

double sum(double x, double y) 
{
	return (x + y);
}
			
		

Ответ:

 (1) программа содержит ошибку, так как структура test должна быть объявлена глобально 

 (2) программа содержит ошибку, так как неверно передаются поля структуры test при использовании их в качестве аргументов функции sum 

 (3) программа не содержит ошибок 


Упражнение 4:
Номер 1
Функция f1() выводит на экран переданное ей значение. Каким образом должна быть описана данная функция для корректного выполнения приведенной программы?

struct struct_type {
	int a, b;
	char ch;
} ;

int main(void)
{
	struct struct_type arg;

	arg.a = 1000;
	f1(arg);

	return 0;
}
		
		

Ответ:

 (1) void f1(struct struct_type *parm) { printf("%d", parm.a); }  

 (2) void f1(struct_type parm) { printf("%d", parm.a); }  

 (3) void f1(struct struct_type parm) { printf("%d", parm.a); }  


Номер 2
Функция f1() выводит на экран переданное ей значение. Каким образом должна быть описана данная функция для корректного выполнения приведенной программы?

struct struct_type {
	int a, b;
	char ch;
} ;

int main(void)
{
	struct struct_type arg;

	arg.a = 1000;
	f1(&arg);

	return 0;
}
		
		

Ответ:

 (1) void f1(struct struct_type *parm) { printf("%d", parm.a); }  

 (2) void f1(struct struct_type *parm) { printf("%d", parm->a); }  

 (3) void f1(struct struct_type parm) { printf("%d", parm->a); }  

 (4) void f1(struct struct_type *parm) { printf("%d", &parm.a); }  


Номер 3
Функция f1() выводит на экран переданное ей значение. Каким образом должна быть описана данная функция для корректного выполнения приведенной программы?

typedef struct {
	int a, b;
	char ch;
} struct_type;

int main(void)
{
	struct_type arg;

	arg.a = 1000;
	f1(&arg);

	return 0;
}
		
		

Ответ:

 (1) void f1(struct_type parm) { printf("%d", parm.a); }  

 (2) void f1(struct struct_type *parm) { printf("%d", parm->a); }  

 (3) void f1(struct_type *parm) { printf("%d", parm->a); }  

 (4) void f1(struct struct_type &parm) { printf("%d", parm->a); }  


Упражнение 5:
Номер 1
Какая программа не содержит ошибок?

Ответ:

 (1) struct struct_type { int a, b; char ch; } ; struct struct_type2 { int a, b; char ch; } ; void f1(struct struct_type2 parm); int main(void) { struct struct_type2 arg; arg.a = 1000; f1(arg); return 0; } void f1(struct struct_type2 parm) { printf("%d", parm.a); }  

 (2) struct struct_type { int a, b; char ch; } ; struct struct_type2 { int a, b; char ch; } ; void f1(struct struct_type2 parm); int main(void) { struct struct_type2 a, *arg; arg = &a; arg->a = 1000; f1(arg); return 0; } void f1(struct struct_type2 parm) { printf("%d", parm.a); }  

 (3) struct struct_type { int a, b; char ch; } ; struct struct_type2 { int a, b; char ch; } ; void f1(struct struct_type2 parm); int main(void) { struct struct_type arg; arg.a = 1000; f1(arg); return 0; } void f1(struct struct_type2 parm) { printf("%d", parm.a); }  


Номер 2
Какая программа содержит ошибку?

Ответ:

 (1) struct struct_type { int a, b; char ch; } ; struct struct_type2 { int a, b; char ch; } ; void f1(struct struct_type2 parm); int main(void) { struct struct_type2 arg; arg.a = 1000; f1(arg); return 0; } void f1(struct struct_type2 parm) { printf("%d", parm.a); }  

 (2) struct struct_type { int a, b; char ch; } ; struct struct_type2 { int a, b; char ch; } ; void f1(struct struct_type2 parm); int main(void) { struct struct_type2 a, *arg; arg = &a; arg->a = 1000; f1(arg); return 0; } void f1(struct struct_type2 parm) { printf("%d", parm.a); }  

 (3) struct struct_type { int a, b; char ch; } ; struct struct_type2 { int a, b; char ch; } ; void f1(struct struct_type2 parm); int main(void) { struct struct_type arg; arg.a = 1000; f1(arg); return 0; } void f1(struct struct_type2 parm) { printf("%d", parm.a); }  


Номер 3
Содержит ли приведенная программа ошибки? Если содержит, укажите, какие?

struct struct_type {
  int a, b;
  char ch;
} ;

struct struct_type2 {
  int a, b;
  char ch;
} ;

void f1(struct struct_type2 parm);

int main(void)
{
  struct struct_type arg;

  arg.a = 1000;
  f1(arg); 

  return 0;
}

void f1(struct struct_type2 parm)
{
  printf("%d", parm.a);
}
		
		

Ответ:

 (1) программа содержит ошибку, так как неверно задан тип переменной arg 

 (2) программа содержит ошибку, так как при вызове функции f1 возникает несоответствие типов 

 (3) программа не содержит ошибок 


Упражнение 6:
Номер 1
Чему будут равны значения полей структурной переменной s после выполнения приведенной программы?

typedef struct {
	char fio[30];
	int group;
	float average;
} student;

void Init(student*);

int main(void)
{
	student s, *st;
	int i;

	st = &s;
	Init(st);
	
	return 0;
}

void Init(student *st)
{
	printf("\nEnter name: ");
	scanf("%s", st->fio);
	printf("\nEnter group: ");
	scanf("%d", &st->group);
	printf("\nEnter average mark: ");
	scanf("%f", &st->average);
}
		
		

Ответ:

 (1) данным, которые пользователь введет с клавиатуры 

 (2) структура будет пустой, так как при выходе из фукнции Init значения всех локальных переменных очистятся 

 (3) при выполнении программы возникнет ошибка, так как переменная s не инициализирована 


Номер 2
Задана программа, позволяющая пользователю задать данные о студенте с клавиатуры:

typedef struct {
	char fio[30];
	int group;
	float average;
} student;

void Init(student*);

int main(void)
{
	student s, *st;
	int i;

	st = &s;
	Init(st);
	<Вывод данных на экран>
	
	return 0;
}

void Init(student *st)
{
	printf("\nEnter name: ");
	scanf("%s", st->fio);
	printf("\nEnter group: ");
	scanf("%d", &st->group);
	printf("\nEnter average mark: ");
	scanf("%f", &st->average);
}

Необходимо дополнить программу функцией вывода заданных о студенте данных на экран и вызовом этой функции в программе. Какой вариант описания и вызова функции выполняет поставленную задачу?		
		

Ответ:

 (1) функция: void Print(student *st) { printf("\nName: %s", st->fio); printf("\nGrouproup: %d", st->group); printf("\nAverage mark: %.2f", st->average); } вызов: Print(st);  

 (2) функция: void Print(student st) { printf("\nName: %s", st.fio); printf("\nGrouproup: %d", st.group); printf("\nAverage mark: %.2f", st.average); } вызов: Print(st);  

 (3) функция: void Print(char *n, int i, float d) { printf("\nName: %s", n); printf("\nGrouproup: %d", i); printf("\nAverage mark: %.2f", d); } вызов: Print(st.fio, st.group, st.average);  

 (4) функция: void Print(char *n, int i, float d) { printf("\nName: %s", n); printf("\nGrouproup: %d", i); printf("\nAverage mark: %.2f", d); } вызов: Print(st->fio, st->group, st->average);  


Номер 3
Задана программа, позволяющая пользователю задать данные о студенте с клавиатуры:

typedef struct {
	char fio[30];
	int group;
	float average;
} student;

void Init(student*);

int main(void)
{
	student s, *st;
	int i;

	st = &s;
	Init(st);
	<Вывод данных на экран>
	
	return 0;
}

void Init(student *st)
{
	printf("\nEnter name: ");
	scanf("%s", st->fio);
	printf("\nEnter group: ");
	scanf("%d", &st->group);
	printf("\nEnter average mark: ");
	scanf("%f", &st->average);
}

Необходимо дополнить программу функцией вывода заданных о студенте данных на экран и вызовом этой функции в программе. Какой вариант описания и вызова функции не выполняет поставленную задачу?		
		

Ответ:

 (1) функция: void Print(student *st) { printf("\nName: %s", st->fio); printf("\nGrouproup: %d", st->group); printf("\nAverage mark: %.2f", st->average); } вызов: Print(st);  

 (2) функция: void Print(student st) { printf("\nName: %s", st.fio); printf("\nGrouproup: %d", st.group); printf("\nAverage mark: %.2f", st.average); } вызов: Print(st);  

 (3) функция: void Print(char *n, int i, float d) { printf("\nName: %s", n); printf("\nGrouproup: %d", i); printf("\nAverage mark: %.2f", d); } вызов: Print(st.fio, st.group, st.average);  

 (4) функция: void Print(char *n, int i, float d) { printf("\nName: %s", n); printf("\nGrouproup: %d", i); printf("\nAverage mark: %.2f", d); } вызов: Print(st->fio, st->group, st->average);  


Упражнение 7:
Номер 1
Какую ошибку содержит приведенная программа?

void Init(struct student*);
void Print(struct student*);

int main(void)
{
	struct student {
		char fio[30];
		int group;
		float average;
	};

	struct student s, *st;
	int i;

	st = &s;
	Init(st);
	Print(st);

	return 0;
}

void Init(struct student *st)
{
	printf("\nEnter name: ");
	scanf("%s", st->fio);
	printf("\nEnter group: ");
	scanf("%d", &st->group);
	printf("\nEnter average mark: ");
	scanf("%f", &st->average);
}

void Print(struct student *st)
{
	printf("\nName: %s", st->fio);
	printf("\nGrouproup: %d", st->group);
	printf("\nAverage mark: %.2f", st->average);
}
		
		

Ответ:

 (1) неверную передачу указателя структуры в функцию 

 (2) неверную передачу структуры в функцию 

 (3) локальное объявление структуры вместо глобального 

 (4) программа не содержит ошибок 


Номер 2
Что необходимо сделать для того, чтобы исправить содержащуюся в программе ошибку?

void Init(struct student*);
void Print(struct student*);

int main(void)
{
	struct student {
		char fio[30];
		int group;
		float average;
	};

	struct student s, *st;
	int i;

	st = &s;
	Init(st);
	Print(st);

	return 0;
}

void Init(struct student *st)
{
	printf("\nEnter name: ");
	scanf("%s", st->fio);
	printf("\nEnter group: ");
	scanf("%d", &st->group);
	printf("\nEnter average mark: ");
	scanf("%f", &st->average);
}

void Print(struct student *st)
{
	printf("\nName: %s", st.fio);
	printf("\nGrouproup: %d", st.group);
	printf("\nAverage mark: %.2f", st.average);
}
		
		

Ответ:

 (1) изменить оператор обращения к полям структуры в функции Print 

 (2) изменить типы формальных параметров в описаниях функций Init и Print 

 (3) объявить структуру student глобально 


Номер 3
Что необходимо сделать для того, чтобы исправить содержащуюся в программе ошибку?

void Init(struct student*);
void Print(struct student*);

int main(void)
{
	struct student {
		char fio[30];
		int group;
		float average;
	};

	struct student s, *st;
	int i;

	st = &s;
	Init(&st);
	Print(st);

	return 0;
}

void Init(struct student *st)
{
	printf("\nEnter name: ");
	scanf("%s", st.fio);
	printf("\nEnter group: ");
	scanf("%d", &st.group);
	printf("\nEnter average mark: ");
	scanf("%f", &st.average);
}

void Print(struct student *st)
{
	printf("\nName: %s", st->fio);
	printf("\nGrouproup: %d", st->group);
	printf("\nAverage mark: %.2f", st->average);
}
		
		

Ответ:

 (1) изменить оператор обращения к полям структуры в функции Init 

 (2) изменить типы формальных параметров в описаниях функций Init и Print 

 (3) объявить структуру student глобально 

 (4) изменить вызов функции Init 


Упражнение 8:
Номер 1
Каким образом должна быть объявлена функция Init для корректной работы приведенной программы?

struct student {
	char fio[30];
	int group;
	float average;
};

<Прототи функции Init>
void Print(struct student*);

int main(void)
{
	struct student s, *st;
	int i;

	s = Init("Ivanov I.", 3801, 5.00);
	st = &s;
	Print(st);

	return 0;
}

struct student Init(char* n, int i, float f)
{
	struct student s, *st;
	st = &s;
	strcpy(st->fio, n);
	st->group = i;
	st->average = f;

	return s;
}

void Print(struct student *st)
{
	printf("\nName: %s", st->fio);
	printf("\nGrouproup: %d", st->group);
	printf("\nAverage mark: %.2f\n", st->average);
}
			
		

Ответ:

 (1) struct student* Init(char* n, int i, float f) { struct student s, *st; st = &s; strcpy(st->fio, n); st->group = i; st->average = f; return st; }  

 (2) struct student Init(char* n, int i, float f) { struct student s, *st; st = &s; strcpy(st->fio, n); st->group = i; st->average = f; return st; }  

 (3) struct student Init(char* n, int i, float f) { struct student s, *st; st = &s; strcpy(st->fio, n); st->group = i; st->average = f; return s; }  

 (4) struct student Init(char* n, int i, float f) { struct student s, *st; st = &s; strcpy(st->fio, n); st->group = i; st->average = f; return &s; }  


Номер 2
В приведенной программе происходит инициализация структуры данных о студенте и последующий вывод этих данных:

struct student {
	char fio[30];
	int group;
	float average;
};

struct student Init(char*, int, float);
void Print(struct student*);

int main(void)
{
	struct student s, *st;
	int i;

	st = Init("Ivanov I.", 3801, 5.00);
	Print(st);

	return 0;
}

struct student Init(char* n, int i, float f)
{
	struct student s, *st;
	st = &s;
	strcpy(st->fio, n);
	st->group = i;
	st->average = f;

	return s;
}

void Print(struct student *st)
{
	printf("\nName: %s", st->fio);
	printf("\nGrouproup: %d", st->group);
	printf("\nAverage mark: %.2f\n", st->average);
}

Какие утверждения являются верными для приведенной программы?		
		

Ответ:

 (1) функция Init возвращает структуру 

 (2) функция Init возвращает указатель на структуру 

 (3) функция Init вызывается неверно 


Номер 3
Что будет выведено на экран в результате выполнения приведенной программы?

struct student {
	char fio[30];
	int group;
	float average;
};

struct student Init(char*, int, float);
void Print(struct student*);

int main(void)
{
	struct student s1, s2, s3, *st;
	int i;

	s1 = Init("Ivanov I.", 3801, 5.00);
	s2 = Init(s1.fio, 4209, 4.50);
	s3 = Init("Petrov P", s1.group, s2.average);
	st = &s3;
	Print(st);

	return 0;
}

struct student Init(char* n, int i, float f)
{
	struct student s, *st;
	st = &s;
	strcpy(st->fio, n);
	st->group = i;
	st->average = f;

	return s;
}

void Print(struct student *st)
{
	printf("\nName: %s", st->fio);
	printf("\nGrouproup: %d", st->group);
	printf("\nAverage mark: %.2f\n", st->average);
}
		
		

Ответ:

 (1) данные о студенте Ivanov I. из группы 3801 

 (2) данные о студенте Ivanov I. из группы 4209 

 (3) данные о студенте Petrov P. из группы 3801 

 (4) данные о студенте Petrov P. из группы 4209 

 (5) программа содержит ошибку 


Упражнение 9:
Номер 1
Необходимо написать программу, в которой будут три функции: Init - функция инициализации структуры, Print - функция вывода структуры на экран, Modify - функция изменения полей структуры. Определите, удовлетворяет ли приведенная программа поставленной задаче? Если не удовлетворяет, укажите, почему?

typedef struct {
	char fio[30];
	char phone[20];
	int age;
} note;

note Init(char*, char*, int);
void Print(note*);
void Modify(note);

int main(void)
{
	note n[3], *pn;
	char *strName[3] = {"Ivanov I.", "Pertov P.", "Sidorov S."};
	char *strPhone[3] = {"12-34-56", "78-90-12", "34-56-78"};
	int i, age = 25;

	for (i=0; i<3; i++) {
		n[i] = Init(strName[i], strPhone[i], age+i);
		pn = &n[i];
		Print(pn);
	}

	Modify(n[0]);
	pn = &n[0];
	Print(pn);

	return 0;
}

note Init(char* f, char* p, int a)
{
	note n, *pn;
	pn = &n;
	strcpy(pn->fio, f);
	strcpy(pn->phone, p);
	pn->age = a;

	return n;
}

void Print(note *pn)
{
	printf("\nName: %s", pn->fio);
	printf("\nPhone: %s", pn->phone);
	printf("\nAge: %d\n", pn->age);
}

void Modify(note n) {
	strcpy(n.fio, "Vasiliev V.");
	strcpy(n.phone, "89-01-23");
	n.age = 30;
}
			
		

Ответ:

 (1) программа выполняет поставленную задачу 

 (2) программа не выполняет поставленную задачу, так как работа функции Init не соответсвует задаче 

 (3) программа не выполняет поставленную задачу, так как работа функции Print не соответсвует задаче 

 (4) программа не выполняет поставленную задачу, так как работа функции Modify не соответсвует задаче 


Номер 2
Задана программа, в которой реализовано три функции: Init - функция инициализации структуры, Print - функция вывода структуры на экран, Modify - функция изменения полей структуры:

typedef struct {
	char fio[30];
	char phone[20];
	int age;
} note;

note Init(char*, char*, int);
void Print(note*);
void Modify(note);

int main(void)
{
	note n[3], *pn;
	char *strName[3] = {"Ivanov I.", "Pertov P.", "Sidorov S."};
	char *strPhone[3] = {"12-34-56", "78-90-12", "34-56-78"};
	int i, age = 25;

	for (i=0; i<3; i++) {
		n[i] = Init(strName[i], strPhone[i], age+i);
		pn = &n[i];
		Print(pn);
	}

	Modify(n[0]);
	pn = &n[0];
	Print(pn);

	return 0;
}

note Init(char* f, char* p, int a)
{
	note n, *pn;
	pn = &n;
	strcpy(pn->fio, f);
	strcpy(pn->phone, p);
	pn->age = a;

	return n;
}

void Print(note *pn)
{
	printf("\nName: %s", pn->fio);
	printf("\nPhone: %s", pn->phone);
	printf("\nAge: %d\n", pn->age);
}

void Modify(note n) {
	strcpy(n.fio, "Vasiliev V.");
	strcpy(n.phone, "89-01-23");
	n.age = 30;
}
	
Какая функция не соответсвует поставленной задаче?		
		

Ответ:

 (1) Init 

 (2) Print 

 (3) Modify 


Номер 3
Задана программа, в которой реализовано три функции: Init - функция инициализации структуры, Print - функция вывода структуры на экран, Modify - функция изменения полей структуры:

typedef struct {
	char fio[30];
	char phone[20];
	int age;
} note;

note Init(char*, char*, int);
void Print(note*);
void Modify(note);

int main(void)
{
	note n[3], *pn;
	char *strName[3] = {"Ivanov I.", "Pertov P.", "Sidorov S."};
	char *strPhone[3] = {"12-34-56", "78-90-12", "34-56-78"};
	int i, age = 25;

	for (i=0; i<3; i++) {
		n[i] = Init(strName[i], strPhone[i], age+i);
		pn = &n[i];
		Print(pn);
	}

	Modify(n[0]);
	pn = &n[0];
	Print(pn);

	return 0;
}

note Init(char* f, char* p, int a)
{
	note n, *pn;
	pn = &n;
	strcpy(pn->fio, f);
	strcpy(pn->phone, p);
	pn->age = a;

	return n;
}

void Print(note *pn)
{
	printf("\nName: %s", pn->fio);
	printf("\nPhone: %s", pn->phone);
	printf("\nAge: %d\n", pn->age);
}

void Modify(note n) {
	strcpy(n.fio, "Vasiliev V.");
	strcpy(n.phone, "89-01-23");
	n.age = 30;
}
	
Какие функции соответсвуют поставленной задаче?		
		

Ответ:

 (1) Init 

 (2) Print 

 (3) Modify 


Упражнение 10:
Номер 1
В приведенной программе функция Copy выполняет копирование одной структуры типа sale в другую и возвращает структуру этого же типа:

typedef struct sale_struct {
	char *title;
	int price;
} sale;

sale Copy(sale);

int main(void)
{
	sale s1,s2;
	struct sale_struct s3, s4;

	s1.title = "Book";
	s1.price = 200;

	s3.title = "Cake";
	s3.price = 60;

	return 0;
}

sale Copy(sale s) {
	sale s1;
	s1 = s;
	return s1;
}
	
Какие из перечисленных вызов функции Copy являются верными?
		

Ответ:

 (1) s2 = Copy(s1); 

 (2) s3 = Copy(s1); 

 (3) s4 = Copy(&s3); 


Номер 2
В приведенной программе функция Copy выполняет копирование одной структуры типа sale в другую и возвращает структуру этого же типа:

typedef struct sale_struct {
	char *title;
	int price;
} sale;

sale Copy(sale);

int main(void)
{
	sale s1,s2;
	struct sale_struct s3, s4;

	s1.title = "Book";
	s1.price = 200;

	s3.title = "Cake";
	s3.price = 60;

	return 0;
}

sale Copy(sale s) {
	sale s1;
	s1 = s;
	return s1;
}
	
Какие из перечисленных вызов функции Copy являются неверными?
		

Ответ:

 (1) s2 = Copy(s1); 

 (2) s3 = Copy(s1); 

 (3) s4 = Copy(&s3); 


Номер 3
В приведенной программе функция Copy выполняет копирование одной структуры типа sale в другую и возвращает структуру этого же типа:

typedef struct sale_struct {
	char *title;
	int price;
} sale;

sale Copy(sale);

int main(void)
{
	sale s1,s2;
	struct sale_struct s3, s4;

	s1.title = "Book";
	s1.price = 200;

	s3.title = "Cake";
	s3.price = 60;

	return 0;
}

sale Copy(sale s) {
	sale s1;
	s1 = s;
	return s1;
}
	
Какие из перечисленных вызов функции Copy являются верными?
		

Ответ:

 (1) s2 = Copy(s1); 

 (2) s4 = Copy(s3); 

 (3) s1 = Copy(s3); 


Упражнение 11:
Номер 1
Необходимо написать функцию копирования значений всех полей одной структуры заданного типа в другую:

typedef struct sale_struct {
	char *title;
	int price;
} sale;

Какая функция выполняет поставленную задачу?

Ответ:

 (1) sale Copy(char* t, int p) { sale s1; s1.title = t; s1.price = p; return s1; }  

 (2) sale Copy(sale *s) { sale s1; s1 = s; return s1; }  

 (3) sale Copy(sale s) { sale s1; s1 = s; return s1; }  


Номер 2
Необходимо написать функцию копирования значений всех полей одной структуры заданного типа в другую:

typedef struct sale_struct {
	char *title;
	int price;
} sale;

Какая функция не выполняет поставленную задачу?

Ответ:

 (1) sale Copy(char* t, int p) { sale s1; s1.title = t; s1.price = p; return s1; }  

 (2) sale Copy(sale *s) { sale s1; s1 = s; return s1; }  

 (3) sale Copy(sale s) { sale s1; s1 = s; return s1; }  


Номер 3
Необходимо написать функцию копирования значений всех полей одной структуры заданного типа в другую:

typedef struct sale_struct {
	char *title;
	int price;
} sale;

Для выполнения поставленной задачи была создана функция:

sale Copy(char* t, int p) {
	sale s1;
	s1.title = t;
	s1.price = p;
	return s1;
}
	
Какие утверждения являются верными?

Ответ:

 (1) функция Copy выполняет поставленную задачу 

 (2) функция Copy не содержит ошибок, но не выполняет поставленную задачу 

 (3) при вызове функии Copy в нее нужно передать структуру типа sale_struct 


Упражнение 12:
Номер 1
Каким образом выполняется передача функции члена структуры?

Ответ:

 (1) по значению 

 (2) по ссылке 

 (3) член структуры не может быть отдельно передан структуре 


Номер 2
Какое утверждение является верным?

Ответ:

 (1) член структуры передается функции по значению 

 (2) член структуры передается функции по ссылке 

 (3) член структуры не может быть отдельно передан структуре 


Номер 3
Какие утверждения являются неверными?

Ответ:

 (1) член структуры передается функции по ссылке 

 (2) член структуры передается функции по значению 

 (3) член структуры не может быть отдельно передан структуре 




Главная / Программирование / Программирование на языке C в Microsoft Visual Studio 2010 / Тест 15