Главная / Программирование /
Программирование на языке C в Microsoft Visual Studio 2010 / Тест 3
Программирование на языке C в Microsoft Visual Studio 2010 - тест 3
Упражнение 1:
Номер 1
Какой цикл реализует приведенную структурную схему?
Ответ:
 (1) while
 
 (2) do while
 
 (3) for
 
Номер 2
Какой цикл реализует приведенную структурную схему?
Ответ:
 (1) while
 
 (2) do while
 
 (3) for
 
Номер 3
Какой цикл является циклом с предусловием?
Ответ:
 (1) while
 
 (2) do while
 
 (3) for
 
Упражнение 2:
Номер 1
В каком случае при выполнении приведенного кода возникнет зацикливание?
Ответ:
 (1)
int x=1, y = 1;
for (; x < 5; x++)
{
y = y*2;
printf("%d ", x);
}
 
 (2)
int x, y = 1;
for (x = 0; x < 5; x++)
{
x = y*2;
printf("%d ", x);
}
 
 (3)
int x=1, y = 1;
for (; ; x++)
{
y = y*2;
printf("%d ", x);
if (x>=5)
break;
}
 
 (4)
int x = 5, y = 1;
do
y = x*2;
while (y<=10);
 
Номер 2
В каком случае при выполнении приведенного кода не возникнет зацикливания?
Ответ:
 (1)
int x=0, y = 1;
while (1)
{
y = y*2;
printf("%d ", x);
x++;
}
 
 (2)
int x=1, y = 1;
for (; x<5; x++)
{
y = y*2;
printf("%d ", x);
}
 
 (3)
int x, y = 1;
for (x = 0; x < 5; x++)
{
x = y*2;
printf("%d ", x);
}
 
 (4)
int x=1, y = 1;
for (; ; x++)
{
y = y*2;
printf("%d ", x);
if (x>=5)
break;
}
 
Номер 3
В каком случае при выполнении приведенного кода возникнет зацикливание?
Ответ:
 (1)
int x=0, y = 1;
while (1)
{
y = y*2;
printf("%d ", x);
x++;
}
 
 (2)
int x=1, y = 1;
for (; x<5; x++)
{
y = y*2;
printf("%d ", x);
}
 
 (3)
int x=1, y = 1;
for (; ; x++)
{
y = y*2;
printf("%d ", x);
if (x>=5)
break;
}
 
 (4)
int x, y = 1;
for (x = 0; x < 5; x++)
{
x = y*2;
printf("%d ", x);
}
 
Упражнение 3:
Номер 1
Чему будет равно значение переменной y
в результате выполнения приведенного фрагмента кода?
int x = 5, y;
for(y=1; y<=x; ++y)
printf("%d ", y);
y = x*2;
Ответ:
 (1) 1 
 (2) 10 
 (3) 11 
Номер 2
В результате выполнения какого фрагмента кода значение переменной y
будет равно 10?
Ответ:
 (1)
int x = 5, y = 10;
while (y<=x)
{
printf("%d ", y);
y = x*3;
}
 
 (2)
int x = 5, y;
for(y=1; y<=x; ++y)
{
printf("%d ", y);
y = x*2;
}
 
 (3)
int x = 5, y = 1;
do {
y = x+1;
x++;
} while (y<=10);
 
Номер 3
В результате выполнения какого фрагмента кода значение переменной y
будет равно 11?
Ответ:
 (1)
int x = 5, y = 10;
while (y<=x)
{
printf("%d ", y);
y = x*2+1;
}
 
 (2)
int x = 5, y = 10;
while (y<=x)
y = x+1;
y = x*2+1;
 
 (3)
int x = 5, y = 1;
do {
y = x+1;
x++;
} while (y<=10);
 
Упражнение 4:
Номер 1
Ниже приведены несколько вариантов программы для нахождения всех делителей целого положительного числа (условный оператор if (!(num % div))
определяет, делится ли число num
на div
без остатка). В каком случае цикл будет выполнен хотя бы один раз для переменной num = 3
?
Ответ:
 (1)
int num, half, div;
printf("Введите число: ");
scanf_s("%d", &num);
half = num / 2;
div = 2;
while (div <= half) {
if (!(num % div)) printf("%d ", div);
div++;
}
 
 (2)
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);
 
 (3)
int num, half, div;
printf("Введите число: ");
scanf_s("%d", &num);
half = num / 2;
for (div = 2; div <= half; div++) {
if (!(num % div)) printf("%d ", div);
}
 
