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

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

Упражнение 1:
Номер 1
Что такое директива препроцессора?

Ответ:

 (1) инструкция препроцессора 

 (2) программа, выполняющая предварительную обработку входных данных для другой программы 

 (3) буферный процессор 


Номер 2
Что такое препроцессор?

Ответ:

 (1) инструкция препроцессора 

 (2) программа, выполняющая предварительную обработку входных данных для другой программы 

 (3) буферный процессор 


Номер 3
Какие действия выполняет препроцессор языка С?

Ответ:

 (1) макроподстановку 

 (2) включение именованных файлов 

 (3) условную компиляцию 


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

Ответ:

 (1) #include "test1.h" 

 (2) #define N 10, #define M 5 

 (3) #include <stdio.h> #include <conio.h> 


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

Ответ:

 (1) #include "test1.h" 

 (2) _#define M 5 

 (3) #include <stdio.h> #include <conio.h> 


Номер 3
Каким образом несколько директив могут быть объявлены в одной строке?

Ответ:

 (1) #define N 10, #define M 5 

 (2) #include <stdio.h> #include <conio.h> 

 (3) объявление нескольких директив в одной строке недопустимо 


Упражнение 3:
Номер 1
Почему при использовании макросов с формальными параметрами увеличивается скорость выполнения кода?

Ответ:

 (1) потому что объявление макроса находится в начале файла 

 (2) потому что макрос не чувствителен к типу данных 

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


Номер 2
Засчет чего достигается увеличение скорости выполнения кода при использовании макроса с формальными параметрами очень большого размера?

Ответ:

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

 (2) засчет уменьшения размеров программы 

 (3) засчет освобождения некоторых адресов памяти, используемых программой 


Номер 3
Какое влияние на скорость выполнения кода оказывает использование макросов с формальными параметрами?

Ответ:

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

 (2) уменьшает скорость выполнения кода 

 (3) зависит от конкретного макроса 

 (4) никак не влияет 


Упражнение 4:
Номер 1
Чему будет равно значение переменной x в результате выполнения приведенной программы?

#include <stdio.h> 
#define	SQR(x)	(x*x)

int main()
{ 
	int x, y=2;
	x = SQR(y+1);
	printf("x = %d", x);
	return 0;
} 
		
		

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
Чему будет равно значение переменной x в результате выполнения приведенной программы?

#include <stdio.h> 
#define	SQR(x)	(x*x)

int main()
{ 
	int x, y=2;
	x = SQR(y+1);
	printf("x = %d", x);
	return 0;
} 
		
		

Ответ:

 (1)

 (2)

 (3) 14 

 (4) 16 


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

#include <stdio.h> 
#define	DIV(x, y)	(x/y)

int main()
{ 
	float x=2.0, y=2.0;
	float z;
	z = DIV(x+1, y+1);
	printf("x = %.1f", x);
	return 0;
} 
		
		

Ответ:

 (1) 1.0 

 (2) 2.0 

 (3) 3.5 


Упражнение 5:
Номер 1
В программе задан макрос #define	MAX(x, y)	((x)>(y) ? (x) : (y)). В какой из приведенных программ он может быть использован?

Ответ:

 (1) int main() { double x, y, z; printf("Введите два числа (через пробел): "); scanf("%d %d", &x, &y); z = MAX(x+10, y); printf("Наибольшим числом является %d", z); return 0; }  

 (2) int main() { char a, b; printf("Введите два символа (через пробел): "); scanf("%c %c", &a, &b); printf("Наибольшим числом является %c", MAX(a, b)); return 0; }  

 (3) int main() { float x, y; printf("Введите два числа (через пробел): "); scanf("%f %f", &x, &y); printf("Наибольшим числом является %f", MAX(x, y)); return 0; }  


Номер 2
В программе задан макрос #define	MAX(x, y)	((x)>(y) ? (x) : (y)). Для каких переменных он может быть использован?

Ответ:

 (1) float x, y; 

 (2) int i, j; 

 (3) char a, b; 


Номер 3
Каким образом должен быть задан макрос MAX, чтобы приведенная программа корректно работала?

int main()
{ 
    char a, b;
	printf("Введите два символа (через пробел): ");
	scanf("%c %c", &a, &b);
	printf("Наибольшим числом является %c", MAX(a, b));
	return 0;
} 
		
		

Ответ:

 (1) #define MAX(x, y) ((x)>(y) ? (x) : (y)) 

 (2) #define MAX(x, y) { ((x)>(y) ? (x) : (y)) } 

 (3) #define MAX(char x, char y) ((x)>(y) ? (x) : (y)) 


