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

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

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

Ответ:

 (1) files 

 (2) files 

 (3) files 


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

Ответ:

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

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

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


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

Ответ:

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

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

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

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


Упражнение 2:
Номер 1
При выводе какой строки возникнут проблемы и почему?

	char str1[10] = "Course";
	char str2[] = "Lection";
	char str3[7] = "Example";
		
		

Ответ:

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

 (2) str2, потому что при инициализации не указана размерность массива 

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


Номер 2
Строка инициализирована следующим образом: char str1[10] = "Course". Какое утверждение является верным?

Ответ:

 (1) под строку выделяется 6 байт 

 (2) под строку выделяется 7 байт 

 (3) под строку выделяется 10 байт 


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

	int n = 0;
	char str2[10] = "Lection\0";
	n = strlen(str2);
			
		

Ответ:

 (1)

 (2)

 (3)


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

Ответ:

 (1) int n = 0; char str2[10] = "Lection\0"; n = strlen(str2);  

 (2) int n = 0; char str2[10] = "Lection"; n = strlen(str2);  

 (3) int n=0, num=10; char str1[10]="", str2[10]="Lection"; _itoa(num, str1, 10); strcat(str2, str1); n = strlen(str2);  


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

	int n=0, num=10;
	char str1[10]="", str2[10]="Lection";

	_itoa(num, str1, 10);
	strcat(str2, str1);
	n = strlen(str2);
			
		

Ответ:

 (1)

 (2)

 (3)


Упражнение 4:
Номер 1
Заданы две строки:

	char str1[10] = "Lection";
	char str2[10] = "Lection\0";
		
Какое утверждение является верным?
		

Ответ:

 (1) strcmp(str1, str2) < 0 

 (2) strcmp(str1, str2) = 0 

 (3) strcmp(str1, str2) > 0 


Номер 2
Заданы две строки:

	char str1[10] = "Lection";
	char str2[10] = "lection";
		
Какое утверждение является верным?
		

Ответ:

 (1) strcmp(str1, str2) < 0 

 (2) strcmp(str1, str2) = 0 

 (3) strcmp(str1, str2) > 0 


Номер 3
Заданы две строки:

	char str1[10] = "Lection";
	char str2[10] = "lection";
		
Какое утверждение является верным и почему?
		

Ответ:

 (1) strcmp(str1, str2) < 0, так как код символа L меньше кода символа l 

 (2) strcmp(str1, str2) = 0, так как длины строк одинаковы 

 (3) strcmp(str1, str2) > 0, так как код символа L больше кода символа l 


Упражнение 5:
Номер 1
Ниже приведено несколько вариантов программы для преобразования строчных букв в прописные. Преобразование выполняется на основе таблицы кодов ASCII и основано на том, что для всех букв латинского алфавита код прописной буквы больше кода строчной буквы на 32. В результате выполнения какой программы заданная пользователем строка из строчных букв будет выведена на экран прописными буквами?

Ответ:

 (1) #include <stdio.h> #include <string.h> #define N 10 int main() { char ch, strLow[N]; int i = 0; printf("Enter string in low register (%d symbols): \n", N); scanf("%s", strLow); ch= strLow[0]; while (ch!='\0') { putchar(strLow[i] - 32); i++; ch= strLow[i]; } printf("\n"); return 0; }  

 (2) #include <stdio.h> #include <string.h> #define N 10 int main() { char strLow[N]; int i; printf("Enter string in low register (%d symbols): \n", N); scanf("%s", strLow); for (i=0; i<strlen(strLow); i++) putchar(strLow[i] + 32); printf("\n"); return 0; }  

 (3) #include <stdio.h> #include <string.h> #define N 10 int main() { char strLow[N]; int i; printf("Enter string in low register (%d symbols): \n", N); scanf("%s", strLow); for (i=0; i<strlen(strLow); i++) putchar(strLow[i] - 32); printf("\n"); return 0; }  


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

#include <stdio.h>
#include <string.h>
#define N 10

int main()
{		
	char ch, strLow[N] = "test";
	int i = 0;

	ch= strLow[0];
	while (ch!='\0')
	{
		putchar(strLow[i] - 32);
		i++;
		ch= strLow[i];
	}
	printf("\n");

	return 0;
}
		
		

Ответ:

 (1) все символы строки strLow будут преобразованы в верхний регистр 

 (2) на экран будет выведена строка strLow в верхнем регистре 

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


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

#include <stdio.h>
#include <string.h>
#define N 10

