
- •Лабораторная работа 1
- •Порядок проведения работы
- •Работа с файлами.
- •- В меню File выбрать опцию Save As, ввести имя файла для сохранения. (использовать расширение .Cpp)
- •- Выделить в меню Run опцию Run.
- •Работа с help.
- •2 Содержание отчета
- •3 Индивидуальные задания
- •4 Вопросы к лабораторной работе
- •Breakpoints - показать
- •Лабораторная работа 2 структура программы на языке си программа ввода-вывода
- •1 Порядок проведения работы
- •2 Содержание отчета
- •3. Индивидуальные задания
- •4. Вопросы к лабораторной работе
- •Лабораторная работа 3
- •1. Порядок выполнения работы
- •2. Содержание отчета
- •3. Индивидуальное задание
- •4. Вопросы к лабораторной работе
- •Лабораторная работа 4 использование математических функций из math.H для вычислений
- •1. Порядок выполнения работы
- •2. Содержание отчета
- •3. Индивидуальное задание
- •4. Вопросы по лабораторной работе
- •Лабораторная работа 5 организация структуры программы. Операторы управления вычислительным процессом
- •1. Порядок выполнения работы
- •2. Индивидуальные задания
- •3. Содержание отчета
- •4. Вопросы по лабораторной работе
- •Лабораторная работа 6 классы памяти
- •1. Порядок выполнения работы
- •2. Индивидуальные задания
- •3. Содержание отчета
- •4. Вопросы по лабораторной работе
- •Лабораторная работа 7 указатели и массивы
- •1. Порядок выполнения работы
- •2. Индивидуальные задания
- •3. Содержание отчета
- •4. Вопросы по лабораторной работе
- •Лабораторная работа 8 структуры
- •1. Порядок выполнения работы
- •2. Индивидуальные задания
- •3. Содержание заданий
- •4. Содержание отчета
- •5. Вопросы по лабораторной работе
- •Лабораторная работа 9 работа с файлами
- •1. Порядок выполнения работы
- •2. Индивидуальные задания
- •3. Содержание отчета
- •4. Вопросы по лабораторной работе
- •Лабораторная работа 10 динамические структуры данных
- •1. Индивидуальные задания
- •2. Содержание отчета
- •3. Вопросы по лабораторной работе
- •Приложение
- •Однонаправленные связные списки
- •Двунаправленные связные списки
- •Список рекомендуемой литературы
- •Содержание
Лабораторная работа 7 указатели и массивы
ЦЕЛЬ РАБОТЫ: Изучить новые производные типы данных, такие как
указатели на стандартные типы данных и массивы. Познакомится с
возможными операциями, которые разрешены над указателями. Изучить основные алгоритмы работы с массивами данных.
1. Порядок выполнения работы
1.1. В программе 1 - массив "a" объявить в классе
памяти static;
- изменить длину массива с.
Изучить отличие результатов исходной программы от модифициро-ванных.
1.2. В программе 2 изменить взаиморасположение объектов
index, dates, a, bills. Проанализировать отличие между результата-ми исходной программы и модифицированной.
1.3. Повторить п.1.2 с другим (по отношению к п.1.2) взаимо-расположением указанных объектов.
1.4. Доказать, что имя массива определяет его первый эле-мент, т.е. если а[], то а==&a[0].
1.5. В программе 3 в строке А0 массив А[] описать с типом
static. Сравнить результаты работы двух версий программы.
1.6. В функции 4А программы 4 вычислить и вывести на экран
- сумму элементов второй строки массива na;
- сумму элементов третьей строки массива ma;
Текст программ
/* Программа 1 */ // Проверка содержимого массива
#include <stdio.h>
main()
{
int c[282];
int b[2], a[2];
printf(" %d %d %d\n",a[1],b[1],c[1]);
}
/* Программа 2 */ // Указатели и расположение объектов в памяти
#include <stdio.h>
main()
{
int index,dates[4],*pti,a;
float bills[4],*ptf;
for (index=0;index<4;index++)
printf("Адреса %d значения массивов %u %u\n",
index,&dates[index],&bills[index]);
pti=dates;
ptf=bills;
for (index=0;index<4;index++)
printf("Указатель + %d %u %u\n",
index,pti+index,ptf+index);
printf ("Адрес переменной index = %u\n",&(index));
printf ("Адрес переменной a = %u",&(a));
}
/* Программа 3 */ // Операции с указателями
#include <stdio.h>
#define PR(x) printf("x= %u,*x= %d,&x= %u\n",x,*x,&x)
void main(void)
{
int A[]={100,200,300,400}; // строка А0
int *pt1,*pt2;
pt1=A; // строка А1
printf ("A= %u\n",A);
printf ("A[0]= %u\n",A[0]);
printf ("A[2]= %u\n",*(pt1+2)); // строка А2
pt2=&A[2];
printf ("pt2= %u\n",pt2);
printf ("&A[0]= %u\n",&A[0]);
printf ("&A[1]= %u\n",&A[1]);
printf ("&A[3]= %u\n",&A[3]);
printf ("&A[4]= %u\n",&A[4]);
PR(pt1); PR(pt2);
printf("Адрес А =%u\n",&A); // строка А3
pt1++; // строка А4
PR(pt1);
++pt2; PR(pt2);
printf("pt2-pt1 = %u\n",pt2-pt1); // строка А5
}
/* Программа 4 */ // передача массива в функцию
#include <stdio.h>
static int ma[][4]={
{2,4,6,8},
{100,200,300,400},
{10,40,60,80}
};
void main(void)
{
void prog4A(int *);
static int na[][5]={
{1,3,5,7,9},
{101,201,301,401},
};
prog4A(na);
printf("Размер массива ма равен %u\n",sizeof ma);
printf("Размер массива nа равен %u\n",sizeof na);
printf("%d\n",ma[2][2]); printf("%d",ma[2][2]);
}
void prog4A(int *u)
{
printf("%d\n",ma[2][2]);
printf("%d\n",*u);
printf("%d\n",*(u+1));
printf("%d\n",u[2]);
printf("%d\n",*(u+3));
printf("%d\n",*u+4);
printf("Размер u = %u\n",sizeof u);
printf("%d\n",*(u+8));
}