Главная / Программирование /
Программирование на языке C в Microsoft Visual Studio 2010 / Тест 4
Программирование на языке C в Microsoft Visual Studio 2010 - тест 4
Упражнение 1:
Номер 1
Какая схема является структурной схемой условного оператора?
Ответ:
 
(1)  
 
(2)  
 
(3)  
 
(4)  
Номер 2
Структурная схема какого оператора представлена ниже?
Ответ:
 (1) оператора switch
 
 (2) цикла do while
 
 (3) оператора if
 
 (4) конструкции if - else
 
Номер 3
Структурная схема какого оператора представлена ниже?
Ответ:
 (1) оператора switch
 
 (2) цикла do while
 
 (3) оператора if
 
 (4) конструкции if - else
 
Упражнение 2:
Номер 1
Какой оператор используется для прерывания программного цикла при некотором условии?
Ответ:
 (1) continue
 
 (2) break
 
 (3) return
 
 (4) goto
 
Номер 2
Какой оператор используется для выхода из функции при выполнении некоторых условий?
Ответ:
 (1) continue
 
 (2) break
 
 (3) return
 
 (4) goto
 
Номер 3
Какой оператор используется для продолжения итераций цикла при выполнении некоторых условий?
Ответ:
 (1) continue
 
 (2) break
 
 (3) return
 
 (4) goto
 
Упражнение 3:
Номер 1
При каких значениях переменной A
значение переменной cond
будет равно 1?
int cond;
int A = 1;
cond = (A >= 100) && (A <= 150);
Ответ:
 (1) при A = 50
 
 (2) при A = 100
 
 (3) при A = 120
 
 (4) при A = 150
 
 (5) при A = 200
 
Номер 2
При каких значениях переменной A
значение переменной cond
будет равно 0?
int cond;
int A = 1;
cond = (A >= 100) && (A <= 150);
Ответ:
 (1) при A = 50
 
 (2) при A = 100
 
 (3) при A = 120
 
 (4) при A = 150
 
 (5) при A = 200
 
Номер 3
При каких значениях переменной A
значение переменной cond
будет равно 0?
int cond,;
cond = (A==5) || ((A>10) && (A<1));
Ответ:
 (1) при A = 0
 
 (2) при A = 1
 
 (3) при A = 5
 
 (4) при A = 7
 
 (5) при A = 10
 
 (6) при A = 11
 
Упражнение 4:
Номер 1
В результате выполнения какого фрагмента кода на экран будут выведены числа от 0 до 10?
Ответ:
 (1)
for(t=0; t<100; t++) {
printf("%d \n", t);
if(t==10) t=100;
}
 
 (2)
int t;
for(t=0; t<100; t++) {
printf("%d \n", t);
if(t==10) break;
}
 
 (3)
int t;
for(t=0; t<100; t++) {
if(t==10)
printf("%d \n", t);
}
 
Номер 2
В результате выполнения какого фрагмента кода значение переменной t
будет кратно 10?
Ответ:
 (1)
int t;
for(t=0; t<100; t++) {
printf("%d \n", t);
if(t==10) t=100;
}
 
 (2)
int t;
for(t=0; t<100; t++) {
printf("%d \n", t);
if(t==10) break;
}
 
 (3)
int t;
for(t=0; t<100; t++) {
if(t==10)
printf("%d \n", t);
}
 
Номер 3
В результате выполнения какого фрагмента кода значение переменной t
будет равно 10?
Ответ:
 (1)
int t;
for(t=0; t<100; t++) {
printf("%d \n", t);
if(t==10) t=100;
}
 
 (2)
int t;
for(t=0; t<100; t++) {
printf("%d \n", t);
if(t==10) break;
}
 
 (3)
int t;
for(t=0; t<100; t++) {
if(t==10)
printf("%d \n", t);
}
 
Упражнение 5:
Номер 1
В результате выполнения какого фрагмента кода значение переменной m
будет равно 8?
Ответ:
 (1)
int k = 0, m;
goto lbl;
{int a = 3, b = 4;
k = a + b;
lbl: m = k + 1;
}
 
 (2)
int k = 0, m;
int a = 3, b = 4;
k = a + b;
goto lbl;
lbl: m = k + 1;
 
 (3)
int k = 0, m;
goto lbl;
lbl:
{int a = 3, b = 4;
k = a + b;
m = k + 1;
}
 
