Смекни!
smekni.com

Методические указания к лабораторным работам по курсу «Программирование на языках высокого уровня» (стр. 2 из 7)

2) Даны четыре числа. Вычислить сумму положительных среди них чисел.

3) Даны четыре числа. Вычислить произведение отрицательных среди них чисел.

4) Даны четыре числа. Все отрицательные среди них числа заменить на 0.

5) Даны четыре числа. Определить сколько среди них отрицательных и сколько положительных.

6) Даны четыре числа. Определить порядковый номер наименьшего среди них.

7) Даны два числа. Большее из этих двух чисел заменить их полусуммой, а меньшее удвоенным произведением.

8) Даны три числа. Меньшее среди них заменить на 0 .

9) Даны четыре числа. Найти разность между наибольшим и наименьшим среди них.

10) Даны три числа K, M и N. Поменять их значения местами таким образом, чтобы K < M < N.

11) Даны четыре разных числа. Найти среди них два наибольших.

12) Даны три числа. Поменять местами большее и меньшее из этих чисел.

Варианты задания 2

Предусмотреть ситуацию неправильного ввода исходных данных.

1) Вводится число программ N<=20. Напечатать фразу "Я разработал N программ", согласовав слово "программа" с числом N.

2) Вводится число экзаменов N<=20. Напечатать фразу "Мы успешно сдали N экзаменов", согласовав слово "экзамен" с числом N.

3) Вводится число лет (N<=25). Напечатать фразу "Мне N лет", согласовав слово "лет, год, года" с числом N.

4) Вводится число студентов N<=30. Вывести фразу "В нашей группе N студентов", согласовав слово "студент" с числом N.

5) Вводится число М - номер месяца. Определить номер квартала по введенному номеру месяца и номер полугодия.

6) Вводится число М - номер месяца. Определить время года по введенному номеру месяца и номер полугодия.

7) Вводится целое число С. Если -9<=c<=9 вывести величину числа в словесной форме с учетом знака, в противном случае - предупреждающее сообщение и повторный ввод.

8) Вводится номер семестра N<=10. Вывести фразу "Я проучился N семестров", согласовав слово "семестр" с числом N. Определить номер курса.

9) В китайском гороскопе года носят следующие названия: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна, петух, собака, свинья. Учитывая, что 1996 – год крысы, написать программу, определяющую название года по его номеру.

10) Вводится число Т – порядковый день в году. Определить номер месяца М и дня недели D, соответствующих Т.(Например, если Т=365 . то М=12, а D=31)

11) Вводится номер месяца М и дня D. Определить порядковый номер дня в году Т соответсвующий этой дате.

12) Вводится номер месяца М и дня D. Определить день недели с датой М и D, считая, что год начинается с понедельника.

4. КОНТРОЛЬНЫЕ ВОПРОСЫ

4.1. Сравните виды условных операторов Си.

4.2. Всегда ли ставятся скобки и какие в условном операторе?

4.3. Зачем ставятся в переключателе операторы break и default?

4.4. Как будет работать программа из примера без break?

Лабораторная работа №3

Программы циклической структуры

1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков в составлении алгоритмов и программ циклической структуры.

2. ОСНОВНЫЕ СВЕДЕНИЯ

2.1. Операторы циклов

В языке Си существует 3 вида циклов: 1) цикл с параметром или цикл типа for; 2) цикл с предусловием или цикл типа while, 3) цикл с постусловием или цикл типа do ... while . Во всех этих циклах условие продолжения цикла заключается в круглые скобки. В циклах типов for и while повторяющаяся часть состоит из одного оператора, если требуется выполнить в цикле несколько операторов, они заключаются в фигурные скобки, образуя составной оператор. В цикле с постусловием тело цикла помещается между словами do и while. В отличие от цикла с предусловием, цикл с постусловием выполнится хотя бы один раз. Циклы с пред- и постусловием продолжаются, если условие продолжения истинно.

2.2. Цикл с параметром

Для цикла типа for заголовок состоит из трех разделов: инициализации (присваивания начальных значений), проверки условия повторения, модификации (изменения параметров). Разделителем между разделами заголовка служит запятая.

Пример вычисления суммы квадратов натурального ряда чисел от 1 до n.

S=

= 12 + 2 2 + . . . + n 2.

//lab3_1.c сумма квадратов натурального ряда

#include <stdio.h>

main()

{ int S,n,i;

printf(“Введите n ”); scanf(“%d”,&n);

for (S=0, i=1; i<=n; i++)

S+=i*i; // соответствует S=S+i*i

printf (“n=%d S=%d”,n,S);

}

В разделе инициализации присваиваются начальные значения переменным S и i. При i, не превышающем n, цикл повторяется, иначе выполняется выход из цикла. Оператор инкремента i++ (или декремента i--), эквивалентен i=i +1 (i=i-1). Для досрочного выхода из цикла и перехода на следующий оператор после цикла используется оператор break. Для пропуска всех операторов, оставшихся до конца тела цикла и перехода к следующему повторению цикла используется оператор continue.

2.3 Циклы с неизвестным количеством повторений

