- •Лекция 3
- •Виды операторов управления
- •Составной оператор
- •Составной оператор
- •Оператор ветвления
- •Оператор ветвления
- •Оператор ветвления
- •Оператор ветвления
- •Оператор ветвления
- •Оператор ветвления
- •Оператор ветвления
- •Правила форматирования
- •Правила форматирования
- •Правила оформления
- •Оператор выбора
- •Оператор выбора
- •Оператор выбора
- •Оператор выбора
- •Оператор выбора
- •Правила форматирования
- •Правила форматирования
- •Операторы циклов
- •Операторы циклов
- •Операторы циклов
- •Оператор цикла со счетчиком
- •Оператор цикла со счетчиком
- •Оператор цикла со счетчиком
- •Оператор цикла со счетчиком
- •Оператор цикла со счетчиком
- •Оператор цикла со счетчиком
- •Правила форматирования
- •Правила форматирования
- •Оператор цикла с предусловием
- •Оператор цикла с предусловием
- •Оператор цикла с предусловием
- •Оператор цикла с предусловием
- •Правила форматирования
- •Правила форматирования
- •Оператор цикла с постусловием
- •Оператор цикла с постусловием
- •Оператор цикла с постусловием
- •Правила форматирования
- •Правила форматирования
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Операторы безусловных переходов
- •Пример 1
- •Пример 2
- •Пример 2
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 4
- •Пример 4
- •Пример 4
Операторы безусловных переходов
Оператор goto – оператор безусловного перехода по метке.
Именем метки может выступать любой идентификатор, не использовавшийся ранее. Метка указывается на новой строке с завершающим двоеточием.
После оператора goto указывается имя метки с завершающей точкой с запятой.
Операторы безусловных переходов
Рассмотрим пример: необходимо определить первое трехзначное число сумма крайних цифр которого равна средней цифре. Фрагмент программы осуществляющий это будет иметь вид:
unsigned num = 100; Next:
if(num%10 + num/100 == num/10%10) goto Exit; num++;
goto Next;
Exit:
Пример 1
Квадратное уравнение видаA x2 B x C 0задается коэффициентами A,
B и C. Определить корни уравнения.
#include <stdio.h> #include <math.h>
int main(int argc, char *argv[])
{double A,B,C;
printf("Введите коэффициенты A, B и C: "); scanf("%lf %lf %lf",&A,&B,&C); double D = B*B - 4.0*A*C;
if(D < 0.0){
printf("Нет действительных корней уравнения!\n");
}else if(D > 0.0){
printf("Корни уравнения: %.4lf\t%.4lf\n", }else{(-B-sqrt(D))/(2.0*A), (-B+sqrt(D))/(2.0*A));
} printf("Один корень: %.4lf\n",-B/(2.0*A));
}return 0;
Пример 2
N ( 1)i 2i
Вычислить сумму рядаi 1 i! с первой позиции до позиции N с заданной погрешностью. Позиция N и погрешность вводятся пользователем. При реализации оптимизировать вычисления.
#include <stdio.h>
int main(int argc, char *argv[])
{unsigned n = 0; double eps = 0.0;
printf("Введите позицию: "); scanf("%u",&n); printf("Введите погрешность: "); scanf("%lf",&eps); double pow2 = 1.0, fact = 1.0, summa = 0.0;
Пример 2
for(unsigned i=1;i<=n;i++){ pow2 *= 2.0;
fact *= i;
double cur = pow2/fact; summa += ((i%2==0)?cur:-cur);
}if(cur < eps) break;
printf("Сумма ряда: %.5lf\n",summa);
}return 0;
Пример 3
Вывести на экран таблицу значений одной из функций (sin, cos, sqrt, exp) на интервале [A,B]. Таблица состоит из двух колонок (аргумент и функция) и N строк. Значения вывести с точностью до четвертого знака после запятой. Ширина колонок: 15 символов. Значения A, B и N вводит пользователь. Функцию
выбирает пользователь.
Пример 3
#include <stdio.h> #include <math.h>
int main(int argc, char *argv[])
{double a,b,step; unsigned N,I;
printf("Введите интервал:\n"); do{
scanf("[%lf,%lf]",&a,&b); if(a<b) break;
printf("Некорректный интервал!\n");
}while(1);
printf("Введите число строк:\n"); do{
scanf("%u",&N); if(N>1) break;
printf("Слишком мало строк!\n");
}while(1);
Пример 3
step = (b - a)/(N - 1); printf("Выберите функцию:/
\n 1 - sin\n 2 - cos\n 3 - sqrt\n 4 - exp\n");
do{
scanf("%u",&I); if((I>0)||(I<5)) break;
printf("Неправильный номер функции!\n");
}while(1); |
|
printf("-------------------------------- |
\n"); |
printf(" Аргумент | |
Функция |\n"); |
printf("-------------------------------- |
\n"); |
double x = a; |
|
|
|
Пример 3
while(x<=b){ double y = 0.0; switch(I){
case 1: {y = sin(x); break;} case 2: {y = cos(x); break;} case 3: {y = sqrt(x); break;} }case 4: {y = exp(x); break;}
printf(" %10.4lf | %10.4lf |\n",x,y); }x += step;
printf("--------------------------------\n");
}return 0;
Пример 4
Определить количество N-значных целых положительных чисел, сумма цифр которых кратна числу K. Числа N и K вводит пользователь. 0<N<10, 1< K<10.
#include <stdio.h> #include <math.h>