Упражнение 6:
Номер 1
Приведенная программа выводит на экран сочетания имён и фамилий, которые хранятся в подключаемом файле arr.txt:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>

#ifndef ARR
	#define ARR
	#include "..\arr.txt"
#endif

int main (void)  {
	int i = 0 , j = 0, n;
	
	setlocale (LC_ALL, "rus");
	printf("Введите количество человек (от 1 до 3): ");
	scanf("%d", &n);
    
	if (n<1 || n>3) {
		printf("Ошибка ввода данных. Нажмите любую клавишу: ");
		_getch();
		exit(1);
	}

	#ifdef ARR
		for (i=0; i<n; i++)
			printf("%d. %s %s\n", i+1, names[i], surnames[i]);
	#endif

	return 0;
}
	
Содержание файла arr.txt:

char *names[] = {"Иван", "Пётр", "Илья"};
char *surnames[] = {"Иванов", "Пётров", "Ильин"};
	
Где должен храниться подключаемый файл?		
		

Ответ:

 (1) в одном и том же каталоге с исполняемым файлом 

 (2) на один уровень выше испольняемого файла 

 (3) на два уровня выше исполняемого файла 


Номер 2
Необходимо написать программу, которая выводит на экран сочетания имён и фамилий, которые хранятся в подключаемом файле arr.txt. Содержание файла arr.txt:

char *names[] = {"Иван", "Пётр", "Илья"};
char *surnames[] = {"Иванов", "Пётров", "Ильин"};

Файл arr.txt хранится с исполняемым файлом в одном каталоге. Какая программа выполняется поставленную задачу?

Ответ:

 (1) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include "arr.txt" #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  

 (2) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include "..\arr.txt" #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  

 (3) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include <arr.txt> #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  


Номер 3
Что произойдет при выполнении приведенной программы:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>

#ifndef ARR
	#define ARR
	#include <arr.txt>
#endif

int main (void)  {
	int i = 0 , j = 0, n;
	
	setlocale (LC_ALL, "rus");
	printf("Введите количество человек (от 1 до 3): ");
	scanf("%d", &n);
    
	if (n<1 || n>3) {
		printf("Ошибка ввода данных. Нажмите любую клавишу: ");
		_getch();
		exit(1);
	}

	#ifdef ARR
		for (i=0; i<n; i++)
			printf("%d. %s %s\n", i+1, names[i], surnames[i]);
	#endif

	return 0;
}

Содержание подключаемого файла arr.txt:

char *names[] = {"Иван", "Пётр", "Илья"};
char *surnames[] = {"Иванов", "Пётров", "Ильин"};
		
		

Ответ:

 (1) на экран будут выведены сочетания всех имён и фамилий, заданных в массивах 

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

 (3) программа не будет выполнена, так как содержит ошибку 


Упражнение 7:
Номер 1
Что обозначает подключение #include "..\..\some.h"?

Ответ:

 (1) то, что файл some.h находится на два уровня ниже, чем главный файл 

 (2) то, что файл some.h находится на два уровня выше, чем главный файл 

 (3) то, что для поиска файла some.h необходимо выполнить просмотр верхних уровней до тех пор, пока файл не будет найден 


Номер 2
Что обозначает подключение #include "..\some.h"?

Ответ:

 (1) то, что файл some.h находится на один уровень ниже, чем главный файл 

 (2) то, что файл some.h находится на один уровень выше, чем главный файл 

 (3) то, что для поиска файла some.h необходимо выполнить просмотр верхних уровней до тех пор, пока файл не будет найден 


Номер 3
Каким образом должен быть подключен файл some.h, находящийся на два уровня выше, чем главный файл?

Ответ:

 (1) #include "..\some.h" 

 (2) #include "..\..\some.h" 

 (3) #include "..\..\..\some.h" 


Упражнение 8:
Номер 1
Файл second.h, расположенный на диске D:, содержит следующие описания переменных и функций:

extern int x, y;
extern char ch;

void func22(void)
{
	y = 100;
}

void func23(void)
{
	x = y/10;
	ch = 'R';
}
			
В каком случае выполняется неверное подключение файла second.h в другом файле?