Номер 2
Ниже приведены несколько вариантов программы для нахождения всех делителей целого положительного числа (условный оператор if (!(num % div))
определяет, делится ли число num
на div
без остатка). Пользователь ввел значение переменной num = 3
. В каком случае значение переменной div
не изменится?
Ответ:
 (1)
int num, half, div;
printf("Введите число: ");
scanf_s("%d", &num);
half = num / 2;
div = 2;
while (div <= half) {
if (!(num % div)) printf("%d ", div);
div++;
}
 
 (2)
int num, half, div;
printf("Введите число: ");
scanf_s("%d", &num);
half = num / 2;
for (div = 2; div <= half; div++) {
if (!(num % div)) printf("%d ", div);
}
 
 (3)
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);
 
Номер 3
Ниже приведены несколько вариантов программы для нахождения всех делителей целого положительного числа (условный оператор if (!(num % div))
определяет, делится ли число num
на div
без остатка). Пользователь ввел значение переменной num = 3
. В каком случае цикл не выполнится ни одного раза?
Ответ:
 (1)
int num, half, div;
printf("Введите число: ");
scanf_s("%d", &num);
half = num / 2;
div = 2;
while (div <= half) {
if (!(num % div)) printf("%d ", div);
div++;
}
 
 (2)
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);
 
 (3)
int num, half, div;
printf("Введите число: ");
scanf_s("%d", &num);
half = num / 2;
for (div = 2; div <= half; div++) {
if (!(num % div)) printf("%d ", div);
}
 
Упражнение 5:
Номер 1
Необходимо написать программу для проверки пароля, вводимого пользователем. Программа должна предоставлять пользователю только три попытки ввода пароля. Верный пароль - число 95. Какой фрагмент кода реализует поставленную задачу?
Ответ:
 (1)
int i, psw = 0;
printf("Введите пароль: ");
for (i=0; i<3 && psw!=95; i++)
{
scanf("%d", &psw);
i++;
}
 
 (2)
int i = 0, psw = 0;
printf("Введите пароль: ");
while (i<3 && psw!=95)
{
scanf("%d", &psw);
i++;
}
 
 (3)
int i, psw = 0;
printf("Введите пароль: ");
while (psw!=95)
{
for (i=0; i<3; i++)
scanf("%d", &psw);
}
 
Номер 2
Необходимо написать программу для проверки пароля, вводимого пользователем. Программа должна предоставлять пользователю только три попытки ввода пароля. Верный пароль - число 95. Какой фрагмент кода реализует поставленную задачу?
Ответ:
 (1)
int i, psw = 0;
printf("Введите пароль: ");
while (psw!=95)
{
for (i=0; i<3; i++)
scanf("%d", &psw);
}
 
 (2)
int i = 0, psw = 0;
printf("Введите пароль: ");
while (i<3 || psw!=95)
{
scanf("%d", &psw);
i++;
}
 
 (3)
int i, psw = 0;
printf("Введите пароль: ");
for (i=0; i<3 && psw!=95; i++)
scanf("%d", &psw);
 
Номер 3
Необходимо написать программу для проверки пароля, вводимого пользователем. Программа должна предоставлять пользователю только три попытки ввода пароля. Верный пароль - число 95. Какой фрагмент кода реализует поставленную задачу?
Ответ:
 (1)
int i, psw = 0;
printf("Введите пароль: ");
scanf("%d", &psw);
for (i=0; i<3 && psw!=95; i++)
scanf("%d", &psw);
 
 (2)
int i = 1, psw = 0;
printf("Введите пароль: ");
while (i<3 && psw!=95)
{
scanf("%d", &psw);
i++;
}
 
 (3)
int i = 0, psw = 0;
printf("Введите пароль: ");
do
{
scanf("%d", &psw);
i++;
} while (i<3 && psw!=95);
 
Упражнение 6:
Номер 1
Какое утверждение является верным для приведенного фрагмента кода?
int x;
printf("Угадайте число:\n");
for (x=0; x!=123; )
scanf("%d", &x);
Ответ:
 (1) цикл выполняется, пока пользователь не введет число 0 
 (2) цикл выполняется, пока пользователь не введет число 123 
 (3) цикл выполняется 123 раза 
 (4) при компиляции приведенного кода возникнет ошибка 
Номер 2
Сколько раз будет выполнен цикл for
?
int x;
printf("Угадайте число:\n");
for (x=0; x!=123; )
scanf("%d", &x);
Ответ:
 (1) 0 
 (2) 123 
 (3) заранее неизвестно 
