Числовые типы. оператор присваивания.




1. Записать на С++ следующие числа (в дробной части указывать до 4 цифр):


a) 5!;

b) LXIV;

c) 6,38;

d) -0,7(4);

e) 11/4;

f) -1/6;

g) Sqrt(2);

h) Pi;

i) 5*106;

j) -24,8*10-7;

k) 106;

l) 1/100000.

Результат:


 

#include <iostream>

#include <conio.h>

 

using namespace std;

 

void main()

{

int a1 = 1 * 2 * 3 * 4 * 5, b1 = 64, i1 = 5E6, k1 = 1E6;

double c1 = 6.38, d1 = -0.7 * 4, e1 = 11/4.0, f1 = -1/6.0,

g1 = sqrt(2), h1 = 3.1415, j1 = -24.8E-7, l1 = 1/100000.0;

cout << a1 << "\n" << b1 << "\n" << c1 << "\n" << d1 << "\n" << e1 << "\n";

cout.precision(4);

cout << f1 << "\n";

cout << g1 << "\n" << h1 << "\n" << i1 << "\n" << j1 << "\n" << k1 << "\n" << l1

<< "\n";

_getch();

}

 

 

2. Записать следующие числа без десятичного порядка:

a) -0.00027E+4;

b) 666E-3;

c) 1E1.

void main()

{

double a2 = -0.00027E+4, b2 = 666E-3;

int c2 = 1E1;

cout << a2 << " " << b2 << " " << c2;

_getch();

}

 

Результат:

 

 

Ошибочные записи чисел: a (6), b (0), c(7.0), d (7), f (3), h (1E-1), k (2E5), l (1E1).

 

4. Есть ли разница (с точки зрения языка С++) между числами 100 и 100.0, между 20 и 2E1? По какому признаку (величине или форме записи) целые числа отличаются от вещественных?

Ответ: Разница между целыми (Int и подобные) и вещественными (double и подобные) в том, что вещественные имеют большей числовой разряд, занимают больше ячеек памяти и допускают запись в десятичных дробях.

5. Привести примеры положительного и отрицательного целых чисел, не представимых в C++.

Ответ: Самое длинное целое положительное и отрицательное число в C++ будет при типе Longint (от -2147483648 до 2177483647). Все числа, за этими пределами не представимы в C++. Например -2200000000 и 2200000000.

 

6. Можно ли утверждать, что в C++ значение выражения (1/3)*3-1 равно нулю?


void main()

{

double x = (1 / 3) * 3 - 1;

cout << x;

_getch();

}

void main()

{

double x = (1 / 3.0) * 3 - 1;

cout << x;

_getch();

}


Результат:

Результат:


В С++ есть большая разница между записями 3 и 3.0. При делении двух целых чисел будет целый ответ, поэтому 1/3 = 0, а (1/3)*3-1 = -1. Для получения правильного ответа обязательно нужна запись 1.0 в числителе или 3.0 в знаменателе.

7. Почему при записи формул на C++ их «вытягивают» в линию? Почему знак умножения всегда выписывают явно (например, пишут a*t, а не at)?

Ответ: C++ читает лишь одноуровневые уравнения, а если не поставить знак между действиями, что C++ будет из читать не как a*t, а как отдельную переменную at;

8. Записать на C++ следующие формулы:


a) a+bx+cyz;

b) [(ax-b)x+c]x-d;

c) ab/c+c/ab;

d) ((x+y)/a1)*(a2/(x-y));

e) 104alpha-3*(1/5)betta;

f) (1+x/2!+y/3!)/(1+2/(3+xy)).

 

В C++ они будут выглядеть так:

a) a+b*x+c*y*z;

b) ((a*x-b)*x+c)*x-d;

c) A*b/c+c/a*b;

d) ((x+y)/a[1])*(a[2]/(x-y));

e) 1E4*alpha-3*(1/5)*betta;

f) (1+x/(1*2)+y/(1*2*3))/(1+2/(3+x*y))


9. Записать в общепринятой форме:


a) (p+q)/(r+s)-p*q/(r*s);

b) 1E3+betta/(x2-gamma*delta).

 

 

Ответ:

a)

 

b)


 

10. Вычислить: 24/(3*4)-24/3/4+24/3*4

void main()

{

double x = 24 / (3 * 4) - 24 / 3 / 4 + 24 / 3 * 4;

cout << x;

_getch();

}

Результат: 32.

11. Почему в C++ факториал от 10 нельзя записать в виде 10! Или 1*2*3*…*10?

Ответ: В C++ отсутствует знак “!”. Выполнить вычисление факториала можно через перемножение его составляющих. Или же составить отдельную программу для этого.

12. Сколько операций выполняется при вычислении выражения (x+1/2)*(y+7/10)-3/4? Как сократить число операций?

Ответ: Выполняется 7 операций. Чтобы сократить число операций надо заменить деление на десятичные дроби (x+0.5)*(y+0.7)-0.75