Ответ:

 (1) #include <stdio.h> #include <conio.h> #include "D:\second.h" int x = 99, y = 77; char ch; void func1(void); int main(void) { ch = 'Z'; func1(); printf("\n Press any key: "); _getch(); return 0; } void func1(void) { func22(); func23(); printf("\n\t x = %d; y = %d;\ ch = %c\n", x, y, ch); }  

 (2) #include <stdio.h> #include <conio.h> #include <D:\second.h> int x = 99, y = 77; char ch; void func1(void); int main(void) { ch = 'Z'; func1(); printf("\n Press any key: "); _getch(); return 0; } void func1(void) { func22(); func23(); printf("\n\t x = %d; y = %d;\ ch = %c\n", x, y, ch); }  

 (3) #include <stdio.h> #include <conio.h> #include D:\second.h int x = 99, y = 77; char ch; void func1(void); int main(void) { ch = 'Z'; func1(); printf("\n Press any key: "); _getch(); return 0; } void func1(void) { func22(); func23(); printf("\n\t x = %d; y = %d;\ ch = %c\n", x, y, ch); }  


Номер 2
Файл second.h, расположенный на диске D:, содержит следующие описания переменных и функций:

extern int x, y;
extern char ch;

void func22(void)
{
	y = 100;
}

void func23(void)
{
	x = y/10;
	ch = 'R';
}
			
В каком случае подключение файла second.h в другом файле выполняется верно?

Ответ:

 (1) #include <stdio.h> #include <conio.h> #include "D:\second.h" int x = 99, y = 77; char ch; void func1(void); int main(void) { ch = 'Z'; func1(); printf("\n Press any key: "); _getch(); return 0; } void func1(void) { func22(); func23(); printf("\n\t x = %d; y = %d;\ ch = %c\n", x, y, ch); }  

 (2) #include <stdio.h> #include <conio.h> #include <D:\second.h> int x = 99, y = 77; char ch; void func1(void); int main(void) { ch = 'Z'; func1(); printf("\n Press any key: "); _getch(); return 0; } void func1(void) { func22(); func23(); printf("\n\t x = %d; y = %d;\ ch = %c\n", x, y, ch); }  

 (3) #include <stdio.h> #include <conio.h> #include D:\second.h int x = 99, y = 77; char ch; void func1(void); int main(void) { ch = 'Z'; func1(); printf("\n Press any key: "); _getch(); return 0; } void func1(void) { func22(); func23(); printf("\n\t x = %d; y = %d;\ ch = %c\n", x, y, ch); }  


Номер 3
Файл second.h, расположенный на диске D:, содержит следующие описания переменных и функций:

extern int x, y;
extern char ch;

void func22(void)
{
	y = 100;
}

void func23(void)
{
	x = y/10;
	ch = 'R';
}
			
Каким образом файл second.h должен быть подключен для возможности использования описанных в нем переменных и функций в другом файле?

Ответ:

 (1) #include <stdio.h> #include <conio.h> #include "D:\second.h"  

 (2) #include <stdio.h> #include <conio.h> #include <D:\second.h>  

 (3) #include <stdio.h> #include <conio.h> #include D:\second.h  


