Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Osnovy_S.doc
Скачиваний:
11
Добавлен:
03.04.2015
Размер:
3.81 Mб
Скачать

Указатели и ссылки

Указатель – это переменная, значением которой является адрес другой переменной или функции.

Ссылка – это второе имя для другой переменной.

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

  1. По заданной последовательности: 2, 9, 37, 149, 597, ... (an=4*an-1+1) и заданному числу n, вычислить сумму первых n элементов последовательности (без использования массива).

  2. Дан целочисленный массив с n элементами. В массиве каждый элемент, модуль которого при делении на p дает в остатке q, заменить нулем.

  3. Написать функцию, которая выбирает из трех элементов минимальный, и вызвать ее в основном теле программы. Результат вывести на экран.

Вариант №2

  1. По заданной последовательности: 2, 5, 26, 677, ... (an= an-12+1) вычислите сумму элементов последовательности, меньших 10000 (без использования массива).

  2. Дан целочисленный массив с n элементами. В заданном массиве определите сумму минимального и максимального элементов.

  3. Напишите функцию, которая меняет местами значения двух переданных ей элементов, и организуйте ее вызов в основном теле программы. Результат выведите на экран.

Вариант №3

  1. Даны последовательность чисел 1/2, 1/9, 1/28, ..., 1/(n3+1), ... и x – достаточно малое положительное число. Найдите порядковый номер и значение члена этой последовательности, меньшего, чем x (без использования массива).

  2. Дан целочисленный массив с n элементами. Получите удвоенную сумму всех положительных членов последовательности. Если таких элементов в последовательности нет, выведите соответствующее сообщение.

  3. Напишите функцию решения линейного уравнения вида ax+b=0 и организуйте ее вызов в основном теле программы. Результат выведите на экран.

Вариант №4

  1. Даны последовательность чисел 2, 9, 28, ..., (n3+1), ... и число x. Найдите порядковый номер и значение первого члена этой последовательности, большего x (без использования массива).

  2. Дан вещественнозначный массив с n элементами. Найдите количество тех элементов, которые больше нуля, но меньше единицы.

  3. Напишите функцию для вычисления длины отрезка на плоскости по заданным точкам, ограничивающим этот отрезок, и организуйте ее вызов в основном теле программы. Результат выведите на экран.

Вариант №5

  1. Даны действительное число а и число n. Вычислите a(a-n)(a-2n)(a-3n)…(a-jn), где |a-(j-1)n|<1000<=|a-jn| (без использования массива). Если j с требуемыми свойствами не существует, выведите соответствующее сообщение.

  2. Дан вещественный массив с n элементами. Вычислите сумму элементов массива, расположенных между первым и вторым отрицательными элементами. Если таких элементов в последовательности нет, выведите соответствующее сообщение.

  3. Напишите функцию для вычисления площади треугольника, заданного координатами его вершин на плоскости, и вызовите ее в основном теле программы. Результат выведите на экран.

Вариант №6

  1. Дано действительное число а (a>1). Вычислите an такое, что an<=100<an+1 (без использования массива).

  2. Дан вещественный массив с n элементами. Вычислите сумму модулей элементов массива, расположенных после первого элемента, равного нулю. Если таких элементов в последовательности нет, выведите соответствующее сообщение.

  3. Напишите функцию для вычисления модуля векторного произведения двух векторов, заданных координатами на плоскости, и организуйте ее вызов в основном теле программы. Результат выведите на экран.

Вариант №7

  1. Дано действительное число а (0<a<1). Вычислите an такое, что an-1>0,0005>an (без использования массива).

  2. Дан вещественный массив с n элементами. Вычислите произведение элементов массива, расположенных после максимального по модулю элемента. Если таких элементов в последовательности нет, выведите соответствующее сообщение.

  3. Напишите функцию для вычисления скалярного произведения двух векторов, заданных координатами в трехмерном пространстве, и организуйте ее вызов в основном теле программы. Результат выведите на экран.

Вариант №8

  1. Вычислите , гдеn такое, что a(n-1)<2,3027<a(n) (без использования массива).

  2. Дан вещественный массив с n элементами. Вычислите сумму модулей элементов массива, расположенных после минимального по модулю элемента. Если таких элементов в последовательности нет, выведите соответствующее сообщение.

  3. Напишите функцию для вычисления длины вектора (в трехмерном пространстве) по заданным координатам, и организуйте ее вызов в основном теле программы. Результат выведите на экран.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]