Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к экзамену по ЯиМП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.06 Кб
Скачать

9. Циклы. Оператор цикла с предусловием while. Пример.

Цикл while с предусловием позволяет выполнить одну и ту же последовательность действий пока проверяемое условие истинно. При этом условие записывается до тела цикла и проверяется до начала выполнения тела цикла. При выполнении цикла while сначала проверяется условие. Если оно ложно, то цикл не выполняется и управление передается на следующую инструкцию после тела цикла while. Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.

Формат оператора:

while (<условие>)

{

<операторы>;

}

Пример:

int i=1,i2;

while (i<=10)

{ i2=i*i;

Printf(“%d\n”,i2);

++i;

}

10. Циклы. Оператор цикла с постусловием do…while. Пример.

Цикл "пока" с постусловием отличается от цикла с предусловием тем, что сначала выполняется блок цикла, а потом проверяется условие. Если условие истинно, то цикл будет выполнен еще раз, и так до тех пор, пока условие будет истинно. Синтаксис цикла с постусловием такой (обратите внимание на обязательную точку с запятой после условия):

do

{

<операторы>;

}

while (<условие>);

Поскольку условие проверяется после выполнения тела цикла, то блок цикла с постусловием всегда будет выполнен хотя бы один раз, независимо от истинности условия. Это может привести к ошибкам, поэтому использовать цикл while с постусловием следует только тогда, когда это действительно упрощает алгоритм.

Пример:

int i,i2;

scanf(“%d”,&i);

do

{ i2=i*i;

Printf(“%d\n”,i2);

++i;

} while (i<=10);

11.Вычисление простой и сложной суммы. Пример.

S=a1+a2+aN можно записать в виде E(i=1..N)ai

Пример:

Ai=1/((2i-1)*2i)

i=1,2,..,50;

float a,s=0;1

for(int i=1;i<=50;i++)

{ a=1/((2*i-1)*2*i);

s+=a; }

printf(“s=%5.2f”,s);

Int i,n;

Float x,a,s:real;

Printf(“x n=”);

Scanf(“%f %f”,&x,&n);

A=1;s=1;

For(i=2;i<=n;i++)

{a=a*x*x/(i-1); s+=a;}

Printf(“s=%.5f”,s);

Факториал:

Внутри цикла выполняется накапливание. Например факториал 10:

fA=1;

for(int A=1;A<=10;A++)

fA=fA*A;

Степень:

Внутри цикла число умножается само на себя столько раз, сколько необходимо. Например пять в степени 15:

X=5; sX=1

for(int i=1;i<=15;i++)

sX=sX*X;

12. Обработка целых чисел. Операторы % и /. Пример.

В Си при целых числах функция «/» выполняет деление без остатка.

А «%» - остаток от деления.

Пример:

19/3=6

15/10=1

256%10=6

13%2=1

13. Одномерные массивы. Ввод/вывод (наглядный, ненаглядный, случайными числами). Пример.

Общий формат описания:

<тип> <имя>[<количество элементов>];

Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива. В квадратных скобках задается количество элементов массива (размер). Элементы массива нумеруются с нуля.

Пример:

Int a[10], b[3]={1, 2, 3}, c[]; //размерность – не обязательный параметр.

Ввод/вывод одномерного массива (наглядный ввод):

for (int i=1; i<=n; i++)

{

printf(“a[%d]=”,i);

scanf(“%d”,&a[i]);

}

for (int i=1; i<=n; i++) printf(“a[%d]=%d\n”,i,a[i]);

Ввод/вывод одномерного массива (ненаглядный ввод):

for (int i=1; i<=n; i++) scanf(“%d”,&a[i]);

for (int i=1; i<=n; i++) printf(“%d “,a[i]);

Ввод одномерно массива (случайными числами):

srand(time(0));

for (int i=1; i<=n; i++)

{

a[i]=rand()%100-50; //диапазон от 49 до -50

a[i]=rand()/(float)32767 * 20 – 10; //от -10.0 до 9.0

}

Пример:

#include <stdio.h>

void main()

{

Const n=10;

int i,s=0, a[n+1];

for(i=1;i<=n;i++)

{ printf(“a%d=”,i); scanf(“%d”,a[i]); }

for(i=1;i<=n;i++)

s+=a[i];

printf(“s=%d”,s);

}