Изменим условие в предыдущем примере: Определить число n, при котором сумма чисел S предыдущего ряда не превысит величину K, введенную с клавиатуры. Такую программу можно реализовать с помощью циклов предусловия или постусловия следующим образом:

//lab3_2 циклы while и do…while

#include<stdio.h>

#include<conio.h>

main()

{int K,S, i;

clrscr(); // очистка экрана перед выводом

printf (“Введите К ”); scanf (“%d”, &K);

// цикл с предусловием //цикл с постусловием

S=0; S=0; i=0;

i= 0; do

while ( S<K) { i++ ; S+=i*i }; { i++; S+=i*i; }

while ( S<K) ;

printf (“n=%d S=%d&bsol;n”, i, S);

getch();

}

Отличие этих программ: если ввести К<1, то в программе с предусловием получим S=0, i=0 ; а в программе с постусловием S=1, i=1.

3. ВЫПОЛНЕНИЕ РАБОТЫ

Составить 3 варианта программ циклической структуры типа for и while, сравнить полученные результаты.

Варианты заданий

1.

. 2.
.

3.

. 4.
.

5.

. 6.
.

7.

8.

9.

. 10.
.

11.

12.

4. КОНТРОЛЬНЫЕ ВОПРОСЫ

4.1. Какой алгоритм является алгоритмом циклической структуры?

4.2. Типы циклов в языке Си.

4.3. Какой цикл выполнится хотя бы один раз? А какой - ни разу?

Лабораторная работа №4

Обработка статических массивов

1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков в составлении программ с массивами.

2. ОСНОВНЫЕ СВЕДЕНИЯ

Массивы - структурированный тип данных с элементами одного типа, имеющий одно имя и определенное количество элементов. Количество элементов определяет размер массива. Порядковый номер элемента массива называется его индексом. Число индексов называется размерностью массива, например, массив с двумя индексами называется двумерным массивом. Строка символов является массивом символов, вектор – массив чисел, матрица – массив векторов. Обработка массивов выполняется следующим образом: описание, ввод или инициализация элементов массива, преобразование и вывод.

При описании массивов после имени в квадратных скобках указывается число его элементов. В языке Си индекс элемента массива начинается с нуля, поэтому индекс последнего элемента массива на 1 меньше числа элементов в данном массиве.

Пример обработки одномерного массива

Дан массив из 50 целых чисел. Найти наибольший элемент в массиве и его порядковый номер.

# include <stdio.h>

#include <conio.h>

# define n 50 // определение константы n=50

int i, max, nom, a[n]; //описание массива целых чисел из n элементов

main()

{ for (i=0; i<n; i++)

{ printf( “&bsol;n Введите элемент массива ”);

scanf ("%d", &a[i]) };

for (i=1,max=a[0],nom=0; i<n; i++)

if (max<a[i])

{nom=i; max=a[i];}

printf("&bsol;n Вывод элементов исходного массива : &bsol;n");

for (i=0; i<n; i++) printf ( "%6d", a[i] );

printf ("&bsol;n Максимальное число в массиве %4d, его индекс %4d " , max, nom+1);

getch();

}

Многомерные массивы задаются указанием каждого измерения в квадратных скобках. Например, оператор int matr [6] [8]; задает описание матрицы из 6 строк и 8 столбцов. Нумерация строк и столбцов начинается с 0. При инициализации двумерного массива он представляется как массив из массивов, при этом каждый массив заключается в свои фигурные скобки, либо задается общий список в том порядке, в котором элементы располагаются в памяти:

int mas [] [2]= { {1,2}, {0,2}, {1,0}};

int mas [3][2]={1,2,0,2,1,0};

3. ВЫПОЛНЕНИЕ РАБОТЫ

Даны вещественные числа a,b. Значения функции (согласно вариантам) записать в массив. Затем, используя значения функции записанные в массиве вычислить значение интеграла, по:

1) Формуле трапеций

I1=h*[f(a)/2+f(a+h)+f(a+2h)+…+f(a+(n-1)h)+f(b)/2]

2) Формуле Симпсона

I2=h/3*(f(a)+f(b)+4*(f(a+h)+f(a+3h)+…+f(a+(n-1)h))+

2*(f(a+2h)+f(a+4h)+…+f(a+(n-2)h)))

h=(b-a)/n, n=100.

1. f(x)=x2/(10+x3); a=-2; b=5;

2. f(x)=(2.5x2-0.1)/(tg x+sin x); a=4; b=6;

3. f(x)=(x+1)2√lg x; a=2; b=10;

4. f(x)=x2 ln x /(1+x)2; a=1; b=20;

5. f(x)=1/((0.5+0.1x3)√x); a=0.1; b=2.1;

6. f(x)=x 2√(2+3x)3; a=0.5; b=2.5;

7. f(x)=1/√(0.02+0.01x); a=1; b=30;

8. f(x)=(1+2x+x2)/(5+2x2); a=-2; b=2;

9. f(x)=(2x+lg x)/(1+lg x); a=1; b=10;

10. f(x)=√(2+x)3/x2; a=0.2; b=10;

11. f(x)=(1+x2)/(x3+√(1+x)); a=0.5; b=5;