- •Алгоритм.
- •Множественный выбор switch.
- •Оператор do … while ( с постусловием ).
- •Do оператор ;
- •Оператор цикла for.
- •Использование операторов break и continue в циклах.
- •Функции ввода-вывода.
- •Общий вид программы.
- •Вложенные циклы.
- •Адреса и указатели.
- •Массивы.
- •Int a[10] ; // целочисленный вектор из 10 элементов.
- •Векторы.
- •Сортировка вектора.
- •Матрицы.
- •Строки.
- •Подпрограммы.
- •Директива препроцессора #define .
- •Области видимости.
- •Классы памяти.
- •Рекурсия.
- •Подготовка к зачету.
- •Структуры.
- •Int ball [4] ; // описание третьего поля – оценки.
- •Очередь.
- •Линейные списки.
- •Деревья.
- •Int n, k ; // ее размерности
- •Void print ( void ) // печать матрицы
- •Определение методов вне класса.
- •Частные и общие данные.
- •Конструктор.
- •Перегрузка операторов.
- •Неявный указатель *this.
- •Дружественные функции.
- •Класс множество.
- •Наследование.
- •Объекто-ориентированное программирование.
- •Список вопросов к экзамену.
- •Литература.
Общий вид программы.
Программа на экране компонуется следующим образом:
#include <stdio.h>
main()
{
операторы реализующие алгоритм.
}
Пример: Написать программу, вычисляющую 50 значений функции sin(x). Начальное значение - x и шаг - h заданы с экрана.
#include <stdio.h> // библиотека ввода-вывода
#include <math.h> // библиотека стандартных математических функций
main()
{
float x , h ;
int i ;
printf (“\nначальное значение аргумента функции x=”);
scanf ( “ %f” , &x) ;
printf (“\nвведите шаг h=”);
scanf ( “ %f” , &h) ;
for ( i=1 ; i<=50 ; i++ ) // цикл вычисляющий значения функции с шагом h.
{
printf (“\nx=%f y=%f”, x , sin(x)) ;
x+=h ;
}
}
Вложенные циклы.
В программах часто используются вложенные друг в друга циклы, принцип их работы таков: сначала фиксируется значение внешнего цикла, за тем открывается внутренний и пробегает все свои возможные значения, после его окончания, переходим к следующему значению внешнего цикла. Рассмотрим примеры.
Построим все возможные перестановки из трех цифр.
566 070 379 999
#include <stdio.h>
main()
{
int i , j, k ;
for ( i=0 ; i<=9 ; i++ )
for ( j=0 ; j<=9 ; j++ )
for ( k=0 ; k<=9 ; k++ )
printf ( “ \n%d %d %d” , i ,j , k ) ; // распечатываются все возможные
// перестановки
}
Каждай следующий цикл строго внутри предыдущего, тело самого внутреннего цикла состоит из одного оператора, поэтому фигурных скобок не требуется. Следующий цикл состоит ровно из одного оператора цикла и т. д. Можно записать эту программу и со скобками, чтобы показать уровни вложенности.
#include <stdio.h>
main()
{
int i , j, k ;
for ( i=0 ; i<=9 ; i++ )
{
for ( j=0 ; j<=9 ; j++ )
{
for ( k=0 ; k<=9 ; k++ )
{
printf ( “ \n%d %d %d” , i ,j , k ) ;
}
}
}
}
В программировании есть негласное правило: каждый вложенный оператор пишется с отступом, а открывающаяся и закрывающаяся скобки друг под другом. Так проще понять программу и искать в ней ошибки.
Изменим условие предыдущей задачи: Найти такие перестановки, чтобы все цифры были различны.
#include <stdio.h>
main()
{
int i , j, k ;
for ( i=0 ; i<=9 ; i++ )
for ( j=0 ; j<=9 ; j++ )
if (j!=i)
for ( k=0 ; k<=9 ; k++ )
if (( i!=k)&&(j!=k))
printf ( “ \n%d %d %d” , i ,j , k ) ; // распечатываются все возможные
// перестановки без повторов.
}
Еще усложним ситуацию: Отбросить перестановки с различным порядком одних и тех же цифр.
123 321 231 132 - из таких перестановок будем учитывать только одну с возрастающим порядком цифр 123.
#include <stdio.h>
main()
{
int i , j, k ;
for ( i=0 ; i<=7 ; i++ )
for ( j=i+1 ; j<=8 ; j++ )
for ( k=j+1 ; k<=9 ; k++ )
printf ( “ \n%d %d %d” , i ,j , k ) ; // распечатываются все возможные
// перестановки c различным порядком цифр.
}
Решим еще одну интересную задачу.
Задано с экрана
произвольное целое число
являющееся первым членом последовательности.
Найти 5 членов этой последовательности,
вычисляющейся по формуле:
, где
-
количество цифр числа
.
#include <stdio.h>
main()
{
int a , x, k, i=1 ;
printf(“введите первый член последовательности ”) ;
scanf (“%d” , &a) ;
printf ((“\n%d – й член последовательности %d”, i , a) ;
for (i=2 ; i<=5 ; i++ ) // цикл вычисляющий члены последовательности
{
x=a ; k=0 ; // обнуление счетчика количества цифр в числе а
while ( x>0 ) // цикл по подсчету цифр числа пока оно не превратится в 0
{
k++ ; // подсчет цифр
x=x/10 ; // уменьшение числа на один разряд
}
a=a*k ; // вычисление следующего члена последовательности
printf ((“\n%d – й член последовательности %d”, i , a) ;
}
}