Номер 2
Почему применение оператора goto
не является хорошим стилем программирования?
Ответ:
 (1) синтаксис записи выражений с помощью оператора goto
менее удобен по сравнению с другими опеараторами 
 (2) применение goto
нарушает принципы структурного и модульного программирования 
 (3) работа оператора goto
непредсказуема 
Номер 3
Что делает приведенный фрагмент кода?
int x = 0;
loop1:
x++;
if (x<=5) {
printf("%d \n", x);
goto loop1;
}
Ответ:
 (1) выводит на экран только первое значение x
, удовлетворяющее заданному условию 
 (2) выводит на экран числа от 1 до 5 
 (3) приведенный фрагмент кода содержит ошибку (метка loop1
объявлена раньше опеаратора goto
) 
Упражнение 6:
Номер 1
Какой фрагмент кода полностью аналогичен заданному?
int x = 10, y;
if(x>9) y = 100;
else y = 200;
Ответ:
 (1)
int x = 10, y;
y = x<9 ? 100 : 200;
 
 (2)
int x = 10, y;
y = x<9 ? 200 : 100;
 
 (3)
int x = 10, y;
y = x>9 ? 100 : 200;
 
Номер 2
Какой фрагмент кода определяет максимальное из двух чисел?
Ответ:
 (1)
int a = rand();
int b = rand();
int maxab = (a > b) ? a : b;
printf("maxab = %d", maxab);
 
 (2)
int a = rand();
int b = rand();
int maxab = (a > b) ? b : a;
printf("maxab = %d", maxab);
 
 (3)
int a = rand();
int b = rand();
int maxab = (a < b) ? a : b;
printf("maxab = %d", maxab);
 
Номер 3
Какой фрагмент кода определяет минимальное из двух чисел?
Ответ:
 (1)
int a = rand();
int b = rand();
int minab = (a > b) ? a : b;
printf("minab = %d", minab);
 
 (2)
int a = rand();
int b = rand();
int minab = (a > b) ? b : a;
printf("minab = %d", minab);
 
 (3)
int a = rand();
int b = rand();
int minab = (a < b) ? a : b;
printf("minab = %d", minab);
 
Упражнение 7:
Номер 1
Дана программа определения дня недели:
int x;
printf("Введите число от 1 до 7: ");
scanf_s("%d", &x);
switch (x<=5 ? 1 :
x==6 ? 2 : 3)
{
case 1:
printf("Сегодня рабочий день");
break;
case 2:
printf("Сегодня суббота");
break;
case 3:
printf("Сегодня воскресенье");
break;
default:
printf("Ошибка! Вы ввели неверное число");
break;
}
Какое сообщение будет выведено на экран, если в запросе ввода пользователь задаст число 8?
Ответ:
 (1) Сегодня рабочий день
 
 (2) Сегодня суббота
 
 (3) Сегодня воскресенье
 
 (4) Ошибка! Вы ввели неверное число
 
Номер 2
При выполнении какого варианта программы определения дня недели при вводе числа 8 на экране будет выведено сообщение Ошибка! Вы ввели неверное число
?
Ответ:
 (1)
int x;
printf("Введите число от 1 до 7: ");
scanf_s("%d", &x);
switch (x<=5 ? 1 :
x==6 ? 2 : 3)
{
case 1:
printf("Сегодня рабочий день");
break;
case 2:
printf("Сегодня суббота");
break;
case 3:
printf("Сегодня воскресенье");
break;
default:
printf("Ошибка! Вы ввели неверное число");
break;
}
 
 (2)
int x;
printf("Введите число от 1 до 7: ");
scanf_s("%d", &x);
switch (x>=5 ? 1 :
x==6 ? 2 :
x==7 ? 3 : 4)
{
case 1:
printf("Сегодня рабочий день");
break;
case 2:
printf("Сегодня суббота");
break;
case 3:
printf("Сегодня воскресенье");
break;
default:
printf("Ошибка! Вы ввели неверное число");
break;
}
 
 (3)
int x;
printf("Введите число от 1 до 7: ");
scanf_s("%d", &x);
switch (x<=5 ? 1 :
x==6 ? 2 :
x==7 ? 3 : 4)
{
case 1:
printf("Сегодня рабочий день");
break;
case 2:
printf("Сегодня суббота");
break;
case 3:
printf("Сегодня воскресенье");
break;
case 4:
printf("Ошибка! Вы ввели неверное число");
break;
}
 