int main()
{		
	char strLow[N];
	int i;

	printf("Enter string in low register (%d symbols): \n", N);
	scanf("%s", strLow);

	for (i=0; i<strlen(strLow); i++)
		putchar(strLow[i] - 32);
	printf("\n");

	return 0;
}
		
		

Ответ:

 (1) все символы строки strLow будут преобразованы в верхний регистр 

 (2) на экран будет выведена строка strLow в верхнем регистре 

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


Упражнение 6:
Номер 1
Какая программа реализует такое же преобразование, как функция strcpy(str2, str1);?

Ответ:

 (1) #include <stdio.h> #include <string.h> #define N 10 int main() { int i = 0; char ch; char str1[N] = "test"; char str2[N]; ch= str1[0]; while (ch!='\0') { str2[i] = str1[i]; i++; ch= str1[i]; } printf("%s",str2); return 0; }  

 (2) #include <stdio.h> #include <string.h> #define N 10 int main() { int i = 0; char ch; char str1[N] = "test"; char str2[N] = ""; ch= str1[0]; while (ch!='\0') { str2[i] = str1[i]; i++; ch= str1[i]; } return 0; }  

 (3) #include <stdio.h> #include <string.h> #define N 10 int main() { int i = 0; char ch; char str1[N] = "test"; char str2[N] = ""; ch= str1[0]; while (ch!='\0') { i++; str2[i] = str1[i]; ch= str1[i]; } return 0; }  


Номер 2
Аналогию какой функции представляет собой приведенная программа?

#include <stdio.h>
#include <string.h>
#define N 10

int main()
{	
	int i = 0;
	char ch;
	char str1[N] = "test";
	char str2[N] = "";

	ch= str1[0];
	while (ch!='\0')
	{
		str2[i] = str1[i];
		i++;
		ch= str1[i];
	}
	
	return 0;
}
			
		

Ответ:

 (1) strcpy(str2, str1); 

 (2) strcpy(str1, str2); 

 (3) strlen(str1); 

 (4) strlen(str2); 


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

#include <stdio.h>
#include <string.h>
#define N 10

int main()
{	
	int i = 0;
	char ch;
	char str1[N] = "test";
	char str2[N];

	ch= str1[0];
	while (ch!='\0')
	{
		str2[i] = str1[i];
		i++;
		ch= str1[i];
	}
	
	return 0;
}
		
		

Ответ:

 (1) длина строки str1 больше длины строки str2 

 (2) строки str1 и str2 одинаковы 

 (3) длина строки str2 больше длины строки str1 


Упражнение 7:
Номер 1
Приведенный фрагмент кода должен запрашивать пароль не более трех раз:

	char s[5], psw[] = "password";
	int i, k= 0;

	for (i=0; !k && i<3; i++) {
		printf("Введите пароль: \n"),
		gets(s);
		if (!(strcmp(s, psw))) k = 1;
	}
	
	if (k) printf("Добро пожаловать! TRUE");
	else printf("Ошибка: Неверный пароль! FALSE");
	
		Проверьте правильность этого кода для выполнения поставленной задачи и определите, сколько раз будет выполнен цикл for, если пользователь сразу введет верный пароль password?
		

Ответ:

 (1)

 (2)

 (3)


Номер 2
Приведенный фрагмент кода должен запрашивать пароль не более трех раз:

	char s[5], psw[] = "password";
	int i, k= 0;

	for (i=0; !k && i<3; i++) {
		printf("Введите пароль: \n"),
		gets(s);
		if (strcmp(s, psw)) k = 1;
	}
	
	if (k) printf("Добро пожаловать! TRUE");
	else printf("Ошибка: Неверный пароль! FALSE");
	
		Проверьте правильность этого кода для выполнения поставленной задачи и определите, сколько раз будет выполнен цикл for, если пользователь сразу введет верный пароль password?
		

Ответ:

 (1)

 (2)

 (3)


Номер 3
Приведенный фрагмент кода должен запрашивать пароль не более трех раз:

	char s[5], psw[] = "password";
	int i, k= 0;

	for (i=0; !k && i<3; i++) {
		printf("Введите пароль: \n"),
		gets(s);
		if (strcmp(s, psw)) k = 1;
	}
	
	if (k) printf("Добро пожаловать! TRUE");
	else printf("Ошибка: Неверный пароль! FALSE");
	
		Проверьте правильность этого кода для выполнения поставленной задачи и определите, сколько раз будет выполнен цикл for, если пользователь не знает верного пароля?
		