13. Почему в C++ аргумент функции всегда записывают в скобках (например, пишут ln(5), а не ln5)?

Ответ: Если написать аргумент функции без скобок, то C++ будет распознавать не Логарифм, а отдельную переменную «Ln5».

 

 

14. Записать на C++ следующие формулы:

 

для


  1. (1+x)2;
  2. Sqrt(1+x2);
  3. |a+bx|;
  4. Sin 8;
  5. cos2x3;
  6. tg x;
  7. log2(x/5);
  8. ch x;
  9. arcctg 103;
  10. arcsin x;

 

1) pow(1+x,2)

2) sqrt(1+Pow(x,2))

3) abs(a+b*x)

4) sin(8)

5) pow(cos(exp(log(x)*3)),2)

6) sin(x)/cos(x)

7) log(x/5)/log(2)

8) (exp(X)+exp(-X))/2

9) 1/atan(epx(log(10)*3))

10) atan(x/sqrt(1-Pow(x,2)))


15. Записать на C++ следующие формулы (x>0):


a) x5;

b) x100;

c) 21+x;

d) xsqrt(2);

 

Ответ:

a) pow(x,5)

b) pow(x,100)

c) pow(2,1+x)

d) pow(x,sqrt(2))


Для корректной работы нужна библиотека math.h

 

16. Как записать на C++ величину основания натуральных логарифмов (число e), если Вы забыли цифры этого числа? А как записать число Pi в подобной ситуации?

 

Ответ: Число Пи можно записать как PI, предварительно записав в константы выражение: const double PI = std::atan(1.0)*4; А Экспоненту можно записать как e:=exp(1), подключив библиотеку <math.h

>.

17. Как записать на C++ синус от x градусов?

Ответ: Sin(x*PI/180)

18. Как записать на C++ косинус от x градусов?

Ответ: Cos(x*PI/180)

19. Записать в общепринятой форме:

a) (-b+sqrt(pow(b,2)-4*a*c))/(2*a);

b) a/b*(c+d)-(a-b)/b/c+1E-8;

c) x1+arctan(y2-alpha)/2*abs(x4-ln(5)*y5)/exp(-1)

Ответ:

 

a)

 

b)

 

c)

 

 

20. Записать на C++ соответствующие операторы присваивания:

a) y=1+x+x2/2!+x3/3!+x4/4!;

b) f=6.673*10-8*(m1m2)/r2;

c) b=e|x-y|+ln(1+e)log2tg2

 

Ответ:

a) y:=1+x+Pow(x,2)/(1*2)+ exp(ln(x)*3)/(1*2*3)+ exp(ln(x)*4)/(1*2*3*4)

b) f:=6.673*10E-8*(M[1]*M[2])/Pow(r,2)

c) b:=exp(Abs(x-y))+Ln(1+exp(1))*ln(ln(sin(2)/cos(2))/ln(2))

 

Логические операции


1.. Записать на C++ отношение, истинное при выполнении указанного условия и ложное в противном случае:


а) целое k делиться 7;

void main()

{

int k;

cin >> k;

if (k % 7 == 0) cout << "Yes";

else cout << "No";

_getch();

}

б) уравнение ax2+bx+c=0 (a≠0) не имеет вещественных корней;

void main()

{

int a,b,c;

cin >> a >> b >> c;

if (pow(b,2) - 4 * a * c < 0) cout <<1;

else cout <<0;

_getch();

}

 

 

в) точка (x,y) лежит все круга радиуса r с центром в точке (1,0)

 

int Funf(int x, int y, int r)

{

int x0 = 1, y0 = 0;

if (pow((x - x0), 2) + pow((y - y0), 2) <= pow(r, 2)) return 1;

else return 0;

}

 

void main()

{

setlocale(LC_ALL, "RUS");

int x, y, r;

cout << "Введите данные:\n";

cin >> x >> y >> r;

if (Funf(x,y,r) == 1) cout << "Принадлежит";

else cout << "Не принадлежит";

_getch();

}

г) натуральное n является полным квадратом.

void main()

{

setlocale(LC_ALL, "RUS");

int n;

cin >> n;

double m = sqrt(n);

if (pow(trunc(m), 2) == pow(m, 2)) cout <<"да";

else cout << "нет";

_getch();

}

2. Вычислить значения выражений:


а) not odd(n) при n=0; Результат 1

void main()

{

setlocale(LC_ALL, "RUS");

int n = 0;

n =!(n % 2!= 0);

cout << n;

_getch();

}

б) t and (p mod 3=0) при t=true, p=101010; Результат 1

void main()

{

setlocale(LC_ALL, "RUS");

int t = 1, p = 101010;

t = t && (p % 3 == 0);

cout << t;

_getch();

}

 

 

в) (x*y<>0) and (y>x) при x=2, y=1;

Результат 0

void main()

{

setlocale(LC_ALL, "RUS");

int x = 2, y=1;

x = (x*y!=0) && (y>x);

cout << x;

_getch();

}