Номер 3
Дана программа определения дня недели:
int x;
printf("Введите число от 1 до 7: ");
scanf_s("%d", &x);
switch (x<=5 ? 1 :
x==6 ? 2 : 3)
{
case 1:
printf("Сегодня рабочий день");
break;
case 2:
printf("Сегодня суббота");
break;
case 3:
printf("Сегодня воскресенье");
break;
default:
printf("Ошибка! Вы ввели неверное число");
break;
}
Какое число нужно ввести, чтобы на экран было выведено сообщение Ошибка! Вы ввели неверное число
?
Ответ:
 (1) 1 
 (2) 5 
 (3) 7 
 (4) 8 
 (5) сообщение Ошибка! Вы ввели неверное число
никогда не будет выведено 
Упражнение 8:
Номер 1
Что будет выведено на экран в результате выполнения приведенных инструкций при попытке пользователя вычислить значение 5^6?
int a, b, res = 0;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/': res = a/b; break;
default:
printf("Неизвестная операция\n");
f = 0;
}
if (f) printf ("Результат: %d", res);
Ответ:
 (1)
Неизвестная операция
Результат: 0
 
 (2) Неизвестная операция
 
 (3) в процессе выполнения приведенного фрагмета кода возникнет ошибка 
Номер 2
Чему будет равно значение переменной f
при попытке пользователя вычислить значение 5^6?
int a, b, res = 0;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/': res = a/b; break;
default:
printf("Неизвестная операция\n");
f = 0;
}
f = f*2;
if (f) printf ("Результат: %d", res);
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
Номер 3
Чему будет равен результат вычисления значения 5+6 в результате выполнения приведенного фрагмента кода?
int a, b, res;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/': res = a/b; break;
default:
printf("Неизвестная операция");
f = 0;
}
if (f) printf ("Результат: %d", res);
Ответ:
 (1) -1 
 (2) 5 
 (3) 6 
 (4) 11 
Упражнение 9:
Номер 1
Каким будет результат выполнения приведенного фрагмента кода, если пользователь введет число 6?
int num, half, div;
printf("Введите число: ");
scanf_s("%d", &num);
half = num / 2;
div = 2;
do {
if (!(num % div)) printf("%d ", div);
div++;
} while (div <= half);
Ответ:
 (1) 1 2 3 6 
 (2) 2 3 
 (3) 2 3 6 
Номер 2
В какой программе будет корректно обработана ситуация деления на нуль?
Ответ:
 (1)
int a, b, res;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/': res = a/b; break;
default:
printf("Неизвестная операция");
f = 0;
}
if (f) printf ("Результат: %d", res);
 
 (2)
int a, b, res;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/':
switch (b) {
case 0:
printf("Деление на 0!\n");
default:
res = a/b;
}
break;
default:
printf("Неизвестная операция 111");
f = 0;
}
if (f) printf ("Результат: %d 222", res);
 
 (3)
int a, b, res;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/':
switch (b) {
case 0:
printf("Деление на 0!\n");
break;
default:
res = a/b;
}
break;
default:
printf("Неизвестная операция 111");
f = 0;
}
if (f) printf ("Результат: %d 222", res);
 
Номер 3
В какой программе ситуация деления на нуль обрабатывается некорректно?
Ответ:
 (1)
int a, b, res;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/': res = a/b; break;
default:
printf("Неизвестная операция");
f = 0;
}
if (f) printf ("Результат: %d", res);
 
 (2)
int a, b, res;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/':
switch (b) {
case 0:
printf("Деление на 0!\n");
default:
res = a/b;
}
break;
default:
printf("Неизвестная операция 111");
f = 0;
}
if (f) printf ("Результат: %d 222", res);
 
 (3)
int a, b, res;
char op;
int f = 1;
printf("Введите 1й операнд: ");
scanf("%d", &a);
printf("Введите знак операции: ");
scanf("%s", &op);
printf("Введите 2й операнд: ");
scanf("%d", &b);
switch (op) {
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/':
switch (b) {
case 0:
printf("Деление на 0!\n");
break;
default:
res = a/b;
}
break;
default:
printf("Неизвестная операция 111");
f = 0;
}
if (f) printf ("Результат: %d 222", res);
 
