2. Определить результат (true или false) двух тестов: 1) int x=…, y=…; 2) int x=…, y=…; для каждого из нескольких (например, пяти) логических выражений (см. [Аленский Н. А. Основы программирования на языке С++], стр.21 <=9 баллов и стр. 117 – 119 на 10 баллов).
В вариантах по-разному расставлены скобки и меняются логические операции и операции сравнения. Может использоваться и операция ! (отрицание).
3. Запишите номера логических выражений, для которых получим true, если int x=…, y=…;
Логические выражения см. [Аленский Н. А. Основы программирования на языке С++], стр.21 <=9 баллов и стр. 117 – 119 на 10 баллов.
4 Запишите в указанном порядке значения x, y, r, которые получатся после выполнения следующих операторов:например, 1) float x=…, y=…, …; r= !(x>1 || y<=0) ? r=++x: r=y--;
или в цикле: 2) float x,y; cin>>x>>y; while (x!=1000 && y!= 1000)
Записать результат, если последовательно ввести 0 2 2 0 2 2 1 -5 1000 2. Используется тернарная операция и операции ++ и --.
На 10 баллов вложенная тернарная операция и более сложные логические выражения [Аленский Н. А. Основы программирования на языке С++], стр.21 <=9 баллов и стр. 117 – 119 на 10 баллов.
5 Что будет выведено, если последовательно введём … (указана конкретная числовая последовательность)
int m; do { cin>>m; if (m== -1) break;
switch (m)
{ case 1: case 2: case 3: cout<<endl<<2<<" "; break;
case 4: case 5: cout<<endl<<3<<" "; break;
case 6: case 7: case 8: cout<<endl<<4<<" "; break; case 9: case 10: cout<<endl<<5<<" "; break;
default: cout<<endl<<"Error"<<" ";
} } while (1);
В других вариантах где-то нет break.
Оператор switch может быть с ошибкой . Найти ошибки. Например:
В каких строках ( //1 -- //6) есть ошибки компиляции?
#define ONE 1
int m; const n=4; float const k=1; cin>>m;
switch (m+k) //1
{ case ONE: //2
case т: cout<<endl<<2<<" "; break; //3
case ONE+2: cout<<3<<” “; //4
case n: cout<<4<<" "; //5
case k+n: cout<<"Five"<<" "; break; } //6
В каких строках ( //1 -- //7) есть ошибки компиляции?
char C, B='B'; C=getch();
switch (C) //1
{ case 'A': cout<<"One"<<" "; //2
case 'B': switch (B) //3
{ case 'A': cout<<endl<<" BA "; break; //4
case B : cout<<endl<< " BB "; break; //5
case ‘C’ : cout<< endl<<" BC "; break; //6
}
case ‘C’: cout<<" C "; } //7
Оператор switch может быть в цикле.
6. Определить результат. Если программа будет выполняться, записать, что будет выведено. В противном случае указать, в каких строках (//1 — //5) будет ошибка.
const n=10; int K=0; int a[n]={1, 2, -3, -4, -5 , 6, 7, 8, 90, -100 }; //1
for (int i=0; i<n; i++) if (a[i]<0) K++; cout<<K<<" "; //2
int i=0; K=0; //3
for ( ; i<n ; ) //4
{ if (a[i]<0) K++; cout<<K<<" "; i++; } //5
В вариантах по-разному записан цикл for (см. лекцию 4), разная расстановка {}., параметр цикла может меняться внутри цикла, например, так
if (a[--i]<0) K++; cout<<K<<" ";
Вместо for может быть оператор while или do… while.
7.Записать, что будет выведено на экран после выполнения последовательности операторов:
1)long int r=…, a[5]={…}, i=0;
do { r*=a[i++]; cout<<r<<" "<<i<<" " ;
} while (i<5); cout<<endl<<i;
2) long int r=…, a=…, b=…; while (r<a) r*=++b; cout<<r<<" "<<b;
Внутри цикла может быть break или continue.
По-разному расставлены скобки {} и используются операции ++(--) справа или слева.
8 Записать номера правильных утверждений:
1) В операторе while значения некоторых переменных, записанных в выражении в круглых скобках, должны быть определены до входа в цикл.
2) В операторе do … while значения всех переменных, записанных в выражении в круглых скобках после ключевого слова while, должны быть определены до входа в цикл.
3) В операторе while значения некоторых переменных, записанных в выражении в круглых скобках после ключевого слова while, должны меняться в теле цикла так, чтобы на каком-нибудь этапе выражение стало ложным.
4) Тело оператора while выполняется всегда, как минимум, один раз.