г) (x*y<>0) or (y>x) при x=2, y=1;

Результат 1

void main()

{

setlocale(LC_ALL, "RUS");

int x = 2, y=1;

x = (x*y!= 0) || (y > x);

cout << x;

_getch();

}

 


д) a or (not b) при a=false, b=true. Результат 0

void main()

{

setlocale(LC_ALL, "RUS");

int a = 0, b=1;

a = a ||!b;

cout << a;

_getch();

}



 

 


3 Записать на C++ выражение, истинное при выполнении указанного условия и ложное в противном случае:


а) 0<x<1;

bool main()

{

setlocale(LC_ALL, "RUS");

double x;

bool y;

cin >> x;

if ((0 < x) && (x < 1)) return 1;

else return 0;

_getch();

}

б) x=max(x,y,z);

bool main()

{

setlocale(LC_ALL, "RUS");

int x, y, z;

cin >> x >> y >> z;

if ((x > y) && (x > z)) return 1;

else return 0;

_getch();

}

 

в) x≠max(x,y,z) (операцию not не использовать);

bool main()

{

setlocale(LC_ALL, "RUS");

int x, y, z;

cin >> x >> y >> z;

if ((x < y) && (x < z)) return 1;

else return 0;

_getch();

}


г) хотя бы одна из логических переменных a и b имеют значение true.

bool main()

{

setlocale(LC_ALL, "RUS");

bool x, y;

cin >> x >> y;

if ((x == 1) || (y == 1)) return 1;

else return 0;

_getch();

}

д) обе логические переменные a и b имеют значение true.

bool main()

{

setlocale(LC_ALL, "RUS");

bool x, y;

cin >> x >> y;

if ((x == 1) && (y == 1)) return 1;

else return 0;

_getch();

}


 

 

4. Объяснить ошибки в следующих записях:

а) 1 and 0;

Операция and на C++ выглядит так: &&.

б) true + false;

В логическом типе нельзя использовать операцию +.

в) true<0;

Операция '<' не применима к типам bool.

г) not 2 = 5;

Выражение должно быть в скобках (!(2=5))

д) x>0 or y = 4;

Чтобы компилятор разобрал написанное, должны стоять скобки ((x>0) || (y == 4))

е) not not b or or d.

Повторение or не имеет смысла, а!! b= b.

5. Указать порядок выполнения операций при вычислении выражения:


а) a and b or not c and d;

1. Not c

2. A and b

3. (Not c) and d

4. (a and b) or (not c and d)

 

 

б) (x>=0) or t and odd(x) or (y*y<>4)

1. x >= 0

2. y * y

3. y*y <> 4

4. t and odd(x)

5. (x>=0) or t and odd(x)

6. (x>=0) or t and odd(x) or (y*y<>4)


6. Вычислить следующие выражения при a=true и b=false:


 

а) a or b and not a;

б) (a or b) and not a;

в) not a and b;

г) not (a and b).

 

Результат:

a) True

b) False

c) False

d) True


 

7. Записать на C++ выражение, истинное при выполнении указанного условия и ложное в противном случае:

а) x принадлежит отрезку [0,1];

б) x лежит вне отрезка [0,1];

в) x принадлежит отрезку [2,5] или [-1,1];

г) x лежит вне отрезков [2,5] и [-1,1];

д) каждое из чисел x,y,z положительно;

е) хотя бы одно из чисел x,y и z положительно;

ж) ни одно из чисел x,y и z не является положительным;

з) только одно из чисел x,y и z положительно;

и) логическая переменная a имеет значение true, а логическая переменная b имеет значение false;

к) год с порядковым номером y является високосным (год високосный, если его номер кратен 4, однако из кратных 100 високосными являются лишь кратные 400; например, 1700, 1800 и 1900 – невисокосные годы, а 2000 – високосный).

8. Нарисовать на плоскости (x, y) область, в которой и только в которой истинно указанное выражение:

а) (y>=x) and (y+x>=0) and (y<=1);

б) (pow(x)+pow(y)<1) or (y>0) and (abs(x)<=1);

в) (trunc(y)=0) and (round(x)=0).

9. Записать на C++ выражение, истинное при выполнении указанного условия и ложное иначе:

а) целые n и k имеют одинаковую четность;

б) только одна из логических переменных a и b имеет значение true;

в) только одна из логических переменных a,b и c имеет значение true.

10. Нарисовать на плоскости (x, y) область, в которой и только в которой истинно указанное выражение:

а) (abs(x)<=1)>(abs(y)>=1);

б) (pow(x)+pow(y)<=4)=(y<=x)

11. Преобразовать указанное выражение к виду, не содержащему знаков отношения (a и b-логические переменные):

а) a<b;

б) a=b;

в) (a<b)=a

 

 

Вывод: Я научился писать программы с использованием простейших операций, выражений, простейшего ввода-вывода.

 



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


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