Главная / Программирование /
Программирование на языке C в Microsoft Visual Studio 2010 / Тест 16
Программирование на языке C в Microsoft Visual Studio 2010 - тест 16
Упражнение 1:
Номер 1
Какой разряд байта является младшим?
Ответ:
 (1) 0-й 
 (2) 1-й 
 (3) 2-й 
 (4) 3-й 
 (5) 4-й 
 (6) 5-й 
 (7) 6-й 
 (8) 7-ой 
 (9) невозможно определить, так как это зависит от компилятора 
Номер 2
Какой разряд байта является старшим?
Ответ:
 (1) 0-й 
 (2) 1-й 
 (3) 2-й 
 (4) 3-й 
 (5) 4-й 
 (6) 5-й 
 (7) 6-й 
 (8) 7-ой 
 (9) невозможно определить, так как это зависит от компилятора 
Номер 3
Каким образом нумерются разряды байта?
Ответ:
 
(1)  
 
(2)  
 
(3)  
 
(4)  
Упражнение 2:
Номер 1
Какое утверждение является верным?
Ответ:
 (1) 1 байт равен 1 биту 
 (2) 1 бит содержит 8 байт 
 (3) 1 байт содержит 8 бит 
Номер 2
Какие утверждения являются верными?
Ответ:
 (1) бит может принимать любые значения 
 (2) 1 бит содержит 8 байт 
 (3) бит может принимать только значения 0 и 1 
 (4) 1 байт содержит 8 бит 
Номер 3
Какие утверждения являются неверными?
Ответ:
 (1) бит может принимать любые значения 
 (2) 1 бит содержит 8 байт 
 (3) бит может принимать только значения 0 и 1 
 (4) 1 байт содержит 8 бит 
Упражнение 3:
Номер 1
Сколько возможных значений может принимать байт?
Ответ:
 (1) 2 
 (2) 255 
 (3) 256 
Номер 2
Сколько возможных значений может принимать бит?
Ответ:
 (1) 2 
 (2) 255 
 (3) 256 
Номер 3
Какие значения может принимать байт?
Ответ:
 (1) 0 и 1 
 (2) от 0 до 255 
 (3) любые целочисленные значения 
Упражнение 4:
Номер 1
Какое из перечисленных шестнадцатиричных чисел является наибольшим?
Ответ:
 (1) CA1 
 (2) A3F 
 (3) D6F 
Номер 2
Какое из перечисленных шестнадцатиричных чисел является наименьшим?
Ответ:
 (1) CA1 
 (2) A3F 
 (3) D6F 
Номер 3
Чему будет равно шестнадцатиричное число D6F в десятичной системе счисления?
Ответ:
 (1) 3424 
 (2) 3439 
 (3) 54799 
Упражнение 5:
Номер 1
Что такое битовое поле?
Ответ:
 (1) любое поле, после имени которого через двоеточие указана длина поля в битах 
 (2) поле, над которым выполняются побитовые операции 
 (3) особый вид полей структуры 
Номер 2
Каково преимущество использования битовых полей?
Ответ:
 (1) экономия памяти под переменные 
 (2) уменьшение объема кода программы 
 (3) увеличение эффективности выполнения операций 
Номер 3
Каковы недостатки использования битовых полей?
Ответ:
 (1) экономия памяти под переменные 
 (2) уменьшение объема кода программы 
 (3) увеличение эффективности выполнения операций 
Упражнение 6:
Номер 1
Какая программа содержит ошибку?
Ответ:
 (1)
int main(void)
{
struct test {
unsigned int : 3;
unsigned int f1 : 1;
unsigned int f2 : 1;
unsigned int f3 : 1;
unsigned int type : 8;
unsigned int index : 18;
};
int b;
struct test t;
t.f1 = 10;
t.type = 3439;
b = t.f1 + t.type;
printf("b = %d\n", b);
return 0;
}
 
 (2)
int main(void)
{
struct test {
unsigned int : 3;
unsigned int f1 : 1;
unsigned int f2 : 1;
unsigned int f3 : 1;
unsigned int type : 8;
unsigned int index : 18;
};
int b;
struct test t, *pt;
pt = &t;
pt->f1 = 11;
t.type = 3439;
b = t.f1 + t.type;
printf("b = %d\n", b);
return 0;
}
 
 (3)
int main(void)
{
struct test {
unsigned int : 3;
unsigned int f1 : 1;
unsigned int f2 : 1;
unsigned int f3 : 1;
unsigned int type : 8;
unsigned int index : 18;
};
int a : 4, b;
struct test t;
t.type = 3439;
b = a = t.type;
return 0;
}
 
