Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Решения по С++(Слабженников).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
335.87 Кб
Скачать

1. *T1 2

2. *T2 4

3. *T4.1 5

4. *T4.2 6

5. T4.3 7

6. *T4.4 8

7. *T4.5 9

8. *Т4.6 10

9. Т4.7 11

10. Т4.8 12

11. *Т4.9 13

12. Т4.10 14

13. *Т6.1 15

14. *Т6.2 16

15. *Т6.3 17

16. *Т6.4 18

17. Т8 19

18. *Т9 20

19. Т10.1(a) 21

20. *T10.1(b) 22

21. *T10.1(с) 23

22. **T10.3 24

23. **T10.4 25

24. **T10.5(a) 26

25. **T10.5(b) 27

26. Т10.7(a) 28

27. Т10.7(b) 29

28. **Т10.8 30

29. **Т10.9(a) 31

30. **Т10.9(b) 32

31. Т10.12 33

32. Т11.4 34

33. T11.5 35

34. **Т11.6 36

35. Т11.7 37

36. Т12.1 38

37. Т12.2 39

38. Т12.3 40

Т13.1(a) 41

Т13.1(b) 41

Т13.1(c) 41

Т14.1 41

Т14.2 41

Т14.3 42

Т14.4 42

Т14.5 42

Т14.6 42

Т14.7 42

Т14.8 42

Т14.9 42

Т14.10 42

Т15.1 43

Т15.2 43

Т15.3 43

Т15.4 43

Т15.5 43

Т15.6 44

Т15.7 44

Пример: 44

Т15.8 45

Параболическая интерполяция 45

Т15.9 45

Т15.10 45

1.*T1

//Пример. Cтиль С.

/*Программа выводит

на экран числа:

2, 1.2 и 0.5*/

#include<stdio.h>

#include<conio.h>

Void main()

{

int z; float mp, v=0.5;

z=2;

mp=1.2;

printf("z = %i mp = %f v=%f",z,mp,v);

getch();

}

//Пример. Cтиль С++.

/*Программа выводит

на экран числа:

2, 1.2 и 0.5*/

#include<iostream>

using namespace std;

Void main()

{

int z; float mp, v=0.5;

z=2;

mp=1.2;

cout<<"z="<<z<<" mp="<<mp<<" v="<<v<<"\n";

cin.get();

}

Объявите переменную типа double, присвойте ей значение 3.14 и выведите её на экран.

Решение

В стиле С

#include<stdio.h> #include<conio.h> void main() { int z; float mp, v=0.5; double d; d = 3.14; z=2; mp=1.2; printf("z = %i mp = %f v = %f d = %f",z,mp,v,d); getch(); }

В стиле С++

#include<iostream> using namespace std; void main() { int z; float mp, v=0.5; double d; d = 3.14; z=2; mp=1.2; cout<<"z="<<z<<" mp="<<mp<<" v="<<v<<" d="<<d<<"\n"; cin.get(); }

2.*T2

Объясните результаты выполнения инструкций:

float z=2/5;

Объявляем переменную z типа float и присваиваем ей значение выражения 2/5 ;

z=2/5*3.14;

Переменной z присваиваем значение выражения 2/5*3.14 ;

z=3.14*2/5;

Переменной z присваиваем значение выражения 3.14*2/5;

int z=5;

Объявляем переменную z типа int и присваиваем ей 5;

int k=++z;

Объявляем переменную k типа int и присваиваем ей значение переменной z увеличенное на 1 ;

cout<<k;

Используя стандартный поток вывода cout выводим на экран значение переменной k.

int i=k++;

Объявляем переменную i типа int и присваиваем ей значение переменной k, после чего увеличиваем значение k на 1 ;

cout<<i;

Используя стандартный поток вывода cout выводим на экран значение переменной i.

cout<<z++;

Используя стандартный поток вывода cout выводим на экран значение переменной z, после чего увеличиваем значение z на 1 ;

cout<<++z;

Используя стандартный поток вывода cout выводим на экран значение переменной z, предварительно увеличенное на 1 ;

3.*T4.1

#include<stdio.h> #include<conio.h> int main() { float f=(1.f/3.f); // в операции используются константы типа float (f) double d=(1.l/3.l); // -//- типа double (l) long double l=(1.L/3.L); // -//- типа long double (L) printf("f = %23.21f\n",f); printf("d = %23.21lf\n",d); printf("l = %23.21Lf\n",l); getch(); return 0; } Загрузите программу на выполнение, и определите количество значащих цифр числа типа float, double и long double.

Программа вывела:

f = 0.333333343267440800000 d = 0.333333333333333310000 l = 0.333333333333333310000

Так как количество значащих цифр равняется числу цифр, образующих число, за исключением левых и правых нулей, то: для float количество значащих цифр после запятой равно 16, а для double и long double равно 17.

4.*T4.2

#include <iostream> using namespace std; int main() { float a=11.17, b=50.25; cout.setf(ios_base::fixed, ios_base::floatfield); cout << "a = " << a << "; b = " << b << "\n"; cout << "a + b = " << a + b << "\n"; return 0; } Примечание:

cout.setf(ios_base::fixed, ios_base::floatfield); Функция setf() сбрасывает флаги, указанные объединённым флагом floatfield (fixed и scientific) и устанавливается флаг fixed, фиксированного формата записи чисел. Если значение первого параметра функции setf не содержится во втором параметре, то флаг, указанный в первом параметре не будет установлен.

Почему результат сложения чисел 11.17 и 50.25 не равен 61.42? Как изменится результат, если в место типа float применить тип double?

При float

a = 11.170000; b = 50.250000 a + b = 61.419998

Такой результат получили потому, что у типа float для хранения числа используется меньшее количество разрядов.

При double

a = 11.170000; b = 50.250000 a + b = 61.420000

5.T4.3

#include <iostream> using namespace std; int main() { float a = 2.34E+22f; float b = a + 1.0f; cout << "a = " << a << "\n"; cout << "b - a = " << b - a << "\n"; return 0; } Загрузите программу на выполнение и объясните результат.

Результаты выполнения программы

a = 2.34e+022 b - a = 0 // так как

6.*T4.4

#include <iostream>

#include <limits>//#include <limits.h>#include <float.h>

#include<conio.h>

//using namespace std;