Упражнение 9:
Номер 1
Для чего применяются директивы условной компиляции (#if, #ifdef, #ifndef)?

Ответ:

 (1) для исключения компиляции отдельных частей программы 

 (2) для разветвления процесса вычислений на два направления 

 (3) для того, чтобы временно закомментировать фрагменты кода 


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

Ответ:

 (1) if 

 (2) else 

 (3) #if 

 (4) #ifdef 

 (5) #define 


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

#if VERSION == 1
	#define	INCFILE	"vers1.h"
#elseif VERSION == 2
	#define	INCFILE	"vers1.h"
#else
	#define	INCFILE	"versN.h"
#endif
#include INCFILE
	
Какие из используемых в заданном фрагменте директив относятся к директивам условной компиляции?	
		

Ответ:

 (1) #if 

 (2) #define 

 (3) #elseif 

 (4) #else 

 (5) #endif 

 (6) #include 


Упражнение 10:
Номер 1
В каком случае директива #define определяет макрос?

Ответ:

 (1) #define VERSION 1 

 (2) #define VASYA "Василий Иванович" 

 (3) #define MAX (x, y) ((x)>(y) ? (x) : (y)) 

 (4) #if VERSION == 1 #define INCFILE "vers1.h" #elseif VERSION == 2 #define INCFILE "vers1.h" #else #define INCFILE "versN.h" #endif #include INCFILE  


Номер 2
В каком случае директива #define определяет символическую константу?

Ответ:

 (1) #define VERSION 1 

 (2) #define VASYA "Василий Иванович" 

 (3) #define MAX (x, y) ((x)>(y) ? (x) : (y)) 

 (4) #if VERSION == 1 #define INCFILE "vers1.h" #elseif VERSION == 2 #define INCFILE "vers1.h" #else #define INCFILE "versN.h" #endif #include INCFILE  


Номер 3
В каком случае директива #define определяет символы, управляющие условной компиляцией?

Ответ:

 (1) #define VERSION 1 

 (2) #define VASYA "Василий Иванович" 

 (3) #define MAX (x, y) ((x)>(y) ? (x) : (y)) 

 (4) #if VERSION == 1 #define INCFILE "vers1.h" #elseif VERSION == 2 #define INCFILE "vers1.h" #else #define INCFILE "versN.h" #endif #include INCFILE  


Упражнение 11:
Номер 1
Какое действие выполняется при использовании заданного набора директив?

#ifndef HEADER_INCLUDED
#include "arr.h"
#define HEADER_INCLUDED
#enif
		
		

Ответ:

 (1) выполняется подключение заголовочного файла arr.h, если определен символ HEADER_INCLUDED 

 (2) выполняется подключение заголовочного файла arr.h, если символ HEADER_INCLUDED не определен 

 (3) обязательное подключение файла arr.h 

 (4) принудительное отключение подключенного файла arr.h 


Номер 2
В каком случае будет подключен файл arr.h?

#ifndef ARR
#define ARR
#include "arr.txt"
#endif
		
		

Ответ:

 (1) в случае, если символ ARR не определен  

 (2) в случае, если определен символ ARR 

 (3) файл arr.h будет подключен в любом случае 

 (4) файл arr.h ни в каком случае подключен не будет 


Номер 3
Для чего используется приведенный фрагмент кода?

#ifndef HEADER_INCLUDED
#include "arr.h"
#define HEADER_INCLUDED
#enif
		
		

Ответ:

 (1) для подключения файла arr.h при каждой компиляции 

 (2) для отключения файла arr.h при каждой компиляции 

 (3) для обеспечения подключения файла arr.h только один раз 


Упражнение 12:
Номер 1
В каком случае на экран будут выведены сочетания имен и фамилий, заданных в файле arr.h?
Содержание файла arr.h:

char *names[] = {"Иван", "Пётр", "Илья"};
char *surnames[] = {"Иванов", "Пётров", "Ильин"};
			
		

Ответ:

 (1) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include "arr.txt" #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #undef ARR #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  

 (2) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include <arr.txt> #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  

 (3) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include "arr.txt" #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  


Номер 2
В каком случае сочетания имен и фамилий, заданных в файле arr.h, не будут выведены на экран?
Содержание файла arr.h:

char *names[] = {"Иван", "Пётр", "Илья"};
char *surnames[] = {"Иванов", "Пётров", "Ильин"};
			
		

Ответ:

 (1) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include "arr.txt" #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #undef ARR #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  

 (2) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include <arr.txt> #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  

 (3) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #ifndef ARR #define ARR #include "arr.txt" #endif int main (void) { int i = 0 , j = 0, n; setlocale (LC_ALL, "rus"); printf("Введите количество человек (от 1 до 3): "); scanf("%d", &n); if (n<1 || n>3) { printf("Ошибка ввода данных. Нажмите любую клавишу: "); _getch(); exit(1); } #ifdef ARR for (i=0; i<n; i++) printf("%d. %s %s\n", i+1, names[i], surnames[i]); #endif return 0; }  


Номер 3
Задана программа, в которой выполняется подключение файла arr.h:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>

#ifndef ARR
#define ARR
#include "arr.txt"
#endif

int main (void)  {
	int i = 0 , j = 0, n;
	
	setlocale (LC_ALL, "rus");
	printf("Введите количество человек (от 1 до 3): ");
	scanf("%d", &n);
    
	if (n<1 || n>3) {
		printf("Ошибка ввода данных. Нажмите любую клавишу: ");
		_getch();
		exit(1);
	}

	#undef ARR

	#ifdef ARR
		for (i=0; i<n; i++)
			printf("%d. %s %s\n", i+1, names[i], surnames[i]);
	#endif

	return 0;
}
		
Содержание файла arr.h:

char *names[] = {"Иван", "Пётр", "Илья"};
char *surnames[] = {"Иванов", "Пётров", "Ильин"};

Определите, будут ли выведены на экран сочетания имён и фамилий из файла arr.h при выполнении приведенной программы? Если не будут, то почему?		
		

Ответ:

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

 (2) имена и фамилии не будут выведены, так как в программе допущена ошибка - директива #undef используется в теле функции main() 

 (3) имена и фамилии будут выведены на экран 




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