Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория по языку СИ.doc
Скачиваний:
38
Добавлен:
03.03.2016
Размер:
1.93 Mб
Скачать

Операторы передачи управления

Операторы передачи управления принудительно изменяют порядок выполнения команд.

Оператор goto метка, применяют для безусловного перехода, он передает управление оператору5: метка: оператор;

Оператор break осуществляет немедленный выход из циклов while, do…while, for и из оператора выбора switch. Управление передается оператору, находящемуся непосредственно за циклом или оператором выбора.

Оператор continue начинает новую итерацию цикла, даже если предыдущая не была завершена.

Оператор return выражение завершает выполнение функции и передает управление в точку ее вызова.

4.2.8. Решение задач с использованием циклов

ЗАДАЧА 10. Составить таблицу значений функции y=esin(x)cos(x) на отрезке [xn;xk] с шагом dx. Найти сумму положительных значений y и произведение отрицательных y.

Входные данные: xn, xk,dx.

Выходные данные: множество значений x и y, S – сумма положительных значений y и P – произведение отрицательных значений y.

Блок-схема алгоритма решения задачи на рис. 13.

Рис. 13. Алгоритм решения задачи 10

Текст программы c соответствующими комментариями приведен далее.

#include <stdio.h>

#include <math.h>

int main()

{

//Описание всех переменных

float xn, xk, dx, x, y, s, p;

printf("Введите xn,xk,dx");

scanf("%f%f%f",&xn,&xk,&dx);

for(s=0,p=1,x=xn;x<=xk;x+=dx)

{

y=exp(sin(x))*cos(x);

printf("X=%g\tY=%g\n",x,y);

if (y<0) p*=y;

else s+=y;

}

printf("S=%g\tP=%g\n",s,p);

}

ЗАДАЧА 11. Вычислить значения z, которые соответствуют каждому значению х (x = 1; dx = 0.5) по формуле:

.

Считать z до тех пор, пока подкоренное выражение больше или равно 0.02. Определить k — количество вычисленных z.

Входные данные: xn, dx.

Выходные данные: множество значений x и y, k – количество выполненных итераций цикла.

Блок-схема алгоритма на рис. 14. Текст программы, соответствующий б/с алгоритма приведен далее.

Рис. 14. Алгоритм решения задачи 11

#include<stdio.h>

#include<math.h>

void main()

{

float x,dx,z; int k=0;

printf("x="); scanf("%f",&x);

printf("dx="); scanf("%f",&dx);

while (x/(x*x*x+1)>0.02)

{

z=log(x)*sqrt(x/(x*x*x+1));

printf("\n x=%f \t z=%f \n",x,z);

k++;

x=x+dx;

}

printf("\n k=%d",k);

}

4.3. Обработка массивов

Массивструктурированный тип данных, состоящий из фиксированного числа элементов одного типа.

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

4.3.1. Описание массивов

Описать массив можно так:

тип имя_переменной [размерность];

где размерность это количество элементов в массиве. Например:

int х[10]; float a[20];

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

const int n=15;.

double B[n];

Элементы массива в С++ нумеруются с нуля (первый элемент, всегда имеет номер ноль, а номер последнего элемента на единицу меньше заданной при его описании размерности):

//Описан массив из 5 символов, нумерация от 0 до 4:

char C[5];