Пример2. Вычисление площади треугольника по длинам трех сторон.
// Площадь треугольника #include <iostream.h> #include <math.h> void main() { float a,b,c,p,s; cout<<\na="; cin>>a; cout<<"\nb="; cin>>b; cout<<"\nc="; cin>>c; if(a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a) { p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); соut<<"\nПлощадь треугольника="<<s; } else cout("\n Неверные исходные данные.");} Данные символьного типа
Тип данных char является подтипом типа int. Данные символьного типа имеют 2 формы представления:
По умолчанию тип char всегда имеет знак При использовании типа char символы русского алфавита кодируются отрицательными числами. Чтобы коды символов однозначно соответствовали кодировке ASCII следует использовать тип unsigned char. Описание данных символьного типа Данные символьного тапа описываются служебным словом char. Например: char a=’A’, b, c; Значением переменной символьного типа является код соответствующего типа. Символьной константой называется символ, заключенный в одинарные кавычки. Например: b=’B’;
Программирование циклов В Си, как и в Паскале, существуют все три типа операторов цикла: цикл спредусловием, цикл с постусловием и цикл с параметром. Цикл с предусловием. Формат оператора цикла с предусловием: while (выражение) оператор; Цикл повторяет свое выполнение, пока значение выражения отлично от нуля, т. е. заключенное в нем условие цикла истинно.
Пример Программа вычисления факториала целого положительного числа N! .
include <iostream.h> void main() { long int F; int i,N; cout<<"N="; cin>>N; F=i=l; while(i<=N) F=F*i++; cout<<"\n"<<N<<"!="<<F; }
Интересно свойство следующего оператора:
while(1); Это бесконечный пустой цикл. Использование в качестве выражения константы 1 приводит к тому, что условие повторения цикла все время остается истинным и работа цикла никогда не заканчивается.
Пример Вычислить сумму гармонического ряда: 1 +1/2+1/3+... с заданной точностью е #include<iostream.h> #include <limits.h> void main() { int n=l; double S=0, eps; cout<<"Tочность: "; cin>>eps; while (1.0/n>eps && n<INT_MAX) S+=l./n++; } Файл limits.h, подключаемый препроцессором, содержит определения предельных констант для целых типов данных. В частности, константа с именем int_max равна максимальному значению типа int в данной реализации компилятора. Цикл с постусловием. Формат оператора цикла с постусловием: do оператор while (выражение); В отличие от оператора repeat...until, используемого в Паскале, где в конце пишется условие выхода из цикла, в операторе do... while в Си в конце пишется условие повторения цикла. Пример Программа вычисления факториала целого положительного числа N! #include <iostream.h> void main() { long int F; int i,N; cout<<"N="; cin>>N; F=i=l; do F*=i++; while (i<=N); cout<<"\n"<<N<<"! ="<<F; }
Цикл с параметром. Формат оператора цикла с параметром: for (выражение_1; выражение_2; выражение_3) оператор; Выражение 1 выполняется только один раз в начале цикла. Обычно оно определяет начальное значение параметра цикла (инициализирует параметр цикла). Выражение 2 — это условие выполнения цикла. Выражение 3 обычно определяет изменение параметра цикла, оператор — тело цикла, которое может быть простым или составным. В последнем случае используются фигурные скобки. Алгоритм выполнения цикла for представлен на блок-схеме. С помощью цикла for нахождение N!можно организовать следующим образом: F=l; for(i=l;i<=N;i++) F=F*i; Используя операцию «запятая», можно в выражение 1 внести инициализацию значений сразу нескольких переменных:
for(F=l,i=l;i<=N;i++) F=F*i; Некоторых элементов в операторе for может не быть, однако разделяющие их точки с запятой обязательно дожны присутствовать. Ниже показан еще один вариант вычисления N!. В нем на месте тела цикла находится пустой оператор, а вычислительная часть внесена в Выражение3. for(F=l,i=l;i<=N;F=F*i,i++); Этот же оператор можно записать в следующей форме: for(F=l,i=l;i<=N;F*=i++); В языке Си оператор for является достаточно универсальным средством для организации циклов. С его помощью можно программировать даже итерационные циклы, что невозможно в Паскале. Вот пример вычисления суммы элементов гармонического ряда, превышающих заданную величину е: for (n=l, S=0; 1.0/n>eps && n<INT_MAX; n++) S+=1.0/n; И наконец, эта же самая задача с пустым телом цикла: for(n=l,S=0;1.0/n>eps && n<INT_MAX; S+=l. 0/n++); Оператор continue. Если выполнение очередного шага цикла требуется завершить до того, как будет достигнут конец тела цикла, используется оператор continue. Оператор goto. Оператор безусловного перехода goto существует в языке Си, как и во всех других языках программирования высокого уровня. Однако с точки зрения структурного подхода к программированию его использование рекомендуется ограничить. Формат оператора: goto метка; Метка представляет собой идентификатор с последующим двоеточием, ставится перед помечаемым оператором. При использовании оператора безусловного перехода необходимо учитывать следующие ограничения: • нельзя входить внутрь блока извне; • нельзя входить внутрь условного оператора (if...else...); • нельзя входить внутрь переключателя; • нельзя входить внутрь цикла.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|