Номер 2
Определите, содержит ли приведенная программа ошибки? Если содержит, укажите, какие именно?
int main(void)
{
struct test {
unsigned int : 3;
unsigned int f1 : 1;
unsigned int f2 : 1;
unsigned int f3 : 1;
unsigned int type : 8;
unsigned int index : 18;
};
int a : 4, b;
struct test t;
t.type = 3439;
b = a + t.type;
//printf("t.type = %d\n", t.type);
return 0;
}
Ответ:
 (1) в структуре test
задано безымянное битовое поле 
 (2) битовое поле объявлено вне структуры 
 (3) переменной t
присваивается недопустимое значение 
 (4) программа не содержит ошибок 
Номер 3
Определите, содержит ли приведенная программа ошибки? Если содержит, укажите, какие именно?
int main(void)
{
struct test {
unsigned int : 3;
unsigned int f1 : 1;
unsigned int f2 : 1;
unsigned int f3 : 1;
unsigned int type : 8;
unsigned int index : 18;
};
int b;
struct test t, *pt;
pt = &t;
pt->f1 = 11;
t.type = 3439;
b = t.f1 + t.type;
printf("b = %d\n", b);
return 0;
}
Ответ:
 (1) в структуре test
задано безымянное битовое поле 
 (2) поле t.f1
не инициализировано, поэтому не может участвовать в операции вычисления значения переменной b
 
 (3) программа не содержит ошибок 
Упражнение 7:
Номер 1
Чему будет равно значение переменной b
в результате выполнения приведенной программы?
int main(void)
{
struct Options {
unsigned int centerX : 1;
unsigned int centerY : 1;
unsigned int shadow : 2;
unsigned int palette : 4;
};
int b;
struct Options t, *pt;
t.shadow = 10;
t.palette = 10;
b = t.shadow + t.palette;
printf("b = %d\n", b);
return 0;
}
Ответ:
 (1) 10 
 (2) 12 
 (3) 20 
Номер 2
Чему будет равно значение переменной b
в результате выполнения приведенной программы?
int main(void)
{
struct Options {
unsigned int centerX : 1;
unsigned int centerY : 1;
unsigned int shadow : 2;
unsigned int palette : 4;
};
int b;
struct Options t, *pt;
t.shadow = 12;
t.palette = 10;
b = t.shadow + t.palette;
printf("b = %d\n", b);
return 0;
}
Ответ:
 (1) 10 
 (2) 12 
 (3) 22 
Номер 3
Чему будет равно значение переменной b
в результате выполнения приведенной программы?
int main(void)
{
struct Options {
unsigned int centerX : 1;
unsigned int centerY : 1;
unsigned int shadow : 2;
unsigned int palette : 4;
};
int b;
struct Options t, *pt;
t.shadow = 10;
t.palette = 12;
b = t.shadow + t.palette;
printf("b = %d\n", b);
return 0;
}
Ответ:
 (1) 10 
 (2) 12 
 (3) 14 
 (4) 22 
Упражнение 8:
Номер 1
Определите, что делает приведенная программа?
void printBits(unsigned int var);
int main (void)
{
unsigned int number, mask;
printf("The program on demonstration digit-by-digit operation And ( & )\n");
printf("Enter a whole number of unsigned: ");
scanf_s("%u", &number);
printf("Enter the number of unsigned-mask: ");
scanf_s("%u", &mask);
printf("Binary representation of the starting number(%u) and\n", number);
printf("Binary representation of the number-masks (%u):\n", mask);
printBits(number);
printBits(mask);
printBits(number & mask);
return 0;
}
void printBits(unsigned int var)
{
unsigned int b;
unsigned int mask = 1 << 15;
printf("\n%10u = ", var);
for (b = 1; b <= 16; ++b)
{
printf("%c", var & mask ? '1' : '0');
var <<= 1;
if (b % 8 == 0)
putchar(' ');
}
}
Ответ:
 (1) выполняет поразрядную операцию И
над двумя целыми числами, представленными в двоичной системе счисления для 32-разрядного компьютера 
 (2) выполняет поразрядную операцию И
над двумя целыми числами, представленными в двоичной системе счисления для 16-разрядного компьютера 
 (3) выполняет поразрядную операцию ИЛИ
над двумя целыми числами, представленными в двоичной системе счисления для 32-разрядного компьютера 
 (4) выполняет поразрядную операцию ИЛИ
