
- •Справочный материал Общая структура программы
- •Основные типы данных
- •Виды переменных
- •Статические и автоматические классы памяти
- •Статическая и внешняя область действия
- •Операция присваивания
- •Операции инкремента и декремента
- •Операции распределения памяти
- •Стандартные математические функции
- •Условный оператор
- •Указатели и ссылки
- •Массивы
- •Структура
- •Перечисление
- •Задания для самоконтроля
- •Тестовые задания
- •Контрольные вопросы
- •Рекомендуемая литература
- •Оглавление
- •Степович-Цветкова Галина Сергеевна
- •153025 Иваново, ул. Ермака, 39
Указатели и ссылки
Указатель – это переменная, значением которой является адрес другой переменной или функции. |
Ссылка – это второе имя для другой переменной. |
type * name; name – переменная-указатель, указывает на переменную типа type. |
type & name = name2; name – переменная-ссылка, второе имя переменной name2 типа type. |
Массивы
Массив – структурированный тип данных, состоящий из фиксированного числа элементов одного типа. | |
Статическое объявление | |
Одномерный массив (вектор): тип имя_массива[n]; n - количество элементов, нумерация: от 0 до n-1. |
Двумерный массив (матрица): тип имя_массива [n][m]; n – количество строк (0…n-1), m – кол-во столбцов (0…m-1). |
В С++ можно описать многомерные массивы: тип имя_массива [n1][n2]…[nk]; | |
Динамическое объявление | |
Одномерный массив (вектор): тип* имя_массива = new тип[n];
|
Двумерный массив (матрица): тип* имя_массива = new тип[n*m]; |
или | |
тип** имя_массива; имя_массива =new тип*[n]; for (int i=0;i<n;i++) имя_массива[i]=new тип[m]; |
Структура
Структура – конструкция языка, предназначенная для логического и физического объединения данных произвольных типов. |
struct <имя_структуры> { члены (элементы) структуры }; |
Перечисление
Перечисление – это набор именованных целых констант. |
enum тег {список перечисления} список переменных; Здесь тег и список переменных не являются обязательными, но что-то одно из них должно присутствовать. |
Задания для самоконтроля
1. Объявите целочисленные переменные х и у, введите их значения с клавиатуры.
2. Напишите команду вывода на экран строки «Значение переменной равно» и значения переменной х, предварительно объявив вещественнозначную переменную х.
3. Опишите действие следующей строки программы: cin>>x++;
4. Опишите действие следующей строки программы: cout<<--y;
5. Напишите строку динамического объявления одномерного массива.
6. Напишите строку удаления массива, объявленного динамически.
7. Напишите на языке C++:
если элемент а равен нулю или не больше -2, то увеличить его на 1, иначе заменить числом 5.
8. Напишите на языке C++:
если элемент а не равен нулю и меньше 10, то присвоить ему значение 5, иначе вывести на экран.
9. Напишите оператор switch для вывода прописью значения целочисленной переменной, принимающей значения от одного до пяти.
10. Организуйте ввод с клавиатуры элементов массива.
11. Организуйте вывод элементов массива на экран.
12. Напишите на языке C++:
пока элемент а не равен 9 уменьшать его на 1 и выводить на экран.
13. Напишите на языке C++:
Увеличивать элемент а на 1, пока он меньше 100.
14. Чему будет равно значение переменных i, j, k?
int i=3, j, k;
j=i++;
k=--j;
15. Как изменится массив а?
for (int i=0, j=n-1; i<n/2; ++i, --j)
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
16. int count;
//…
void f()
{
int count=::count; // поясните действие в этой строке
//…
}
17. Объясните действие функции:
int max(int a, int b) { return a>b? a : b;}
18. Объясните действие оператора:
while(*p++=*q++);
19. Объясните действие оператора:
for (int i=0; i<10; i++)
if (guess==a[i])
{
cout<<”Congratulations!/n”;
break;
}
if (i==10)
cout<<”Sorry…/n”;
20. Объясните действие оператора:
for (int i=0; i<10; i++)
{
if (i==4)
continue;
//…
}
21. Что означают пустые скобки после имени функции?
22. Сколько значений может возвращать функция?
23. Истинно ли следующее утверждение: когда функция возвращает значение, ее вызов можно ставить справа от знака операции присваивания?
24. Функция, не возвращающая значения, имеет тип возвращаемого значения _______.
25. Напишите функцию просчета периметра треугольника по заданным сторонам.
26. Напишите функцию вычисления синуса заданного угла.
27. Приведите пример перегрузки функции.
28. Напишите структуру «Комната», содержащую поля ширины и длины. В основном теле программы создайте переменную типа Комната, ее полям присвойте значения 3 и 5.
29. Создайте структуру «Квартира», содержащую поля количества комнат и общую площадь. В основном теле программы создайте переменную типа Квартира, ее полям присвойте значения 4 и 100.
Ответы:
1. int x, y;
cin>>x>>y;
2. float x;
cout<<”Значение переменной равно ”<<x;
3. Оператор >> вводит с клавиатуры (стандартный поток ввода) значение переменной x, затем значение этой переменной увеличивается на 1.
4. Значение переменной y уменьшается на 1, затем оператор << выводит на экран (стандартный поток вывода) значение переменной y.
5. Например, int *mas=new int[5];
6. delete[] mas;
7. if (a==0 || a<= -2) a++;
else a=5;
8. if (a!=0 && a<10) a=5;
else cout<<a;
9. switch (a)
{ case 1: cout<<”Один”; break;
case 2: cout<<”Два”; break;
case 3: cout<<”Три”; break;
case 4: cout<<”Четыре”; break;
case 5: cout<<”Пять”; break;
default: cout<<”Неверное значение”; break;
}
10. Например, for (int i=0; i<n;i++) cin>>mas[i];
11. Например, for (int i=0; i<n;i++) cout<<mas[i];
12. while (a!=9) cout<< --a;
13. do {a++;} while (a<100);
14. i=4, j=2, k=2.
15. Элементы в массиве будут расположены в обратном порядке.
16. Локальной переменной count будет присвоено значение глобальной переменной с таким же именем.
17. Функция возвращает максимум из двух целых чисел.
18. Копирование массива q в массив p.
19. Если в массиве а встретится значение, равное guess, на экран выведется «Congratulations!», дальнейший просмотр массива прекратится. Если значение guess в массиве найдено не будет, на экране появится «Sorry…».
20. Действия в цикле выполняются 9 раз при значениях переменной i, равной от 0 до 3 и от 5 до 9.
21. Отсутствие формальных параметров.
22. Ноль или одно.
23. Да.
24. void.
25. double perim(double a, double b, double c)
{ return a+b+c; }
26. double sinus(double angle)
{ return sin(angle); }
27. int max(int a, int b);
int max(int a, int b, int c);
double max(double a, double b);
28. struct room{
double width;
double length;
}
int main(){
…
room r;
r.width=3;
r.lenght=5;
…
}
29. struct flat{
int room;
double sq;
}
int main(){
…
flat f;
f. room =4;
f.sq=100;
…
}
Задачи
Вариант №1
По заданной последовательности: 2, 9, 37, 149, 597, ... (an=4*an-1+1) и заданному числу n, вычислить сумму первых n элементов последовательности (без использования массива).
Дан целочисленный массив с n элементами. В массиве каждый элемент, модуль которого при делении на p дает в остатке q, заменить нулем.
Написать функцию, которая выбирает из трех элементов минимальный, и вызвать ее в основном теле программы. Результат вывести на экран.
Вариант №2
По заданной последовательности: 2, 5, 26, 677, ... (an= an-12+1) вычислите сумму элементов последовательности, меньших 10000 (без использования массива).
Дан целочисленный массив с n элементами. В заданном массиве определите сумму минимального и максимального элементов.
Напишите функцию, которая меняет местами значения двух переданных ей элементов, и организуйте ее вызов в основном теле программы. Результат выведите на экран.
Вариант №3
Даны последовательность чисел 1/2, 1/9, 1/28, ..., 1/(n3+1), ... и x – достаточно малое положительное число. Найдите порядковый номер и значение члена этой последовательности, меньшего, чем x (без использования массива).
Дан целочисленный массив с n элементами. Получите удвоенную сумму всех положительных членов последовательности. Если таких элементов в последовательности нет, выведите соответствующее сообщение.
Напишите функцию решения линейного уравнения вида ax+b=0 и организуйте ее вызов в основном теле программы. Результат выведите на экран.
Вариант №4
Даны последовательность чисел 2, 9, 28, ..., (n3+1), ... и число x. Найдите порядковый номер и значение первого члена этой последовательности, большего x (без использования массива).
Дан вещественнозначный массив с n элементами. Найдите количество тех элементов, которые больше нуля, но меньше единицы.
Напишите функцию для вычисления длины отрезка на плоскости по заданным точкам, ограничивающим этот отрезок, и организуйте ее вызов в основном теле программы. Результат выведите на экран.
Вариант №5
Даны действительное число а и число n. Вычислите a(a-n)(a-2n)(a-3n)…(a-jn), где |a-(j-1)n|<1000<=|a-jn| (без использования массива). Если j с требуемыми свойствами не существует, выведите соответствующее сообщение.
Дан вещественный массив с n элементами. Вычислите сумму элементов массива, расположенных между первым и вторым отрицательными элементами. Если таких элементов в последовательности нет, выведите соответствующее сообщение.
Напишите функцию для вычисления площади треугольника, заданного координатами его вершин на плоскости, и вызовите ее в основном теле программы. Результат выведите на экран.
Вариант №6
Дано действительное число а (a>1). Вычислите an такое, что an<=100<an+1 (без использования массива).
Дан вещественный массив с n элементами. Вычислите сумму модулей элементов массива, расположенных после первого элемента, равного нулю. Если таких элементов в последовательности нет, выведите соответствующее сообщение.
Напишите функцию для вычисления модуля векторного произведения двух векторов, заданных координатами на плоскости, и организуйте ее вызов в основном теле программы. Результат выведите на экран.
Вариант №7
Дано действительное число а (0<a<1). Вычислите an такое, что an-1>0,0005>an (без использования массива).
Дан вещественный массив с n элементами. Вычислите произведение элементов массива, расположенных после максимального по модулю элемента. Если таких элементов в последовательности нет, выведите соответствующее сообщение.
Напишите функцию для вычисления скалярного произведения двух векторов, заданных координатами в трехмерном пространстве, и организуйте ее вызов в основном теле программы. Результат выведите на экран.
Вариант №8
Вычислите
, гдеn такое, что a(n-1)<2,3027<a(n) (без использования массива).
Дан вещественный массив с n элементами. Вычислите сумму модулей элементов массива, расположенных после минимального по модулю элемента. Если таких элементов в последовательности нет, выведите соответствующее сообщение.
Напишите функцию для вычисления длины вектора (в трехмерном пространстве) по заданным координатам, и организуйте ее вызов в основном теле программы. Результат выведите на экран.