Упражнение 10:
Номер 1
Что будет выведено на экран в результате выполнения приведенного фрагмента кода?
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
return;
printf("%d\n", n);
n++;
}
Ответ:
 (1) все числа от 1 до 10 
 (2) все нечетные числа от 1 до 10 
 (3) все четные числа от 1 до 10 
 (4) первое нечетное число - число 1 
Номер 2
В результате выполнения какого фрагмента кода на экран будет выведено одно число?
Ответ:
 (1)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
return;
printf("%d\n", n);
n++;
}
 
 (2)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
continue;
printf("%d\n", n);
n++;
}
 
 (3)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
break;
printf("%d\n", n);
n++;
}
 
Номер 3
В результате выполнения какого фрагмента кода на экран будет выведено больше одного числа?
Ответ:
 (1)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
return;
printf("%d\n", n);
n++;
}
 
 (2)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
continue;
printf("%d\n", n);
n++;
}
 
 (3)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
break;
printf("%d\n", n);
n++;
}
 
Упражнение 11:
Номер 1
В каком случае, если пользователь введет число -4, на экран будет выведено сообщение -4 в квадрате = -16
?
Ответ:
 (1)
int isqrd, i;
printf("Введите число: ");
scanf("%d", &i);
isqrd = i>0 ? i*i : -(i*i);
printf("%d в квадрате = -%d", i, isqrd);
 
 (2)
int isqrd, i;
printf("Введите число: ");
scanf("%d", &i);
isqrd = i<0 ? i*i : -(i*i);
printf("%d в квадрате = %d", i, isqrd);
 
 (3)
int isqrd, i;
printf("Введите число: ");
scanf("%d", &i);
isqrd = i>0 ? i*i : -(i*i);
printf("%d в квадрате = %d", i, isqrd);
 
Номер 2
В каком случае, если пользователь введет число 4, на экран будет выведено сообщение 4 в квадрате = -16
?
Ответ:
 (1)
int isqrd, i;
printf("Введите число: ");
scanf("%d", &i);
isqrd = i>0 ? -(i*i) : i*i;
printf("%d в квадрате %d", i, isqrd);
 
 (2)
int isqrd, i;
printf("Введите число: ");
scanf("%d", &i);
isqrd = i>0 ? i*i : -(i*i);
printf("%d в квадрате %d", i, isqrd);
 
 (3)
int isqrd, i;
printf("Введите число: ");
scanf("%d", &i);
isqrd = i<0 ? i*i : -(i*i);
printf("%d в квадрате %d", i, isqrd);
 
Номер 3
Для каких значений переменной i
в результате выполнения приведенного фрагмента кода знак квадрата числа будет противоположен знаку самого числа?
int isqrd = 0, i;
printf("Введите число: ");
scanf("%d", &i);
isqrd = (!(i%2) && i>0) ? i*i : -(i*i);
printf("%d в квадрате %d", i, isqrd);
Ответ:
 (1) -1 
 (2) 4 
 (3) 5 
Упражнение 12:
Номер 1
Задан цикл, который выводит все числа от 1 до 10:
int n = 1; (1)
while (n<=10) (2)
{
if (n%2) (3)
printf("%d\n", n); (4)
n++; (5)
printf("%d\n", n); (6)
n++; (7)
}
Как изменить приведенный цикл, чтобы на экран выводились только нечетные числа от 1 до 10?
Ответ:
 (1) в строке (5) удалить приращение переменной n
 
 (2) после строки (5) добавить оператор continue
 
 (3) изменить условие в строке (3) на (!(n%2))
 
Номер 2
В каком случае на экран будут выведены только нечетные числа от 1 до 10?
Ответ:
 (1)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
printf("%d\n", n);
n++;
}
 
 (2)
int n = 1;
while (n<=10)
{
if (!(n%2))
printf("%d\n", n);
n++;
continue;
printf("%d\n", n);
n++;
}
 
 (3)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
continue;
printf("%d\n", n);
n++;
}
 
Номер 3
В каком случае на экран будут выведены только четные числа от 1 до 10?
Ответ:
 (1)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
printf("%d\n", n);
n++;
}
 
 (2)
int n = 1;
while (n<=10)
{
if (!(n%2))
printf("%d\n", n);
n++;
continue;
printf("%d\n", n);
n++;
}
 
 (3)
int n = 1;
while (n<=10)
{
if (n%2)
printf("%d\n", n);
n++;
continue;
printf("%d\n", n);
n++;
}