над двумя целыми числами, представленными в двоичной системе счисления для 16-разрядного компьютера 
Номер 2
Определите, что делает приведенная программа?
void printBits(unsigned int var);
int main (void)
{
unsigned int number1, number2;
printf("\n The program on demonstration digit-by-digit operator OR ( | ):\n");
printf("\n\t Enter the unsigned number of N1: ");
scanf_s("%u", &number1);
printf("\t Enter the unsigned number of N2: ");
scanf_s("%u", &number2);
printf("\n\t Binary representation of the number of N1 (%u) and\n", number1);
printf("\t Binary representation of the number of N2 (%u):\n", number2);
printBits(number1);
printBits(number2);
printBits(number1 | number2);
printf("\n\n Press any key: ");
_getch();
return 0;
}
void printBits(unsigned int var) {
unsigned int b;
unsigned int num = 1 << 31;
printf("\n\t %10u = ", var);
for (b = 1; b <= 32; ++b) {
printf("%c", var & num ? '1' : '0');
var <<= 1;
if (b % 8 == 0)
putchar(' ');
}
}
Ответ:
 (1) выполняет поразрядную операцию И
над двумя целыми числами, представленными в двоичной системе счисления для 32-разрядного компьютера 
 (2) выполняет поразрядную операцию И
над двумя целыми числами, представленными в двоичной системе счисления для 16-разрядного компьютера 
 (3) выполняет поразрядную операцию ИЛИ
над двумя целыми числами, представленными в двоичной системе счисления для 32-разрядного компьютера 
 (4) выполняет поразрядную операцию ИЛИ
над двумя целыми числами, представленными в двоичной системе счисления для 16-разрядного компьютера 
Номер 3
Какая программа выполняет поразрядную операцию И
над двумя целыми числами, представленными в двоичной системе счисления для 16-разрядного компьютера?
Ответ:
 (1)
void printBits(unsigned int var);
int main (void)
{
unsigned int number, mask;
printf("The program on demonstration digit-by-digit operation And ( & )\n");
printf("Enter a whole number of unsigned: ");
scanf_s("%u", &number);
printf("Enter the number of unsigned-mask: ");
scanf_s("%u", &mask);
printf("Binary representation of the starting number(%u) and\n", number);
printf("Binary representation of the number-masks (%u):\n", mask);
printBits(number);
printBits(mask);
printBits(number & mask);
return 0;
}
void printBits(unsigned int var)
{
unsigned int b;
unsigned int mask = 1 << 15;
printf("\n%10u = ", var);
for (b = 1; b <= 16; ++b)
{
printf("%c", var & mask ? '1' : '0');
var <<= 1;
if (b % 8 == 0)
putchar(' ');
}
}
 
 (2)
