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

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

Упражнение 1:
Номер 1
Нужно посчитать количество продукции, выпущенной каждым заводом и количество продукции каждого наименования, выпущенной всеми заводами. Вычисленные и исходные данные объединены в таблицу: filesКакой тип массива необходимо использовать для решения поставленной задачи?

Ответ:

 (1) одномерный 

 (2) двумерный 

 (3) многомерный 


Номер 2
Почему доступ к элементам многомерного массива происходит значительно медленнее, чем к элементам одномерного?

Ответ:

 (1) место хранения для всех элементов многомерного массива определяется во время компиляции, поэтому для выделения памяти в этом случае требуется больше времени 

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

 (3) многомерные массивы хранят больше данных 


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

Ответ:

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

 (2) ячейка памяти с наименьшим адресом относится к первому элементу одномерного массива, а с наибольшим – к последнему 

 (3) элементы массива нумеруются с нуля 

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


Упражнение 2:
Номер 1
Каким образом хранится в памяти массив a, начинающийся по адресу 1000 и объявленный как int a[7]?

Ответ:

 (1) files 

 (2) files 

 (3) files 


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

Ответ:

 (1) ячейка памяти с наименьшим адресом относится к первому элементу массива, а с наибольшим – к последнему 

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

 (3) элементы многомерного массива располагаются в памяти в порядке возрастания самого правого индекса 


Номер 3
Каким образом выделяется память под двумерный массив int a[3][2]?

Ответ:

 (1) files 

 (2) files 

 (3) files 


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

Ответ:

 (1) всего байт = размер типа в байтах * количество элементов 

 (2) всего байт = число строк * число столбцов * размер типа в байтах 

 (3) всего байт = размер1* размер2*...* размерN *размер типа в байтах 


Номер 2
По какой формуле вычисляется общий размер двумерного массива в байтах?

Ответ:

 (1) всего байт = размер типа в байтах * количество элементов 

 (2) всего байт = число строк * число столбцов * размер типа в байтах 

 (3) всего байт = размер1* размер2*...* размерN *размер типа в байтах 


Номер 3
По какой формуле вычисляется общий размер многомерного массива в байтах?

Ответ:

 (1) всего байт = размер типа в байтах * количество элементов 

 (2) всего байт = число строк * число столбцов * размер типа в байтах 

 (3) всего байт = размер1* размер2*...* размерN *размер типа в байтах 


Упражнение 4:
Номер 1
При инициализации какого массива возникнет ошибка?

