Задачи и упражнения


1. Сравнить оператор for c аналогичным оператором языка Pascal.

2. Как будет работать оператор в следующих вариантах:

/*6*/ for ( Sum= i=0; i<5; Sum+=a[++i] ) ;

cout<<”\nVariant6 “<<Sum;

/*7*/ for ( Sum=0, i=-1; i<4; Sum+=a[++i] ) ;

cout<<”\nVariant7 “<<Sum;

3. Сравнить несколько вариантов, отличающихся наличием скобок и их расстановкой:

a) for (int I=0; I<n; I++)

if (a[I]>0)

K++;

cout<<”K=”<<K;

b) for (int I=0; I<n; I++)

{ if (a[I]>0)

K++;

}

cout<<”K=”<<K;

c) for (int I=0; I<n; I++)

{ if (a[I]>0)

K++;

cout<<”K=”<<K;

}

d) for (int I=0; I<n; I++)

if (a[I]>0)

{ K++;

cout<<”K=”<<K;

}

e) for (int I=0; I<n; I++)

if (a[I]>0)

K++;

else cout<<”K=”<<K;

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

main()

{ float x, y, res; char c; bool er;

clrscr(); 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();

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;

} // end of switch

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

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

} // end of while

return 0;

}

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

int main()

{ int k=0; float x,y;

clrscr(); 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;

}

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

cout<<'\n'; // Вариант 1

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

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

cout<<endl; // Вариант 2

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

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

cout<<endl; // Вариант 3

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<<' ';

}

7. Последовательно ввести значения x, пока не введем 1000. Для каждого из них вычислить r = sin(x), если 0 < x < p; r = x3, если –p <= x < 0; r = x2, если 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<Pi && x>0) 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; }

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

main()

{ clrscr();

long int p=1, fact=1; int 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;

}

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

main()

{ long int a; int e_exit; int maxdig=0;

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

while (a)

{ int d; d = a%10;

if (d>maxdig) maxdig = d;

a = a/10;

}

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

getch(); return 0;

}

10. Вычислить бесконечную сумму ряда с заданной точностью:

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

int main()

{ clrscr(); double x ,y, g, i, e;

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

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

g=y=1.0 / 2.0 * x;

for(i=4; fabs(g)>e; i+=2)

{ g=g*(-1)*x/i; y=y+g;

}

y++; cout<<y;

getch(); return 0;

}

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

main()

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

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

} while (r<a);

getch(); return 0; }

а) определить результат работы этой программы;

б) что изменится, если после оператора do удалить фигурные скобки?;

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

r *= b и cout<<r<<" ";

12. Цикл for(I=10; I>0; I– –) cout << I*I<<” “ записать с помощью следующих операторов: a) while; б) do…while.

13. Для заданного n вычислить

.

14. Вычислить приближенно значение бесконечной суммы

с точностью e, используя следующие операторы: a) for; б) while; в) do … while.

15. Вывести таблицу значений функции y = при изменении x от u до v с шагом h = (v u)/(n – 1), если u, v, n заданы.

16. Для натурального числа найти первую цифру и сумму его цифр.

17. Определить, является ли целое число симметричным, т. е. таким числом, которое одинаково читается слева направо и справа налево (палиндром, перевертыш). Например, числа 123321, 202, 9889, 5555, 8 — палиндромы.

18. Определить, является ли целое число простым.

19. Перевести целое число из десятичной системы счисления в двоичную систему счисления, используя алгоритм деления на 2.

20. Перевести целое число из десятичной системы счисления в шестнадцатеричную, используя алгоритм деления на 16.



Дата добавления: 2016-07-18; просмотров: 2433;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.017 сек.