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

Часто встречающиеся ошибки программирования

1.Использование послеусловияточки с запятой, которая, как правило, приводит к появлениюбесконечногоцикла:

int i = 1, s = 0;

while (i<=100);

{

s += i;

i++;

}

2. Условиене заключено в скобки:

int i = 1, s = 0;

while i<=100

{

s += i;

i++;

}

3. Отсутствие фигурных скобок, в которые заключается тело цикла:

int i=1, s = 0;

while (i<=100)

s += i;

i++;

Это может привести к появлению бесконечных циклов.

4. Отсутствие в теле цикла оператора, изменяющегоусловие:

int i=1, s = 0;

while (i<=100)

{

s += i;

}

Это тоже приводит к появлению бесконечных циклов.

Циклы с постусловием

У циклов с постусловием (циклов типа ДО) проверкаусловия продолженияцикла производитсяпослевыполнения операторов, составляющих тело цикла:

ВЫПОЛНЯТЬ

цепочка

ДО (условие);

Такой цикл повторяется до тех пор, пока условие истинно. Выполнение цикла заканчивается, если операторы цепочки изменяют значения переменных, входящих вусловие, и оно становится ложным.

В любом случае этот цикл выполняется хотя бы один раз. Цикл с постусловием превращается вбесконечный, еслиусловиеподобрано так, что оновсегда истинно.

Таким образом, условие в данном цикле является условиемегопродолжения, как и в цикле с предусловием.

В Сицикл с постусловием реализован оператором циклаdo:

do

{

оператор;

оператор;

оператор;

. . . . . .

оператор;

}

while (условие);

где do– служебное слововыполнять,

while– служебное словопока.

Внимание!После словаdoточка с запятойне ставится!

Перед закрывающей фигурной скобкой }поставитьточку с запятой!

Действия оператора do:

  1. выполняется оператор(цепочка),

  2. проверяется выполнение условия, стоящего после словаwhile,

  3. если оно истинно, то цикл повторяется,

  4. если условие становитсяложным, то цикл заканчивает работу.

Примеры

  1. Вычислить сумму ста первых натуральных чисел:

s = 1 + 2 + 3 + … + 98 + 99 + 100

Пусть s– искомая сумма,

i – очередное число (изменяется от1до100).

Тогда алгоритмрешения задачи можно описать следующим образом:

  1. обнуляем сумму s = 0,

  2. берем первое число: i = 1,

  3. добавляем в сумму очередное число s = s + i,

  4. как только очередное число станет больше ста, цикл заканчивает работу.

Представим этот алгоритм так:

s= 0;

i = 1;

ВЫПОЛНЯТЬ

s = s + i;

i = i + 1;

ПОКА (i <= 100);

Программа

#include <stdio.h>

#include <conio.h>

#include <math.h>

Int main()

{

int i=1, s=0;

do

{

s+=i;

i++;

}

while (i <= 100);

printf(“\ns=%d i=%d”,s, i);

return 0;

}

Результат решения задачи:

S = 5050 i = 101

Второй вариант решения задачи:

do

s+=i++;

while (i <= 100);

  1. Вычислить сумму s всех цифр заданного натурального числа n

Пусть s– искомая сумма,

i – очередная цифра числа.

Тогда алгоритмрешения задачи можно описать следующим образом:

  1. обнуляем сумму s = 0,

  2. берем последнююцифру числа, для чего определяем остаток от деления исходного числа на10:i = n % 10,

  3. добавляем в сумму найденную цифру: s = s + i,

  4. уменьшаем число в 10раз:n = n / 10,

  5. повторяем цикл до тех пор, пока n != 0.

Схема алгоритма

Программа

#include <stdio.h>

#include <conio.h>

#include <math.h>