Номер 3
Сколько раз будет выполнен цикл for
?
int x=123;
printf("Угадайте число:\n");
for (x=0; x==123; )
scanf("%d", &x);
Ответ:
 (1) 0 
 (2) 123 
 (3) заранее неизвестно 
Упражнение 7:
Номер 1
В результате выполнения какого фрагмента кода на экран будут выведены 5 строк по 5 звездочек?
Ответ:
 (1)
int i;
for (i=0; i<5; i++)
printf("*****\n");
 
 (2)
int i, j;
for (i=0; i<5; i++)
for (j=0; j<5; j++)
printf("*");
 
 (3)
int i, j;
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
printf("*");
printf("\n");
}
 
 (4)
int i, j;
for (i=0; i<5; i++)
{
for (j=i; j<5; j++)
printf("*");
printf("\n");
}
 
Номер 2
В результате выполнения какого фрагмента кода на экран будут выведены 5 строк, в каждой из которых будет на 1 звездочку меньше, чем в предыдущей?
Ответ:
 (1)
int i, j;
for (i=0; i<5; i++)
for (j=0; j<5; j++)
printf("*");
 
 (2)
int i, j;
for (i=5; i>0; i--)
{
for (j=i; j<5; j++)
printf("*");
printf("\n");
}
 
 (3)
int i, j;
for (i=0; i<5; i++)
{
for (j=i; j<5; j++)
printf("*");
printf("\n");
}
 
Номер 3
В результате выполнения какого фрагмента кода на экран будут выведены 5 строк, в каждой из которых будут содержаться звездочки, причем в каждой последующей строки будет на одну звездочку больше, чем в предыдущей?
Ответ:
 (1)
int i, j;
for (i=0; i<5; i++)
for (j=0; j<5; j++)
printf("*");
 
 (2)
int i, j;
for (i=5; i>0; i--)
{
for (j=i; j<5; j++)
printf("*");
printf("\n");
}
 
 (3)
int i, j;
for (i=0; i<5; i++)
{
for (j=i; j<5; j++)
printf("*");
printf("\n");
}
 
 (4)
int i, j;
for (i=5; i>0; i--)
{
for (j=i-1; j<5; j++)
printf("*");
printf("\n");
}
 
Упражнение 8:
Номер 1
Как организовать бесконечный цикл while
?
Ответ:
 (1) while (-1) { ... }
 
 (2) while (0) { ... }
 
 (3) while (1) { ... }
 
Номер 2
В каком случае цикл for
будет выполняться бесконечно?
Ответ:
 (1)
int i;
char ch;
for (i=1; ; i++)
{
ch = getchar();
if (ch != 'y')
i++;
}
 
 (2)
int i = 0;
char ch;
for (; i<5 ; i++)
{
ch = getchar();
if (ch != 'y')
i++;
}
 
 (3)
int i;
char ch;
for (i=1; i<5 ; )
{
ch = getchar();
if (ch != 'y')
i++;
}
 
 (4)
int i = 1;
char ch;
for ( ; ; )
{
ch = getchar();
if (ch != 'y')
i++;
}
 
Номер 3
В каком случае цикл for
не будет бесконечным?
Ответ:
 (1)
int i = 0;
char ch;
for (; i<5 ; i++)
{
ch = getchar();
if (ch != 'y')
i++;
}
 
 (2)
int i;
char ch;
for (i=1; i<5 ; )
{
ch = getchar();
if (ch != 'y')
i++;
}
 
 (3)
int i;
char ch;
for (i=1; ; i++)
{
ch = getchar();
if (ch != 'y')
i++;
}
 
 (4)
int i = 1;
char ch;
for ( ; ; )
{
ch = getchar();
if (ch != 'y')
i++;
}
 
Упражнение 9:
Номер 1
Что будет выводиться на экран во время выполнения приведенного фрагмента кода?
int x, n = 1;
while (n<=10)
{
x = n*n;
printf("%d %d\n", n, x);
}
Ответ:
 (1) таблица чисел от 1 до 10 и их квадратов 
 (2) бесконечное число строк "1 1" 
 (3) 10 строк с квадратами чисел от 1 до 10 
Номер 2
В результате выполнения какого фрагмента кода на экран будет выведена таблица чисел от 1 до 10 и их квадратов?
Ответ:
 (1)
int x, n = 1;
while (n<10)
{
x = n*n;
printf("%d %d\n", n, x);
n++;
}
 
 (2)
int x, n = 1;
while (n<=10)
{
x = n*n;
printf("%d %d\n", n, x);
}
 
 (3)
