Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Упражнения и тесты



1. Дана программа:

main() { int r=1, a=200, b=2;

do { r*=b; cout<<r<<" "; } while (r<a);

getch(); return 0; }

а) что будет выведено?

b) как будет работать программа, если вместо r<a записать r>=a?;

c) проанализировать результат, если изменить порядок операторов

do { cout<<r<<" "; r *= b; } while (r<a);

2. Что будет выведено, если введём 4 9 6 11 -1?

main() { int m;

do { cin>>m; if (m==-1) break;

switch (m) {

case 1: case 2: case 3: cout<< 2;

case 4: case 5: cout<< 3; break;

case 6: case 7: case 8: cout<< 4;

case 9: case 10: cout<< 5; break;

default: cout<< "Error"; }

} while (1);

return 0; }

3. Что будет выведено?

int r=1, a=200, b=2;

while (r<a)

{ r*=++b; cout<<r<<" ";

}

cout<<endl<<b;

4. Что будет выведено?

int r=1, a=200, b=2;

do { r*=++b; cout<<(r++)<<" ";

} while (r<a);

cout<<endl<<(++b);

5. Что будет выведено, если ввести 0 2 2 0 2 2 1 -5 1000 2 1000 1000

float x, y; cin>>x>>y;

while (!(x==1000 && y== 1000)) //1

{ r=!(x>1 || y<=0)? ++x: y--;

cout<<x<<” “<<y<<” “<<r; cin>>x>>y; }

6. Дан код::

float x,y; cin>>x>>y;

while (x!=1000 && y!= 1000) //1

{ cout<<(y<x*x || y>3? x/y: x%y)<<" "; cin>>x>>y; }

Что будет выведено, если ввести 0 2 2 0 2 2 1 -5 1000 2?

Сравнить два заголовка цикла while двух последних упражнений.

7. Цикл for(I=10; I>0; I– –) cout << I*I<<” “;

записать с помощью a) while; б) do…while.

8. Сравнить оператор for в С++ и Pascal.

9. Записать номера правильных утверждений:

1) В операторе while значения всех переменных, записанных в выражении в круглых скобках, должны быть определены до входа в цикл.

2) В операторе do … while значения всех переменных, записанных в выражении в круглых скобках после ключевого слова while, должны быть определены до входа в цикл.

3) Пусть в цикле оператора while нет break. Тогда значения всех переменных, используемых в выражении в круглых скобках после ключевого слова while, должны меняться в теле цикла так, чтобы на каком-нибудь этапе выражение стало ложным.

4) Пусть в цикле оператора while нет break. Тогда значения всех переменных, используемых в выражении в круглых скобках после ключевого слова while, должны меняться в теле цикла так, чтобы на каком-нибудь этапе выражение стало истинным.

5) Пусть в цикле оператора while нет break. Тогда значения некоторых переменных, используемых в выражении в круглых скобках после ключевого слова while, должны меняться в теле цикла так, чтобы на каком-нибудь этапе выражение стало ложным.

6) Тело оператора while выполняется всегда, как минимум, один раз.

7) Тело оператора do … while выполняется всегда, как минимум, один раз.

Задачи

1. Запрограммировать простой калькулятор на четыре арифметических действия: сложение, вычитание, умножение, деление.

main() { float x, y, res; char c;

/* c — Однобайтная переменная символьного типа */

bool er; /* er — Однобайтная переменная логического типа со значением true (1) или false (0) */

cout<<"For EXIT the first number=1000 \n";

while (1) { er=false; cout<<"\nThe first number: "; cin>>x;

if (x == 1000) break;

cout<<"Operation: "; cin>>c;

/* или c=getchar(); или c=getch(); или c=getche(); (см. гл 5) */

cout<<" The second number:"; cin>>y;

switch (c)

{ case '+': res=x+y; break;

case '*': case '.': res=x*y; break;

case '–': case '_': res=x-y; break;

case '/': if (y!=0) res=x/y; else er=true; break;

default: er=true; } // The end of switch

if(er) cout<<" ERROR\n";

else cout<<x<<c<<y<<"="<<res<<endl;

} // The end of while

return 0; } // The end of main

2. Ввести координаты точек плоскости до тех пор, пока не введем точку с координатами (1000, 1000). Массивы не использовать. Найти количество точек, принадлежащих области из первой или третьей четверти, ограниченной окружностями радиуса 2 и 1 c центром в начале координат.

int main()

{ int k=0; float x,y; cout<<"x=1000, y=1000 --- exit\n"; cin>>x>>y;

while (! (x == 1000 && y==1000))

{ if ((x*x+y*y <= 4 && x*x+y*y >= 1)

&& (x>0 && y>0 || x<0 && y<0)) k++;

cin>>x>>y; /* Ввели координаты точки в цикле. */ }

cout<<k;

getch(); return 0; }

3. Вывести квадраты чисел от 11 до 99 по 10 чисел в строке.

// Вариант 1

cout<<'\n'; for (int i=11; i<=99; i++)

cout<<i*i<< (i% 10 == 0? '\n': ' ');

// Вариант 2

cout<<endl; for (int i=11; i<=99; i++)

printf("%6d%c", i*i, i%10 ==0? '\n':' ');

// Вариант 3

cout<<endl; for (int i=11; i<=99; i++)

{ printf("%6d",i*i);

/*if (i%10= =0) cout<< '\n'; else cout<<' '); или */

if (!(i%10)) cout<< '\n'; else cout<<' '; }

4. Последовательно ввести значения вещественного x, пока не введем 1000. Для каждого из них вычислить r= sin(x), если 0 < x < p; r = x3, если –p <= x < 0; r = x 2, если x < –2*p или x > 2*p; r = 0 — в остальных случаях.

#define Pi 3.1459

int main() { float x=0, r; cout<<"1000 -- exit"<<endl;

cout<<" x y\n";

while (x!=1000)

{ gotoxy(2, wherey()); cin>>x;

if (x>0 && x<Pi) r=sin(x);

else if (x<0 && x>=–Pi) r=x*x*x;

else if (x<–2*Pi || x>2*Pi) r=x*x; else r=0;

gotoxy(20, wherey()-1); cout<<r<<endl;

} return 0; }

5. Для заданного целого n в одном цикле вычислить n! и 2 n.

main() /* По умолчанию int main() */

{ int p=1, fact=1, n, b=2; cout<<"n<17 n= "; cin>>n;

for (int i=1; i<=n; i++) { p=p*b; fact=fact*i; }

cout<<b<<" ^ "<<n<<"="<<p<< endl;

cout<<n<<"! = "<<fact<<endl;

getch(); return 0; }

6. Найти наибольшую цифру целого десятичного числа:

main() { int a, maxdig=0;

cout<<"\na="; cin>>a; a=abs(a);

while (a) { int d= a%10; if (d>maxdig) maxdig = d; a = a/10; }

cout<<"The max digit: "<<maxdig;

getch(); return 0;}

7. Вычислить бесконечную сумму ряда с заданной точностью. Считать, что требуемая точность достигнута, если очередное слагаемое по модулю станет меньше, чем заданная точность e.

int main() { double x,y=1., g=1., i, e;

cout<<"x="; cin>>x; cout<<"Epsilon="; cin>>e;

for (i=1; fabs(g)>e; i+=2) { g*=(-1)*x*x/(i*(i+1)); y=y+g; }

cout<<”y=”<< y; getch(); return 0; }





Дата публикования: 2015-02-18; Прочитано: 341 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...