void printBits(unsigned int var);
int main (void)
{
unsigned int number, mask;
printf("The program on demonstration digit-by-digit operation And ( ' )\n");
printf("Enter a whole number of unsigned: ");
scanf_s("%u", 'number);
printf("Enter the number of unsigned-mask: ");
scanf_s("%u", 'mask);
printf("Binary representation of the starting number(%u) and\n", number);
printf("Binary representation of the number-masks (%u):\n", mask);
printBits(number);
printBits(mask);
printBits(number ' mask);
return 0;
}
void printBits(unsigned int var)
{
unsigned int b;
unsigned int mask = 1 << 31;
printf("\n%10u = ", var);
for (b = 1; b <= 32; ++b)
{
printf("%c", var ' mask ? '1' : '0');
var <<= 1;
if (b % 8 == 0)
putchar(' ');
}
}
 
 (3)
void printBits(unsigned int var);
int main (void)
{
unsigned int number1, number2;
printf("\n The program on demonstration digit-by-digit operator OR ( | ):\n");
printf("\n\t Enter the unsigned number of N1: ");
scanf_s("%u", &number1);
printf("\t Enter the unsigned number of N2: ");
scanf_s("%u", &number2);
printf("\n\t Binary representation of the number of N1 (%u) and\n", number1);
printf("\t Binary representation of the number of N2 (%u):\n", number2);
printBits(number1);
printBits(number2);
printBits(number1 | number2);
printf("\n\n Press any key: ");
_getch();
return 0;
}
void printBits(unsigned int var) {
unsigned int b;
unsigned int num = 1 << 31;
printf("\n\t %10u = ", var);
for (b = 1; b <= 32; ++b) {
printf("%c", var & num ? '1' : '0');
var <<= 1;
if (b % 8 == 0)
putchar(' ');
}
}
 
Упражнение 9:
Номер 1
Чему будет равно значение переменной t.a
после выполнения приведенной программы?
int main(void)
{
struct test {
unsigned int a : 2;
unsigned int b : 8;
};
int c;
struct test t;
t.b = 255;
t.a = t.b & 3;
printf("t.a = %d\n", t.a);
return 0;
}
Ответ:
 (1) 3 
 (2) 7 
 (3) 15 
Номер 2
Чему будет равно значение переменной c
после выполнения приведенной программы?
int main(void)
{
struct test {
unsigned int a : 2;
unsigned int b : 8;
};
int c;
struct test t;
t.b = 255;
t.a = 3;
c = t.b ^ t.a;
printf("c = %d\n", c);
return 0;
}
Ответ:
 (1) 0 
 (2) 63 
 (3) 252 
 (4) 255 
Номер 3
Чему будет равно значение переменной c
после выполнения приведенной программы?
int main(void)
{
struct test {
unsigned int a : 2;
unsigned int b : 8;
};
int c;
struct test t;
t.b = 255;
t.a = 3;
c = t.b | t.a;
printf("c = %d\n", c);
return 0;
}
Ответ:
 (1) 0 
 (2) 63 
 (3) 252 
 (4) 255 
Упражнение 10:
Номер 1
В каком случае приведено верное описание выполнения операции побитового отрицания ~
для числа 0х92С4?
Ответ:
 (1)
исходное число: 1001 0010 1100 0100
результат операции: 0000 0000 0000 0000
 
 (2)
исходное число: 1001 0010 1100 0100
результат операции: 1111 1111 1111 1111
 
 (3)
исходное число: 1001 0010 1100 0100
результат операции: 0110 1101 0011 1011
 
Номер 2
В каком случае выполняется операция побитового исключающего ИЛИ (^
)?
Ответ:
 (1)
исходное число: 1001 0010 1100 0100
операнд-маска: 1000 0000 0000 0011
результат: 0001 0010 1100 0111
 
 (2)
исходное число: 1001 0010 1100 0100
операнд-маска: 1111 0000 0000 0000
результат: 1001 0000 0000 0000
 
 (3)
исходное число: 1001 0010 1100 0100
операнд-маска: 1000 0000 0000 0011
результат: 1001 0010 1100 0111
 
Номер 3
В каком случае выполняется операция побитового включающего ИЛИ (|
)?
Ответ:
 (1)
исходное число: 1001 0010 1100 0100
операнд-маска: 1000 0000 0000 0011
результат: 0001 0010 1100 0111
 
 (2)
исходное число: 1001 0010 1100 0100
операнд-маска: 1111 0000 0000 0000
результат: 1001 0000 0000 0000
 
 (3)
исходное число: 1001 0010 1100 0100
операнд-маска: 1000 0000 0000 0011
результат: 1001 0010 1100 0111
 
Упражнение 11:
Номер 1
Значения каких переменных будут четными?
a = 6 & 5;
b = 6 | 5;
c = 6 ^ 5;
Ответ:
 (1) a
 
 (2) b
 
 (3) c
 
Номер 2
Значения каких переменных будут нечетными?
a = 6 & 5;
b = 6 | 5;
c = 6 ^ 5;
Ответ:
 (1) a
 
 (2) b
 
 (3) c
 
Номер 3
Значение какой переменной будет наибольшим?
a = 6 & 5;
b = 6 | 5;
c = 6 ^ 5;
Ответ:
 (1) a
 
 (2) b
 
 (3) c
 
Упражнение 12:
Номер 1
Какое действие выполняет приведенная программа?
int main(void)
{
int date;
int year = 26;
int month = 12;
int day = 31;
year = year << 9;
month = month << 5;
date = day;
date = date | month;
date = date | year;
return 0;
}
Ответ:
 (1) складывает год, месяц, число 
 (2) выполняет операцию побитового включающего ИЛИ для всех переменных 
 (3) записывает в одно слово полную дату (год, месяц, число) 
Номер 2
Чему будет равно значение переменной year
в результате выполнения приведенного фрагмента кода?
int year = 26;
year = year << 9;
Ответ:
 (1) 6656 
 (2) 13312 
 (3) 26624 
Номер 3
Чему будет равно значение переменной d
в результате выполнения приведенного фрагмента кода?
int d;
int a = 10;
int b = 15;
a >>= 1;
b <<= 1;
d = a + b;
Ответ:
 (1) 18 
 (2) 19 
 (3) 34 
 (4) 35