Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы_экзамен_информатика.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
153 Кб
Скачать
☆

2. Циклы, ввод-вывод, операции ветвления и логические выражения.

1. Что напечатает следующий фрагмент кода, если использовать его в программе?

int i;

for (i = 0; i < 5; i + + )

cout << i;

cout << endl;

2. Что напечатает следующий фрагмент кода, если использовать его в программе?

int j;

for (j = 0; j < 11; j += 3)

cout << j;

cout << endl << j << endl;

3. Что напечатает следующий фрагмент кода, если использовать его в программе?

int j = 5;

while (++j < 9)

cout << j++ << endl;

4. Что напечатает следующий фрагмент кода, если использовать его в программе?

int k = 8;

do

cout << " k = " << k << endl;

while (k++ < 5) ;

5. Напишите цикл for, который печатает значения 1 2 4 8 16 32 64, увеличивая вдвое значение переменной счетчика на каждом шаге.

6. Правилен ли следующий оператор? Если нет, то почему? Если да, то что он делает?

int х = (1,024);

А правилен ли такой оператор?

int у;

у = 1,024;

7. Чем отличается cin >> ch от cin.get(ch) и ch = cin.get() с точки зрения ввода?

8. Приведены два фрагмента кода для подсчета пробелов и переводов строк:

// Версия 1

while (cin.get(ch)) // завершение по eof

{

if (ch == ' ')

spaces++;

if (ch == '\n')

newlines++;

}

// Версия 2

while (cin.get(ch)) // завершение по eof

{

if (ch == ' ')

spaces++;

else if (ch == '\n' )

newlines++;

}

Какие преимущества (если они есть) у второй формы перед первой?

9. Какой эффект даст замена в листинге выражения ++ch на ch+1?

#include <iostream>

int main()

{

char ch;

std::cout << "Type, and I shall repeat.\n";

std::cin.get(ch);

while(ch != '.')

{

if (ch = '\n')

std::cout << ch;

else

std::cout << ++ch;

std::cin.get(ch);

}

std::cout << "\nPlease excuse the slight confusion.\n";

return 0;

}

10. Изучите следующую программу:

#include <iostream>

using namespace std;

int main()

{

char ch;

int ct1, ct2;

ct1 = ct2 = 0;

while ((ch = cin.get()) != '$' )

{

cout << ch;

ct1++;

if (ch = '$')

ct2++;

cout << ch;

}

cout << "ct1 = " << ct1 << ", ct2 = " << ct2 << "\n";

return 0;

}

Предположим, что вы вводите следующие две строки, нажимая клавишу <Enter> в конце каждой строки:

Hi!

Send $10 or $20 now!

Каким будет вывод?

11. Напишите программу, которая запрашивает целое число и затем отображает его в десятичной, восьмеричной и шестнадцатеричной формах. Отобразите все формы в одной и той же строке, в полях шириной по 15 символов, с применением префиксов C++ для оснований систем счисления.

12. Напишите программу, которая запрашивает следующую информацию и форматирует ее, как показано ниже:

Enter your name: Billy Gruff

Enter your hourly wages: 12

Enter number of hours worked: 7.5

First format:

Billy Gruff: $ 12.00: 7.5

Second format:

Billy Gruff : $12.00 :7.5

13. Пусть имеется следующая программа:

#include <iostream>

int main()

{

using namespace std;

char ch;

int ct1 = 0;

cin >> ch;

while(ch != 'q')

{

ct1++;

cin >> ch;

}

int ct2 = 0;

cin.get(ch);

while(ch != 'q')

{

ct2++;

cin.get(ch);

}

cout << "ct1 = " << ct1 << "; ct2 = " << ct2 << "\n";

return 0;

}

Что она напечатает, если получит следующий ввод:

I see a q<Enter>

I see a q<Enter>

Здесь <Enter> означает нажатие одноименной клавиши.

14. Оба следующих оператора читают и отбрасывают символы, вплоть до конца строки, включая его. Чем различается их поведение?

while (cin.get() != '\n')

continue;

cin.ignore(80, '\n');

15. Постройте логические выражения для представления перечисленных ниже условий.

а. weight больше или равно 115, но меньше 125.

б. ch равно q или Q.

в. х - четное, но не равно 26.

г. х - четное, но не кратно 26.

д. donation находится в диапазоне 1000-2000 или guest равно 1.

е. ch - буква в нижнем или верхнем регистре. (Предполагается, что буквы нижнего регистра кодируются последовательно и буквы верхнего регистра также кодируются последовательно, но между буквами нижнего и верхнего регистров имеется промежуток.)

16. Постройте условное выражение, которое эквивалентно нахождению модуля значения переменной.

17. Перепишите следующий фрагмент с применением switch:

if (ch == 'А')

a_grade++;

else if (ch == 'B' )

b_grade++;

else if (ch == 'C')

c_grade++;

else if (ch == 'D')

d_grade++;

else

f_grade++;

18. Приведен следующий фрагмент кода:

int line = 0;

char ch;

while (cin.get(ch))

{

if (ch == 'Q')

break;

if (ch != '\n')

continue;

line++;

}

Перепишите этот код так, чтобы в нем не использовались операторы break и continue.

19. Напишите программу, которая подсчитывает количество символов в строке вплоть до первого встретившегося символа $.

20. Напишите программу, которая копирует клавиатурный ввод в файл.