int x, n;
for (n=1; n<=10; n++)
{
x = n*n;
printf("%d %d\n", n, x);
}
 
Номер 3
В результате выполнения какого фрагмента кода на экран будет выведена таблица чисел от 1 до 9 и их квадратов?
Ответ:
 (1)
int x, n = 1;
while (n<10)
{
x = n*n;
printf("%d %d\n", n, x);
n++;
}
 
 (2)
int x, n = 1;
while (n<=10)
{
x = n*n;
printf("%d %d\n", n, x);
}
 
 (3)
int x, n;
for (n=1; n<9; n++)
{
x = n*n;
printf("%d %d\n", n, x);
}
 
Упражнение 10:
Номер 1
Игра "Угадай число" заканчивавается, если задуманное число угадано, или количество попыток достигло определенного значения, например, 10. Главный цикл игры реализован следующим образом:
int c = 0, n = 100, m;
do {
printf("Ваш вариант: ");
scanf("%d", &m);
c++;
} while <Условие>
c
- число попыток, n
- задуманное число. Каким должно быть условие завершения игры?
Ответ:
 (1) ((n==m) || (c>10))
 
 (2) ((n==m) && (c>10))
 
 (3) (n!=m) || (c<=10))
 
 (4) ((n!=m) && (c<10))
 
 (5) ((n!=m) && (c<=10))
 
Номер 2
Игра "Угадай число" заканчивавается, если задуманное число угадано, или количество попыток достигло определенного значения, например, 10. Какой фрагмент кода правильным образом реализует эту игру, если c
- число попыток, n
- задуманное число?
Ответ:
 (1)
int c = 0, n = 100, m;
do {
printf("Ваш вариант: ");
scanf("%d", &m);
c++;
} while ((n!=m) && (c<=10))
 
 (2)
int c = 0, n = 100, m;
do {
printf("Ваш вариант: ");
scanf("%d", &m);
c++;
} while ((n!=m) && (c<10))
 
 (3)
int c = 0, n = 100, m;
do {
printf("Ваш вариант: ");
scanf("%d", &m);
c++;
} while (n!=m) || (c<=10))
 
Номер 3
Игра "Угадай число" заканчивавается, если задуманное число угадано, или количество попыток достигло определенного значения, например, 10. Какой фрагмент кода реализует эту игру неверно, если c
- число попыток, n
- задуманное число?
Ответ:
 (1)
int c = 0, n = 100, m;
do {
printf("Ваш вариант: ");
scanf("%d", &m);
c++;
} while ((n!=m) && (c<=10))
 
 (2)
int c = 0, n = 100, m;
do {
printf("Ваш вариант: ");
scanf("%d", &m);
c++;
} while ((n!=m) && (c<10))
 
 (3)
int c = 0, n = 100, m;
do {
printf("Ваш вариант: ");
scanf("%d", &m);
c++;
} while ((n!=m) || (c<=10))
 
Упражнение 11:
Номер 1
Какое назначение может иметь в программе приведенный цикл без тела?
for(t=0; t<SOME_VALUE; t++) ;
Ответ:
 (1) вычисление значения SOME_VALUE
 
 (2) задержка выполнения последующей части программы 
 (3) задание цикла без тела недопустимо 
Номер 2
При вводе каких значений выполнение цикла завершится?
int num;
do {
scanf("%d", &num);
} while (num > 100);
Ответ:
 (1) 200 
 (2) -100 
 (3) 100 
 (4) 120 
Номер 3
При вводе каких значений выполнение цикла не будет завершено?
int num;
do {
scanf("%d", &num);
} while (num > 100);
Ответ:
 (1) 200 
 (2) -100 
 (3) 100 
 (4) 120 
Упражнение 12:
Номер 1
Какие утверждения являются верными?
Ответ:
 (1) операторы циклов for
, while
и do while
не являются взаимозаменяемыми 
 (2) проверка условия выполняется на каждой итерации цикла 
 (3) в случаях, когда число итераций заранее неизвестно, удобнее использовать оператор while
 
Номер 2
Какие утверждения являются неверными?
Ответ:
 (1) операторы циклов for
, while
и do while
не являются взаимозаменяемыми 
 (2) проверка условия выполняется на каждой итерации цикла 
 (3) в случаях, когда число итераций заранее не известно, удобнее использовать оператор while
 
Номер 3
Какой оператор цикла обычно используется в случаях, когда цикл требуется обязательно выполнить хотя бы один раз?
Ответ:
 (1) for
 
 (2) while
 
 (3) do while