Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!