Ответ:

 (1)

 (2)

 (3)


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

	char t1 = 196;
	int i = 0;
	for (i=0; i<10; i++)
		printf("%c", t1);
		
		

Ответ:

 (1) на экран 10 раз будет выведено число 196 

 (2) на экран 10 раз будет выведен символ, код которого 196 

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


Номер 2
В каком случае на экран в цикле будет выведен символ, код которого равен 196?

Ответ:

 (1) char t1 = 196; int i = 0; for (i=0; i<10; i++) printf("%c", t1);  

 (2) char t1 = '196'; int i = 0; for (i=0; i<10; i++) printf("%c", t1);  

 (3) char t1 = "196"; int i = 0; for (i=0; i<10; i++) printf("%c", t1);  


Номер 3
Используя таблицу кодировки символов ASCII, определите, что будет выведено на экран в результате выполнения приведенного фрагмента кода?

	int i = 0;
	char t1 = 218;
	char tr = 191;
	char b1 = 192;
	char br = 217;
	char g = 196;
	char v = 179;

	printf("%c", t1);
	for (i=0; i<32; i++) printf("%c",g);
	printf("%c\n", tr);
	printf("%c", v);
	for (i=0; i<32; i++) printf("%c",' ');
	printf("%c\n", v);
	printf("%c", b1);
	for (i=0; i<32; i++) printf("%c",g);
	printf("%c\n", br);
	
		

Ответ:

 (1) хаотичный набор символов 

 (2) прямоугольная рамка 

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


Упражнение 9:
Номер 1
Аналогом какой стандартной функции является приведенный фрагмент кода?

	int i = 0;
	char str[10] = "Test";

	while (str[i]!='\0')
		i++;
			
		

Ответ:

 (1) strcpy 

 (2) strcat 

 (3) strlen 


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

	int i = 0;
	char str1[10] = "Test";
	char str2[10] = "";

	while (str1[i]!='\0') {
		str2[i] = str1[i];
		i++;
	}
			
		

Ответ:

 (1) strcpy(str1,str2); 

 (2) strcpy(str2,str1); 

 (3) strstr(str1,str2); 

 (4) strstr(str2,str1); 

 (5) strcmp(str1,str2); 

 (6) strcmp(str2,str1); 


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

	int i = 0, k = 0;
	char str1[10] = "Test";
	char str2[10] = "Test1";

	if (strlen(str1)>(strlen(str2))) k = 1;
	if (strlen(str1)<(strlen(str2))) k = -1;

	if (strlen(str1)==(strlen(str2)))
		while (str1[i]!='\0') {
			if (str2[i]!=str1[i]) {
				k = -1;
				break;
			}
			i++;
		}
			
		

Ответ:

 (1) strcpy(str1,str2); 

 (2) strstr(str1,str2); 

 (3) strcmp(str1,str2); 


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

Ответ:

 (1) #include <stdio.h> #define N 7 int main() { int i, j, k, buf; char arr[N] = "Lection"; 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 7 int main() { int i, j, k, buf, min; char arr[N] = "Lection"; 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("%c ", arr[k]); return 0; }  

 (3) #include <stdio.h> #define N 7 int main() { int i, j, k, buf; char arr[N] = "Lection"; 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
Используя таблицу кодов ASCII, определите, что будет выведено на экран в результате выполнения приведенной программы?

#include <stdio.h>
#define N 7

int main()
{	
	int i, j, k, buf;
	char arr[N] = "Lection";

	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("%c ", arr[k]);

	return 0;		
}

		

Ответ:

 (1) L c e i n o t 

 (2) c e i n o t L 

 (3) t o n i e L 

 (4) L t o n i e 


Номер 3
Используя таблицу кодов ASCII, определите, что будет выведено на экран в результате выполнения приведенной программы?

#include <stdio.h>
#define N 7

int main()
{	
	int i, j, k, buf;
	char arr[N] = "Lection";

	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("%c ", arr[k]);

	return 0;		
}

		

Ответ:

 (1) L c e i n o t 

 (2) c e i n o t L 

 (3) t o n i e L 

 (4) L t o n i e 


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

Ответ:

 (1) #include <stdio.h> #include <conio.h> #define N 10 int main() { int i=0; char arr[N] = ""; printf("Last Name: "); while (i<N) { arr[i] = _getche(); if (arr[i]==13) break; i++; }; printf("\nYou have entered Last Name: %s", arr); return 0; }  

 (2) #include <stdio.h> #include <conio.h> #define N 10 int main() { int i=0; char arr[N] = ""; printf("Last Name: "); while ((i<N) && (arr[i]!=13)) { arr[i] = _getche(); i++; }; printf("\nYou have entered Last Name: %s", arr); return 0; }  

 (3) #include <stdio.h> #include <conio.h> #define N 10 int main() { int i=0; char arr[N] = ""; printf("Last Name: "); while (i<N) { arr[i] = _getche(); if (arr[i]==13) { arr[i] = '\0'; break; } i++; }; printf("\nYou have entered Last Name: %s", arr); return 0; }  