Ответ:

 (1) int arr1[] = {1,2,3,4,5}; 

 (2) int arr2[][2] = {{1,2,3}, {4,5,6}}; 

 (3) int arr2[][] = {{1,2}, {3,4}, {5,6}}; 

 (4) int XYZ[][3][4] = { { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, { {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} } };  


Номер 2
При инициализации какого массива не возникнет ошибок?

Ответ:

 (1) int arr1[] = {1,2,3,4,5}; 

 (2) int arr2[][2] = {{1,2,3}, {4,5,6}}; 

 (3) int arr2[][] = {{1,2}, {3,4}, {5,6}}; 

 (4) int XYZ[][3][4] = { { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, { {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} } };  


Номер 3
Почему при инициализации массива int arr2[][2] = {{1,2,3}, {4,5,6}}; возникнет ошибка компиляции?

Ответ:

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

 (2) потому что указаны лишние фигурные скобки 

 (3) потому что подмассивы имеют неверную размерность 


Упражнение 5:
Номер 1
В каком случае сумма всех элементов массива будет подсчитана правильно?

Ответ:

 (1) #include <stdio.h> #define N 10 int main() { int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 1, sum = 0; i<=N; i++) sum += arr[i]; printf("Сумма элементов: %d\n", sum); return 0; }  

 (2) #include <stdio.h> #define N 10 int main() { int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 0, sum = 0; i<N; i++) sum += arr[i]; printf("Сумма элементов: %d\n", sum); return 0; }  

 (3) #include <stdio.h> #define N 10 int main() { int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 0, sum = 0; i<N+1; i++) sum += arr[i]; printf("Сумма элементов: %d\n", sum); return 0; }  


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

#include <stdio.h>
#define N 10

int main()
{	
	int i, sum;

	int arr[N] = {3, 4, 5, 4, 4};
	for (i = 1, sum = 0; i<N; i++) sum += arr[i];
	printf("Сумма элементов: %d\n", sum);

	return 0;		
}

		

Ответ:

 (1) 16 

 (2) 17 

 (3) 20 


Номер 3
Какая программа вычисляет сумму только четных элементов массива?

Ответ:

 (1) #include <stdio.h> #define N 10 int main() { int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 0, sum = 0; i<N; i++) sum += arr[i]; printf("Сумма элементов: %d\n", sum); return 0; }  

 (2) #include <stdio.h> #define N 10 int main() { int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 0, sum = 0; i<N; i++) if (arr[i]%2) sum += arr[i]; printf("Сумма элементов: %d\n", sum); return 0; }  

 (3) #include <stdio.h> #define N 10 int main() { int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 0, sum = 0; i<N; i++) if (!(arr[i]%2)) sum += arr[i]; printf("Сумма элементов: %d\n", sum); return 0; }  


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

#include <stdio.h>
#define N 10
#define M 5

int main()
{	
	int i;

	int arr1[N] = {3, 4, 5, 4};
	int arr2[M] = {1, 6, 3, 7, 9};
	
	i = sizeof(arr1)/sizeof(arr1[0]) + sizeof(arr2)/sizeof(arr2[0]);
	printf("i = %d\n", i);

	return 0;		
}
			
		

Ответ:

 (1)

 (2)

 (3)

 (4) 15 


Номер 2
Какая программа позволяет определить размерность массива arr (для определения размерности массива используется переменная size)?

Ответ:

 (1) #include <stdio.h> #define N 10 int main() { int i, size; int arr[N] = {3, 4, 5, 4}; for (i=0, size=0; i<N; i++) { if (arr1[i]!=0) size++; } return 0; }  

 (2) #include <stdio.h> #define N 10 int main() { int i, size; int arr[N] = {3, 4, 5, 4}; size = sizeof(arr); return 0; }  

 (3) #include <stdio.h> #define N 10 int main() { int i, size; int arr[N] = {3, 4, 5, 4}; size = sizeof(arr)/sizeof(arr[0]); printf("size = %d\n", size); return 0; }  


Номер 3
Какая программа позволяет определить общий размер массива arr в байтах (для определения размерности массива используется переменная size)?

Ответ:

 (1) #include <stdio.h> #define N 10 int main() { int i, size; int arr[N] = {3, 4, 5, 4}; for (i=0, size=0; i<N; i++) { if (arr1[i]!=0) size++; } return 0; }  

 (2) #include <stdio.h> #define N 10 int main() { int i, size; int arr[N] = {3, 4, 5, 4}; size = sizeof(arr); return 0; }  

 (3) #include <stdio.h> #define N 10 int main() { int i, size; int arr[N] = {3, 4, 5, 4}; size = sizeof(arr)/sizeof(arr[0]); printf("size = %d\n", size); return 0; }  


Упражнение 7:
Номер 1
Какая программа реализует сортировку массива целых чисел по возрастанию методом "пузырька" (методом прямого обмена)?

Ответ:

 (1) #include <stdio.h> #define N 5 int main() { int i, j, k, buf; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N; i++) for (j=0; j<-1; j++) { if (arr[j] < arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (2) #include <stdio.h> #define N 5 int main() { int i, j, k, buf; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N; i++) for (j=0; j<N-1; j++) { if (arr[j] > arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (3) #include <stdio.h> #define N 5 int main() { int i, j, k, buf, min; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N-1; i++) { min = i; for (j=i+1; j<N; j++) { if (arr[j]<arr[min]) min = j; buf = arr[i]; arr[i] = arr[min]; arr[min] = buf; } } for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (4) #include <stdio.h> #define N 5 int main() { int i, j, k, buf, min; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N-1; i++) { min = i; for (j=i+1; j<N; j++) { if (arr[j]>arr[min]) min = j; buf = arr[i]; arr[i] = arr[min]; arr[min] = buf; } } for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  


Номер 2
Какая программа реализует сортировку массива целых чисел по убыванию методом "пузырька" (методом прямого обмена)?

Ответ:

 (1) #include <stdio.h> #define N 5 int main() { int i, j, k, buf; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N; i++) for (j=0; j<N-1; j++) { if (arr[j] < arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (2) #include <stdio.h> #define N 5 int main() { int i, j, k, buf; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N; i++) for (j=0; j<N-1; j++) { if (arr[j] > arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (3) #include <stdio.h> #define N 5 int main() { int i, j, k, buf, min; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N-1; i++) { min = i; for (j=i+1; j<N; j++) { if (arr[j]<arr[min]) min = j; buf = arr[i]; arr[i] = arr[min]; arr[min] = buf; } } for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (4) #include <stdio.h> #define N 5 int main() { int i, j, k, buf, min; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N-1; i++) { min = i; for (j=i+1; j<N; j++) { if (arr[j]>arr[min]) min = j; buf = arr[i]; arr[i] = arr[min]; arr[min] = buf; } } for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  


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

Ответ:

 (1) #include <stdio.h> #define N 5 int main() { int i, j, k, buf; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N; i++) for (j=0; j<N-1; j++) { if (arr[j] < arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (2) #include <stdio.h> #define N 5 int main() { int i, j, k, buf; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N; i++) for (j=0; j<N-1; j++) { if (arr[j] > arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  

 (3) #include <stdio.h> #define N 5 int main() { int i, j, k, buf, min; int arr[N] = {3, 2, 4, 5, 1}; for (i=0; i<N-1; i++) { min = i; for (j=i+1; j<N; j++) { if (arr[j]>arr[min]) min = j; buf = arr[i]; arr[i] = arr[min]; arr[min] = buf; } } for (k=0; k<N; k++) printf("%d ", arr[k]); return 0; }  


Упражнение 8:
Номер 1
Что делает приведенная программа?

#include <stdio.h>
#define N 5

int main()
{	
	int m, i;
	int arr[N] = {3, 2, 4, 5, 1};
	
	m = 1;
	for (i=1; i<N; i++)
		if (arr[i]<arr[m]) m = i;

	printf("a[m] = %d", arr[m]);

	return 0;		
}
		
		

Ответ:

 (1) выполняет поиск максимального элемента в массиве 

 (2) выполняет поиск минимального элемента в массиве 

 (3) выполняет сортировку элементов массива по возрастанию 

 (4) выполняет сортировку элементов массива по убыванию 


Номер 2
Что делает приведенная программа?

#include <stdio.h>
#define N 5

int main()
{	
	int m, i;
	int arr[N] = {3, 2, 4, 5, 1};
	
	m = 1;
	for (i=1; i<N; i++)
		if (arr[i]>arr[m]) m = i;

	printf("a[m] = %d", arr[m]);

	return 0;		
}
		
		

Ответ:

 (1) выполняет поиск максимального элемента в массиве 

 (2) выполняет поиск минимального элемента в массиве 

 (3) выполняет сортировку элементов массива по возрастанию 

 (4) выполняет сортировку элементов массива по убыванию 


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

Ответ:

 (1) #include <stdio.h> #define N 5 int main() { int m, i; int arr[N] = {3, 2, 4, 5, 1}; m = 1; for (i=1; i<N; i++) if (arr[i]<arr[m]) m = i; printf("a[m] = %d", arr[m]); return 0; }  

 (2) #include <stdio.h> #define N 5 int main() { int m, i; int arr[N] = {3, 2, 4, 5, 1}; m = 1; for (i=1; i<N; i++) if (arr[i]>arr[m]) m = i; printf("a[m] = %d", arr[m]); return 0; }  

 (3) #include <stdio.h> #define N 5 int main() { int m, i; int arr[N] = {3, 2, 4, 5, 1}; m = 1; for (i=1; i<N-1; i++) if (arr[i]<arr[m]) m = i; printf("a[m] = %d", arr[m]); return 0; }  


Упражнение 9:
Номер 1
В результате выполнения какой программы на экран будут выведены числа от 1 до 10 и для каждого числа его квадрат?

Ответ:

 (1) #include <stdio.h> #define N 11 int main() { int i; int arr[N][2]; for (i=0; i<N; i++) { arr[i][0] = i; arr[i][1] = i*i; } for (i=0; i<N; i++) printf("%d,%d\n", arr[i][0], arr[i][1]); return 0; }  

 (2) #include <stdio.h> #define N 11 int main() { int i; int arr[N][2]; for (i=1; i<N; i++) { arr[i][1] = i; arr[i][2] = i*i; } for (i=0; i<N; i++) printf("%d,%d\n", arr[i][1], arr[i][2]); return 0; }  

 (3) #include <stdio.h> #define N 10 int main() { int i; int arr[N][2]; for (i=0; i<N-1; i++) { arr[i+1][0] = i+1; arr[i+1][1] = (i+1)*(i+1); } for (i=0; i<N-1; i++) printf("%d,%d\n", arr[i+1][0], arr[i+1][1]); return 0; }  

 (4) #include <stdio.h> #define N 11 int main() { int i; int arr[N][2]; for (i=1; i<N; i++) { arr[i][0] = i; arr[i][1] = i*i; } for (i=1; i<N; i++) printf("%d,%d\n", arr[i][0], arr[i][1]); return 0; }  


Номер 2
При выполнении какой программы возникнет ошибка, связанная с выходом за границы массива?

Ответ:

 (1) #include <stdio.h> #define N 11 int main() { int i; int arr[N][2]; for (i=1; i<N; i++) { arr[i][1] = i; arr[i][2] = i*i; } for (i=0; i<N; i++) printf("%d,%d\n", arr[i][1], arr[i][2]); return 0; }  

 (2) #include <stdio.h> #define N 11 int main() { int i; int arr[N][2]; for (i=0; i<N; i++) { arr[i][0] = i; arr[i][1] = i*i; } for (i=0; i<N; i++) printf("%d,%d\n", arr[i][0], arr[i][1]); return 0; }  

 (3) #include <stdio.h> #define N 11 int main() { int i; int arr[N][2]; for (i=1; i<N; i++) { arr[i][0] = i; arr[i][1] = i*i; } for (i=1; i<N; i++) printf("%d,%d\n", arr[i][0], arr[i][1]); return 0; }  


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

#include <stdio.h>
#define N 11

int main()
{		
	int i;
	int arr[N][2];

	for (i=1; i<N; i++)
	{
		arr[i][1] = i;
		arr[i][2] = i*i;
	}

	for (i=1; i<N; i++)
		printf("%d,%d\n", arr[i][1], arr[i][2]);

	return 0;		
}
		
		

Ответ:

 (1) программа выводит на экран числа от 1 до 10 и их квадраты 

 (2) программа выводит на экран квадраты чисел от 1 до 9 

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


Упражнение 10:
Номер 1
Какая программа вычисляет сумму четных элементов двумерного массива?

Ответ:

 (1) #include <stdio.h> #define N 5 int main() { int i, j, sum=0; int arr[N][2] = {0,1,2,3,4,5,6,7,8,9}; for (i=0; i<N; i++) { for (j=0; j<N; j++) if (!(arr[i][j]%2)) sum = sum+arr[i][j]; } printf("sum = %d\n", sum); }  

 (2) #include <stdio.h> #define N 5 int main() { int i, j, sum=0; int arr[N][2] = {0,1,2,3,4,5,6,7,8,9}; for (i=0; i<N; i++) sum += arr[i][0]; printf("sum = %d\n", sum); return 0; }  

 (3) #include <stdio.h> #define N 5 #define M 2 int main() { int i, j, sum=0; int arr[N][2] = {0,1,2,3,4,5,6,7,8,9}; for (i=0; i<N; i++) sum += arr[i][1]; printf("sum = %d\n", sum); return 0; }  


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

#include <stdio.h>
#define N 5
#define M 2

int main()
{		
	int i, j, sum=0;
	int arr[N][2] = {0,1,2,3,4,5,6,7,8,9};

	for (i=0; i<N; i++)
	{
		for (j=0; j<M; j++)
			if (!(arr[i][j]%2)) sum+=arr[i][j];
	}
	
	printf("sum = %d\n", sum);

	return 0;
}
		
		

Ответ:

 (1) 20 

 (2) 25 

 (3) 45 


Номер 3
Что делает приведенная программы?

#include <stdio.h>
#define N 5
#define M 2

int main()
{		
	int i, j, sum=0;
	int arr[N][2] = {0,1,2,3,4,5,6,7,8,9};

	for (i=0; i<N; i++)
	{
		for (j=0; j<M; j++)
			if (!(arr[i][j]%2)) sum+=arr[i][j];
	}
	
	printf("sum = %d\n", sum);

	return 0;
}
		
		

Ответ:

 (1) вычисляет сумму всех элементов массива 

 (2) вычисляет сумму четных элементов массива 

 (3) вычисляет сумму нечетных элементов массива 


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

	int arr[5][2] = {0,1,2,3,4,5,6,7,8,9};

	size = sizeof(arr)/sizeof(arr[0]);
	
		

Ответ:

 (1)

 (2) 10 

 (3) 40 


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

	int i, j, size;
	int arr[5][2] = {0,1,2,3,4,5,6,7,8,9};

	size = sizeof(arr)/sizeof(arr[0][0]);
	
		

Ответ:

 (1)

 (2) 10 

 (3) 40 


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

	int size1, size2, size3;
	int arr[5][2] = {0,1,2,3,4,5,6,7,8,9};

	size1 = sizeof(arr)/sizeof(arr[0][0]);
	size2 = sizeof(arr)/sizeof(arr[0]);
	size3 = sizeof(arr);	
	
		

Ответ:

 (1) size3 > size2 > size1 

 (2) size2 > size3 

 (3) size1 < size3 


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

	int size1, size2, size3;
	int arr[5][2] = {0,1,2,3,4,5,6,7,8,9};

	size1 = sizeof(arr)/sizeof(arr[0][0]);
	size2 = sizeof(arr)/sizeof(arr[0]);
	size3 = sizeof(arr);	
	
		

Ответ:

 (1) size1 

 (2) size2 

 (3) size3 


Номер 2
Какой смысл приобретает переменная size1 после выполнения приведенного фрагмента кода?

	int size1, size2, size3;
	int arr[5][2] = {0,1,2,3,4,5,6,7,8,9};

	size1 = sizeof(arr)/sizeof(arr[0][0]);
	size2 = sizeof(arr)/sizeof(arr[0]);
	size3 = sizeof(arr);	
	
		

Ответ:

 (1) определяет общее количество элементов в двумерном массиве 

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

 (3) определяет общий размер массива в байтах 


Номер 3
Какой смысл приобретает переменная size2 после выполнения приведенного фрагмента кода?

	int size1, size2, size3;
	int arr[5][2] = {0,1,2,3,4,5,6,7,8,9};

	size1 = sizeof(arr)/sizeof(arr[0][0]);
	size2 = sizeof(arr)/sizeof(arr[0]);
	size3 = sizeof(arr);	
	
		

Ответ:

 (1) определяет общее количество элементов в двумерном массиве 

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

 (3) определяет общий размер массива в байтах 




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