Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mL_6_oper.doc
Скачиваний:
4
Добавлен:
29.04.2019
Размер:
219.65 Кб
Скачать

Void main( )

{int n1=0,n2=0,a,sum=0;

while (n1<4)

{scanf(“%d”,&a); //пусть будем вводить 1 2 3 4 5 6 7

If(!(a%2)) // !01 при четном числе

{n2++; // 1 2 3 (1+1+1=3 для чисел 2,4,6)

continue;}

n1++; // 1 2 3 4(1+1+1+1=4 для чисел 1,3,5,7)

sum+=a; // 1 4 9 16 (1+3+5+7=16)

}

printf(“%d %d %d\n”,n1,n2,sum);

}

На экране получим:  4 3 16 

Пример  2.14 .  Находим произведение чисел, которые вводятся с клавиатуры, при вводе  0   цикл завершается и произведение становится равным  0 .

#include <stdio.h>

Void main()

{int i=0,n=1,a,Pr=1;

while (i<4)

{scanf(“%d”,&a); //будем вводить 2 3 4 5 или 2 3 0 5

if (a==0) {n=0; break;}

i++; // 1 2 3 4 или 1 2

Pr*=a; } // 2 6 24 120 (2*3*4*5=120) или 2 6 (2*3=6)

printf(“%d %d\n”,i,Pr*n); }

На экране получим:  4 120  или получим:  2 0 

Пример  2.15 .  В этом примере находится частное от деления  1  на числа, которые вводятся с клавиатуры, при вводе  0  программа завершается.

#include <stdio.h>

Void main()

{int i=0; float b, div=1.0;

while (i<4)

{scanf(“%f”,&b); //пусть будем вводить 2 2 4 5 или 2 2 0

if (b==0.0) {puts (“Ошибка! Деление на 0”); return;}

div/=b; // 0.5 0.25 0.0625 0.0125(1/2/2/4/5)или 0.5 0.25

i++; } // 1 2 3 4 или 1 2

printf(“%d %f\n”,i-1,div); }

На экране получим:  0.0125  или ничего не выведется

Пример  2.16 .  Найти все делители целого числа, значение которого вводится с клавиатуры.

#include <stdio.h>

Void main()

{int num,div,half=0;

puts (“введите число”);

scanf(“%d”,&num); //21

div=2; half=num/2; // half=10

printf(“делители числа %d: 1 ”,num);

//  делители числа 21: 1 

while(div<=half) // div<=10

{

if ((num%div)==0)

// (21%div)==0

printf(“%d ”,div); //  3 7 

div++;

}

} На экране получим:  делители числа 21: 1 3 7 

Рис.7 – Блок-схема примера 2.16

Оператор do…while

Оператор  do…while  – это оператор с постусловием (выполнить тело цикла, пока условие истинно).

 do тело_цикла 

 while (выражение_условие);

В операторе  do…while  сначала выполняется  тело_цикла , затем вычисляется  выражение_условие , и если оно истинно (не равно  0 ), то тело цикла выполняется вновь, до тех пор, пока условие не станет равным  0 .

Рис.8 – Блок-схема работы оператора с постусловием

Пример  2.17 .  К начальному значению переменной m добавляется 1, пока m меньше 4.

#include <stdio.h>

void main()

{int m=1;

do{printf(“m=%d ”,m); // m=1 m=2 m=3

m++; // 2 3 4

} while (m<4); } // цикл выполнится три раза

На экране получим:  m=1 m=2 m=3 

Пример  2.18 .  К начальному значению переменной m добавляется 1, пока m меньше 4.

#include <stdio.h>

void main()

{int m=10;

do{printf(“m=%d”,m); // m=10

m++; // m=11

}while (m<4);} // цикл выполнится один раз

На экране получим:  m=10 

Пример  2.19 .. От начального значения переменной m отнимается 1, пока m не равно 0.

#include <stdio.h>

void main()

{int m=4;

do;

while(m––); // цикл с пустым телом, выполнится пять раз (4,3,2,1,0)

printf(“m=%d”,m);}

На экране получим:  m=-1 

Осторожно пользоваться условным выражением тождественно равно(==) или неравно (!=).

Пример  2.20 .. От вещественного числа g отнимается 0.1, пока g больше 0.

#include <stdio.h>

void main()

{float g=1.0;

do {printf(“g=%.1f”,g);

g–=0.1; // 0.9 0.8 0.7 … 0.1 0.0

}

while(g>0); // цикл выполнится 10 раз

}

На экране получим:  g=1.0 g=0.9 g=0.8 g=0.7 g=0.6 g=0.5 g=0.4 g=0.3 g=0.2 g=0.1 

Пример  2.20а .. От вещественного числа g отнимается 0.1, пока g не равно 0.

#include <stdio.h>

void main()

{float g=1.0;

do {printf(“g=%.1f”,g);

g–=0.1; // 0.9 0.8 0.7 … 0.1 0.0

}

while(g!=0); // получим бесконечный цикл

}

В этом операторе также можно пользоваться операторами  break ,  continue ,  return .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]