Номер 2
В каком случае окончанием ввода строки будет служить нажатие клавиши Enter?

Ответ:

 (1) #include <stdio.h> #include <conio.h> #define N 10 int main() { int i=0; char arr[N] = ""; printf("Last Name: "); while (i<N) { arr[i] = _getche(); if (arr[i]==13) { arr[i] = '\0'; break; } i++; }; printf("\nYou have entered Last Name: %s", arr); return 0; }  

 (2) #include <stdio.h> #include <conio.h> #define N 10 int main() { int i=0; char arr[N] = ""; printf("Last Name: "); while ((i<N) && (arr[i]!=13)) { arr[i] = _getche(); i++; }; printf("\nYou have entered Last Name: %s", arr); return 0; }  

 (3) #include <stdio.h> #include <conio.h> #define N 10 int main() { int i=0; char arr[N] = ""; printf("Last Name: "); do { arr[i] = _getche(); i++; } while ((i<N) && (arr[i]!="Enter")); printf("\nYou have entered Last Name: %s", arr); return 0; }  


Номер 3
Необходимо написать программу, в которой формирование строки будет выполняться через посимвольный ввод до тех пор, пока пользователь не нажмет клавишу Enter. После завершния ввода пользователя введенная строка должна быть выведена на экран. Определите, удовлетворяет ли приведенная программа поставленной задаче? Если не удовлетворяет, объясните, почему?

#include <stdio.h>
#include <conio.h>
#define N 10

int main()
{	
	int i=0;
	char arr[N] = "";

	printf("Last Name: ");
	while (i<N) {
		arr[i] = _getche();
		if (arr[i]==13) break;
		i++;
	};

	printf("\nYou have entered Last Name: %s", arr);

	return 0;		
}
		
		

Ответ:

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

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

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

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


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

#include <stdio.h>
#include <conio.h>

int main()
{	
	int n=0, i=0;
	char ch, str[30]="";

	printf("Введите строку: ");
	scanf("%s", str);
	printf("Введите символ: ");
	ch = _getche();

	while(str[i]!='\0')
	{
		if(str[i]==ch) n++;
		i++;
	}

	return 0;		
}
		
		

Ответ:

 (1) определяет количество символов в строке 

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

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


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

#include <stdio.h>
#include <conio.h>

int main()
{	
	int n=0, i=0, j=0;
	char ch, str[30]="";

	printf("Введите строку: ");
	scanf("%s", str);
	printf("Введите символ: ");
	ch = _getche();

	for(i=0; i<strlen(str); i++)
	{
		for (j=0; j<strlen(str); j++) {
			if(str[j]==str[i]) n++;
		}
		printf("\n%c - %d", str[i], n);
		n = 0;
	}

	printf("\n");

	return 0;		
}
		
		

Ответ:

 (1) определяет количество символов в строке 

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

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


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

Ответ:

 (1) #include <stdio.h> #include <conio.h> int main() { int n=0, i=0, j=0; char ch, str[30]=""; printf("Введите строку: "); scanf("%s", str); printf("Введите символ: "); ch = _getche(); for(i=0; i<strlen(str); i++) { for (j=0; j<strlen(str); j++) { if(str[j]==str[i]) n++; } printf("\n%c - %d", str[i], n); n = 0; i++; } printf("\n"); return 0; }  

 (2) #include <stdio.h> #include <conio.h> int main() { int n=0, i=0, j=0; char ch, str[30]=""; printf("Введите строку: "); scanf("%s", str); printf("Введите символ: "); ch = _getche(); for(i=0; i<strlen(str); i++) { for (j=0; j<strlen(str); j++) { if(str[j]==str[i]) n++; } printf("\n%c - %d", str[i], n); n = 0; } printf("\n"); return 0; }  

 (3) #include <stdio.h> #include <conio.h> int main() { int n=0, i=0; char ch, str[30]=""; printf("Введите строку: "); scanf("%s", str); printf("Введите символ: "); ch = _getche(); while(str[i]!='\0') { if(str[i]==ch) n++; i++; } return 0; }  




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