Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Оснащения врачебно-сестринской бригады.
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2017-09-30 | 218 |
5.00
из
|
Заказать работу |
|
|
оператор1;
где выражение1, выражение2, выражение3 – необязательные элементы.
Оператор цикла for работает следующим образом:
1) вычисляется выражение1, если оно присутствует;
2) вычисляется выражение2, если оно присутствует. Если полученное значение нуль, то цикл прекращается, в противном случае выполняется тело цикла – ²оператор1²;
3) вычисляется выражение3, если оно присутствует;
4) переход к пункту 2.
Например,
// тело цикла – пустой оператор
for (i=0; i<100; i++);
// бесконечный цикл
for (;;) s = 0;
// бесконечный цикл
for (i=10; i>6; i++) s = 0;
Пример. Найти произведение f = 200*198*196*….*2:
# include <stdio.h>
void main() {
int i, f = 1;
for (i = 200; i >=2; i -= 2) f * = i;
printf(²f = %d², f);}
Синтаксис оператора цикла while имеет вид:
while (выражение) оператор1;
Оператор цикла while выполняет следующие действия:
· cначала вычисляется выражение в круглых скобках;
· если полученное значение не равно нулю, то выполняется ²оператор1², представляющий собой тело цикла, в противном случае цикл прекращается.
Является циклом с предусловием (решение о прохождении цикла принимается до выполнения тела цикла).
Пример. Даны натуральные числа: 1,2, 3, …. n. Найти сумму чисел, кратных 3.
# include <stdio.h>
void main()
{
int i, n, s;
printf (²Введите n\n ²);
scanf (²%d², &n);
i=1; s = 0;
while (i <= n)
{
if (i % 3 == 0) s += i; i ++;
}
printf (“\n s=%d”, s);
}
Синтаксис оператора цикла do…while следующий:
do оператор1 while (выражение);
Оператор цикла do…while является циклом с постусловием, так как проверка выражения в круглых скобках осуществляется после выполнения тела цикла – ²оператора1².
Цикл do…while прекращается, когда выражение в круглых скобках станет равным нулю.
|
Тело цикла do…while будет выполнено хотя бы один раз.
Пример. Вычислить n! = 1*2*3*…..*n;
# include <stdio.h>
void main()
{
int i, n, k;
printf (²Введите n\n ²);
scanf (²%d², &n);
i=1; k=1;
do
{ k *= i; i ++; }
while (i <= n);
printf (“\n n!=%d”, k);
}
Оператор switch
Оператор switch, как и условные операторы, используется для ветвления программы в зависимости от значения некоторого выражения.
Синтаксис этого оператора имеет вид:
Switch (выражение)
{ case выражение 1: операторы_1;
case выражение 2: операторы_2;
…
case выражение n: операторы_n
default: операторы_d; }
где выражение 1, выражение 2,..., выражение n – константные выражения целого типа.
После вычисления целого выражения в круглых скобках его результат последовательно сравнивается с указанными константными выражениями, начиная с самого первого. При совпадении указанных значений выполняется операторы, следующие за соответствующим константным выражением до конца тела оператора switch.
Если не будет обнаружено ни одного совпадения, то выполняется оператор(ы) в цепи, помеченной ключевым словом default.
Впрочем, последняя может и отсутствовать в операторе switch. Работа переключателя приведена на рисунке 2.4.
Рис. 2.4. Схема работы оператора switch
Операторы прерывания break и continue
Оператор прерывания break имеет следующий вид:
break;
Оператор прерывает выполнение операторов while, do, for и switch и передает управление следующему за ними оператору.
В случае вложенных друг в друга выше перечисленных операторов оператор break прерывает их выполнение только на текущем уровне вложенности. Оператор break не может быть использован ни в каких других конструкциях языка Си, кроме выше перечисленных.
В отличии от оператора break оператор прерывания continue прерывает не выполнение самих операторов while, do или for, а только их текущую итерацию и имеет вид:
continue;
Пример
По номеру дня недели напечатать его название.
# include <stdio.h>
void main()
{ int n;
printf (²Введите номер дня недели \n ²);
|
scanf (²%d², &n);
switch (n)
{ case 1: printf (²Понедельник²); break;
case 2: printf (²Вторник²); break;
case 3: printf (²Среда²); break;
………………………………………
………………………………………
case 7: printf(²Воскресенье²); break;
default: printf(²Неверный номер дня недели²); }
}
Оператор break используется здесь для исключения последующих функций printf() после первого совпадения значения переменной n с константами 1, 2,…7.
Блок-схема оператора switch для решения вышеуказанной задачи приведена ниже.
Пример
Напечатать таблицу умножения.
# include <stdio.h>
void main()
{
int i, j;
for (i=1; i<10; i++)
{
for (j=1; j<10; j++)
printf (“%d*%d=%2d\t “, i, j, i*j);
printf (“\n”);
}
}
Массивы
Массив – это упорядоченная совокупность однородных компонент.
Массивы описываются следующим образом:
тип имя_массива [размер];
где: тип – определяет тип компонент массива,
размер – выражение целого типа, определяющее количество компонент описываемого массива.
Обращение к элементам массива осуществляется по имени массива и номеру его компоненты в квадратных скобках, причем нумерация компонент начинается с нуля.
При описании массивы могут быть инициализированы, например,
float m[5] = {1.2, 3.01, 0.2, -1.1, 5.0};
Возможно и такое описание массива:
int m[ ] = { 1, 4, 2, 3, 7, 3 };
В соответствии с синтаксисом в языке Си существуют только одномерные массивы, однако элементами одномерного массива, в свою очередь, могут быть массивы. Поэтому двумерный массив определяется как массив массивов.
Аналогично определяются многомерные массивы. Стандарт языка Си требует, чтобы транслятор мог обрабатывать определения массивов с размерностью до 31.
Например, конструкция float b[5][3]; описывает двумерный массив с именем b, содержащий пять элементов, каждый из которых содержит по три элемента..
Инициализирование двумерных массивов может быть различным:
int a[2][3] = { 1, 5, 6, 9, 7, 8 };
int a[2][3] = {{ 1, 5, 6}, {9, 7, 8}};
int a[ ][ ] = {{1, 5, 6}, { 9, 7, 8}};
Одномерные массивы символов представляют собой строки. Строки должны заканчиваться специальным нуль-символом ¢\0¢.
Инициализация строки может осуществляться по-разному:
char s1[ 6] = {¢L¢, ¢i¢, ¢n¢, ¢u¢, ¢x¢, ¢\0¢};
char s1[ 6] = ²Linux²;
Для ввода массивов используются циклы for.
1) Одномерные массивы:
float a[7]; int i;
for (i=0; i<7; i++)
{ printf (“ a[%d] = ”, i+1);
|
scanf (“ %f “, &a[i]); }
2) Двумерные массивы:
float a[4][5]; int i, j;
for (i=0; i<4; i++)
for (j=0; j<5; j++)
{ printf (“ a[%d][%d] = ”, i+1, j+1);
scanf (“ %f ”, &a[i][j]); }
3) Ввод строк:
a) char str[20]; scanf (“ %s “, str);
b) char str[20]; gets (str);
В первом случае ввод идет до первого пробела, во втором – можно вводить и пробелы, конец ввода определяется нажатием клавиши “Enter”.
Пример
Вычислить среднее геометрическое положительных элементов целочисленного массива X[12].
void main()
{
int X[12], i, k=0; float sg=1;
for (i=0; i<12; i++)
{ printf (“ X[%d] = ”, i+1);
scanf (“ %d “, &X[i]);
if (X[i] >0) { sg *= X[i]; k++; }
}
sg = pow (sg, 1./k);
printf (“среднее геометрическое = %f “, sg);
}
Пример
Найти сумму целых положительных чисел, меньших 50 и кратных 4 из целочисленного массива С[3][7].
void main()
{
int С[3][7], i, j, s=0;
for (i=0; i<3; i++)
for (j=0; j<7; j++)
{ printf (“ C[%d][%d] = ”, i+1, j+1);
scanf (“ %d “, &C[i][j]);
if (C[i][j] >0 && C[i][j]<50 && C[i][j]%4==0)
s + = C[i][j];
}
printf (“сумма = %d “, s);
}
Функции
Все программы на языке Си должны содержать одну главную функцию main(), с которой начинается выполнение программы. Функция main() может содержать вызовы других функций, которые в свою очередь могут содержать вызовы следующих функций и т.д.
Нами уже использовались многие функции из стандартных библиотек языка Си, например, математические функции, функции ввода-вывода и др. Теперь мы обратимся к конструкциям языка, с помощью которых и создаются функции.
Определение функции содержит:
тип_функции имя_функции (спецификация_формальных параметров)
{ определения_объектов;
исполняемые_операторы;
}
При этом имеет место следующее:
1. Формальные параметры могут отсутствовать.
2. Тело функции – это составной оператор или блок.
3. Переменные, объявленные в теле функции, являются локальными; переменные, объявленные вне функций, являются глобальными.
4. Определения функций не могут быть вложенными.
5. В теле функции может использоваться оператор return для возврата из функции результата. Оператор return может вернуть не более одного значения.
6. Тип функции определяется типом, возвращаемого ею значения. Если функция не вырабатывает значения, то она должна быть объявлена типом void. Если тип функции не объявлен, то по умолчанию она имеет тип int.
|
7. Необходимо различать объявление функции или прототип функции от определения функции. Определение функции задает действия самой функции, а прототип функции только объявляет функцию и не содержит тела функции.
8. Обращение к функции (иначе говоря, вызов функции) имеет вид:
имя_функции (список фактических параметров)
Фактические параметры – это выражения, которые передаются из вызывающей программы в функцию по значению, то есть вычисляется значение каждого выражения, представляющего аргумент, и именно это значение используется в теле функции вместо соответствующего формального параметра. На сами фактические параметры никакого влияния функция не оказывает, она работает только с их копиями. После выхода из функции освобождается память, выделенная для ее формальных параметров.
Если функция определяется типом void, то такая функция не может входить ни в какие выражения, требующие значения, а должна вызываться в виде отдельного оператора.
9. Функция может иметь несколько операторов return. Например,
float min (float a, float b)
{ if (a<=b) return a; else return b; }
Пример.
Вычислить среднее значение функции y(x)=5x3 + x2 + x в точках a, b, (a+b)/2, где a = 3, b = 4.
Программу можно составить двумя способами: 1) без использования прототипа функции; 2) с использованием прототипа:
Способ.
# include <stdio.h>
# include <math.h>
float y(float x)
{ return 5* pow(x, 3) + x * x + x; }
void main()
{
float a = 3, b = 4, s = 0;
s = (y(a) + y(b) + y((a+b)/2)) / 3.;
printf(“среднее значение y(x) равно %f “, s);
}
Способ.
# include <stdio.h>
# include <math.h>
/*Прототип функции y(x) */
float y(float x);
void main()
{
float a = 3, b = 4, s;
s = (y(a) + y(b) + y((a+b)/2)) / 3.;
printf(“среднее значение y(x) равно %f “, s);
}
float y(float x)
{ return 5* pow(x, 3) + x * x + x; }
Блок-схема для каждой функции чертится отдельно. Для вызова функции используется блок «предопределенный процесс».
Пример (параметрами функции являются одномерные массивы).
Заданы три случайные величины X [5], Y [7], Z [9]. Используя функцию для расчета математического ожидания, найти математические ожидания заданных случайных величин.
Для расчета математического ожидания используется следующая формула:
# include <stdio.h>
float mo(float A[ ], int n)
{
int i;
float s=0;
for (i=0; i<=n; i++)
s+=A[ i ];
s \ = n;
return s;
}
void main()
{
float mx, my, mz, X[5] = {3,4,5.3,2,4.1},
Y[7] = {4,5,5,3,4,3,7},
Z[9] = {5,6,5,7,6,7,5,6,4 };
mx = mo(X, 5);
my = mo(Y, 7);
mz = mo(Z, 9);
printf (“мат.ожидание X равно %f “, mx);
printf (“мат.ожидание Y равно %f “, my);
printf (“мат.ожидание Z равно %f “, mz);
}
ДОМАШНЕЕ ЗАДАНИЕ
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!