Главная страница
Навигация по странице:

  • Программирование циклических алгоритмов с заданным числом повторений Оператор цикла с счетчиком: for ( ; ; )

  • Программирование циклических алгоритмов с предусловием

  • while ( ) ;

  • Программирование циклических алгоритмов с постусловием Стpуктуpа оператора цикла с постусловием do { } while ( );

  • Задание 3

  • Программирование алгоритмов обработки одномерных массивов Цель работы : научиться разрабатывать и отлаживать программы с использованием регулярных типов (векторов). Массив

  • Шафеева практика С. Практикум по программированию на языке с методические указания к лабораторным работам Омск 2008 2


    Скачать 1.01 Mb.
    НазваниеПрактикум по программированию на языке с методические указания к лабораторным работам Омск 2008 2
    АнкорШафеева практика С.pdf
    Дата06.04.2018
    Размер1.01 Mb.
    Формат файлаpdf
    Имя файлаШафеева практика С.pdf
    ТипПрактикум
    #17709
    КатегорияИнформатика. Вычислительная техника
    страница2 из 7
    1   2   3   4   5   6   7
    Задание 2 (программа 2_2)
    1. Определить остаток от деления на восемь введенного числа х и на- писать восьмиричную цифру прописью.
    2. По цифре, введенной с клавиатуры, напечатать название этой цифры.
    3. С клавиатуры ввести число k (1..30). Определить, какому дню неде- ли оно соответствует, если первое число - понедельник.
    4. Ввести число и номер месяца. Напечатать дату прописью.
    5. Идет k секунда суток. Вычислить, сколько прошло часов и полных минут к этому моменту, при этом согласовать со значением слова (час, ча- са, часов, минута, минуты, минут).
    6. В зависимости от номера (N) типа фигуры, организовать ввод необ- ходимых данных и вычислить при N = 1 - площадь круга, N = 2 - объем шара (4/3πR
    3
    ), N=3 -объем цилиндра, N = 4 - площадь поверхности сферы 4πr
    2 7. Ввести число N (0 ≤ N ≤ 15). Определить и напечатать шестнадцате- ричную цифру, ему соответствующую.
    8.
    Для целого числа К (1…99) напечатать фразу « Мне К лет », при определенных значениях К слово «лет» заменить словом «год» или «года».
    9. В зависимости от номера (N) типа фигуры, организовать ввод необ- ходимых данных и вычислить при N = 1 - площадь прямоугольника, при
    N=2 - площадь параллелограмма, при N = 3 - площадь трапеции 1/2(a+b)h.
    В последнем случае напечатать: является ли трапеция параллелограммом или ромбом.

    14 10. Перевести число 0 ≤ х ≤ 31 в шестнадцатеричную систему счисления.
    11. Напечатать прописью остаток от деления любого целого числа на пять.
    12. По введенному номеру напечатать нужный цвет в радуге.
    13. Спроектируйте программу, которая показывает, что, если сумма цифр дву- значного числа кратна трем, то и само число делится на три без остатка.
    14. Разработайте программу, которая доказывает, что квадрат дву- значного числа k5 (последняя цифра - 5), равен k * (k + 1) * 100 + 25 (т.е. может быть получен умножением старшей цифры k на следующую по по- рядку и припиской «25»). Например, 35 * 11 = 3*4*100 + 25.
    Для задания 2 номер варианта определяется остатком от деления
    индивидуалного варианта на число 12.
    Лабораторная работа 3
    Программирование циклических алгоритмов с заданным
    числом повторений
    Оператор цикла с счетчиком:
    for (<выражение1> ; <условие выполнения> ; <выражение2>) <оператор>; где <выражение1> - это выражение инициализации цикла (может со- держать несколько операторов, разделенных запятыми);
    <выражение2> - изменение параметра цикла (не обязательно целое).
    Пример 1. Вычислить сумму элементов s=1+1/4+1/9+1/16+... .
    На основе анализа изменения параметра знаменателя определим алго- ритм решения задачи (pис. 3) и напишем программу:
    #include
    #include
    void main ()
    { float s = 0, r; int i,N; clrscr(); //очистка экрана printf ("\n Введите N "); scanf ("%d",&N);
    for ( i=1; i<=N; i++ )
    { r = 1.0/ (i*i); s+ = r; // s = s + r
    } printf ("Сумма = %6.2f\n ",s); getch();
    }
    Рис.3
    Конец
    Вывод S
    Начало
    S=0 i=1, N r =1/i
    2
    S=S + r
    Ввод N

    15
    Рис. 4
    Ввод a,b,N ax=| b-a | / (n-1), х=а x=a i=1, N
    F1=tgx, F2=sinx
    В
    ывод i, x, F1,F2 x= x + dx
    Конец
    Начало
    Пример 2. Вычислить значения двух функций F1(x) = tg(x) и F2(x) = sin(x) в n точках, равномерно распределенных на интервале a ≤ x ≤ b, где a
    = -π/4, b = π.
    Для реализации первого варианта данной задачи разработана СА
    (pис. 4) и cледующая программа:
    #include
    #include
    #include
    # define b 3.1415
    void main ()
    {
    float F1, F2, x, dx, a = - b/4; // dx - шаг изменения x int i, n; // i - переменная цикла clrscr(); // очистка экрана printf ("Введите число точек \n"); scanf ("%d", & n); dx = fabs(b-a)/(n-1); x = a; printf (" ___________________ \n"); printf ("| I | X | F1 | F2 | \n"); printf ("|---|--------|--------|--------|\n");
    for ( i=1; i<=n; ++i ) // оператор цикла
    { F2 = sin(x);
    F1 = tan(x);
    // вычисление tg x printf (" |%3d| %8.3f |%8.4f| %8.4f|\n", i, x, F1, F2); x=x+dx;
    // x += dx
    }
    printf (" ____________________ \n"); getch();
    }
    Если точки не нумеровать, можно в цикле применить параметр х и шаг изменения dx. Тогда во втором варианте программы оператор цикла име- ет вид: for ( x = a; x <= b + dx/2; x+ = dx ) { . . . }
    Задание 1 (программа 3_1)
    Для заданных с клавиатуры значений переменных x и n вычислить
    1. X = 1 + 1/2 + 1/3 + ... + 1/10. 2. Z = 2 4
    6 8
    20.
    3. Y = -x + 4x - 9x + ... - 81 x.. 4. Y = x + x/3 + x/5 + ... + x/17.
    5. Y = n! = 1 2
    3 n. 6. Y = 1 - 3 + 3 2
    - 3 3
    + . . . + 3 10 7. Y=


    20 5
    i
    x
    2
    /(2i-1). 8. Z =


    10 2
    1
    (x+i)/i. 9. Y=


    15 1
    i
    x
    2
    /i.

    16 10. Y = 1 + x/2 + x
    2
    /4 + x
    3
    /6 + ... + x i
    /2i + ... + x
    9
    /18 .
    11. Y = 1 + x
    2
    /1! + x
    4
    /2! + x
    6
    /3! + … + x
    20
    /10! = 1 +


    10 1
    i
    x
    2i
    /i!.
    12. Y = 1 - x +x
    3
    /3! -x
    5
    /5!+ ...+(-1)
    n x
    2n-1
    /(2n-1)!+ ... +x
    11
    /11!.
    13. е = 1 + 1/1! + 1/2!
    +
    +
    1/n!
    + ... (сравнить результат со значением функции EXP(1), определенной в Паскале).
    14. π = 4(1-1/3+1/5-1/7+…+(-1)
    n
    /(2n+1)+…) (результаты сравнить с определенным в языке Паскаль числом Pi).
    15. Y = arctg x = x - x
    3
    /3
    + x
    5
    /5-
    + (-1)
    n x
    2n+1
    /(2n+1)+ ... (|х|<1).
    16. Z = LN(1+x) = x - x
    2
    /2
    +
    x
    3
    /3
    -
    +
    (-1)
    n-1
    x n
    /n
    + ...
    (|x|<1).
    17. S =
    x - x
    3
    /3!
    +
    x
    5
    /5!
    -
    +(-1)
    n x
    2n+1
    /(2n+1)!
    + ... .
    18. Вычислить суммы положительных и отрицательных значений функции z = cos(nx + a) sin(nx-a), где n = 1,2,...,5, a и x - вещественные числа.
    19. Вычислить сумму четных и сумму нечетных чисел натурального ряда до N.
    20. Найти сумму факториала M=


    n
    i
    1
    i !.
    Задание 2 (программа 3_2, программа 3_3)
    Вычислить значения двух функций в n равномерно распределенных в диапазоне а≤x≤b точках. Результаты оформить в виде таблицы.
    № п/п a b n
    F1(х)
    F2(х)
    1 2
    3 4
    5 6
    7 8
    9 10 11 12 13 14 15 16 17 18 19 20 0
    1
    -1
    -2 0
    -

    -1
    -4 1
    1 0
    -

    0 1
    2 2
    0 1
    3 1
    2

    2 5
    5


    3 4
    3 4
    2



    2 4
    4 5
    2 4
    3 20 18 15 14 16 20 20 12 15 20 20 18 16 12 10 16 18 15 18 sin x cos x
    1+2
    x+5 4e
    -|x|
    -1
    | x+10|
    5 2 sin 2x +1 2-cos x
    2
    -x
    /100 x
    3
    e
    2x
    1

    x
    e
    1/(1+
    x
    )
    5-3 cos x
    |sinx|+|cosx| e
    -x
    +cos2x e
    -x lg
    1

    x
    x cos x/2 2
    x lg x - 3
    x lg x
    3
    -x
    /50 e
    2x
    3
    x
    - sin x
    2
    x arctg x -
    5 1

    x
    sin x + cos x -1
    (x-1)
    3
    cos x e
    -(x+5)
    (x+5)
    3
    (1+sin
    2
    x)
    4

    x
    20/(1+x
    2
    ) e
    x sin x x ln
    2 x
    2
    x
    /(1-4
    x
    )
    x
    2
    sin
    1

    |sin x| - |cos x| e
    -2x x + sin x
    3
    x
    +
    2
    e
    -x ctg x x e
    -x
    +ln x
    10/(2+x
    2
    ) e axx е
    2x lg x - 3 3x

    17
    Конец y=tg( x/4)
    Вывод a, x, y
    Начало а=0,1 х≤0,9 х = х+а а = а+0,1
    Рис.5 a<=0,3; x=0,5
    Лабораторная работа 4
    Программирование циклических алгоритмов с предусловием
    Цель работы: научиться разрабатывать и отлаживать программы с неразветвленными и разветвленными циклами, управляемыми условиями.
    Структура оператора цикла с предусловием (с предварительной про- веркой условия):
    while ( <выражение>) <оператор>; где <выражение> - это любое логическое выражение, <оператор> - это произвольный оператор Си, в том числе и составной.
    Пример. Для трех значений а = 0.1, 0.2, 0.3 протабулировать функ- цию y=a tg(x/4) при изменении аргумента x на интервале [0.5,0.9] с ша- гом, равным a.
    Для СА (рис.5) решения данной задачи программа может быть сле- дующей:
    #include
    #include
    #include
    void main ()
    { float a,x,y; clrscr(); printf ("-------------------------------\n"); printf (" a| x| y |\n"); printf ("-------------------------------\n"); a=0.1;
    while (a<=0.31)
    { printf ("%5.2f\n",a); x = 0.5;
    while (x<=0.91)
    { y=a*tan(x/4); printf (" %12.2f| %10.2f\n",x,y); x=x+a; // x+=a;
    }
    printf("-------------------------------\n"); a=a+0.1; // a+=0.1;
    }
    getch();
    }
    Второй вариант программы можно реализовать через циклы ….

    18
    Задание 1 (программа 4_1)
    Начертите структурную схему алгоритма, напишите и отладьте про- грамму для табуляции следующих функций:
    1. S = a e
    -x sin ax+
    ay
    при -1 <= x <=1 с шагом 0.2, a = 0.75,
    1<=y <=5 с шагом 1.5.
    2. Z =
    5 2
    y
    x
    a
    + 1,3 sin(x-a) при 2 <=x <=5 с шагом 0.5, a = 1.9, -1<=y<=1 с шагом 0.5.
    3. S =
    1

    t
    e
    2 t y cos(t-a) при 1<=t<=2 с шагом 0.2, a = -2.1,
    2<= y<=3 с шагом 0.3.
    4. Z = bx
    b
    t

    (tx+2.1) при 1<= x<=2 с шагом 0.2, b = 3.5 0<= t<=1 с шагом 0.2.
    5.
    , если 0 <= x <= 2, a = 0.50; 0.75,
    Z= если 2 < x <= 3.6, шаг dx=a/2.
    6. sin ax -
    )
    lg(
    2 2
    x
    a

    , если 0.1 <=x <= 0.4,
    Y= a cos
    2
    (px), если 0.4 < x <= 1.2, a = 1.0; 1.5,
    2 - sin ax, если 1.2 < x <=1.6, шаг dx=a/5.
    7. Z= ln(a+x
    2
    /
    a
    ) , если 0 <=x <= 2, a=1.0; 1.3; 1.6,
    2 e
    2x
    , если 2 < x <= 3.6, шаг dx=a/4.
    8. a(e x+2a
    +e
    -(x-3a)
    , если 0.1 <= x < 0.5,
    Z = sin x, если x = 0.5, a = 2; 2.1, a + a cos(x+3a), если 0.5 < x <= 1.5, шаг dx=a/10.
    9.
    -a e x-3a
    , если 0 < x<= 3, a = 1; 1.5,
    Z= -a(1+ln(x-3a)), если 3 < x <= 4, шаг dx=a/2.
    10.
    - (x+3a)
    2
    - 2a, если -1 <=x <= 0, a = 0.7; 1,
    Y = a cos(x+3a) - 3a, если 0 < x < 1, dx=(a+0.2)/2. a e x
    , если x = 1,
    11. a(x-a)
    3/2
    , если 1 <= x <= 2.5, a = 0.5; 1.0,
    Z= a/2(e x/a
    +e
    -x/a
    ), если 2.5 < x <= 4, шаг dx=a/2.
    12.
    1 2

    x
    a
    x
    , если 0.5 <= x < 1.5, a=0.1; 0.2; 0.3,
    Y = a cos x, если x = 1.5, шаг dx=2a.
    (a x
    2
    + 1)
    x
    , если 1.5 < x <= 3,
    13.
    (sin
    2
    x +a)
    2
    e a sinX
    , если 0.1<=x<= 0.5, a=0.1;0.2;0.3,
    Z = tg(x/4), если 0.5 < x <=0.9, шаг dx=a.
    2
    /
    2 2
    x
    e
    x

    1
    /
    2

    a
    x
    e

    19 14. tg(a
    2
    +sin px), если 0 <= x <= 1,
    Y = a sin(p- cos px), если 1 < x <= 2, a=0.5; 0.75; 1; lg x, если 2 < x < 3, шаг dx=a/4.
    15. Z= e
    cos x
    -a sin
    2
    (px), если 0.5 <= x <= 1.5 a=0.1;0.7;1.3, a x
    2
    - cos px, если 1.5 < x <= 2 шаг dx= a/4.
    16.
    1/x, если 0.1 <= x <= 0.4
    Y = ln(x
    2
    + ax), если 0.4 < x <= 1.2 a = 1.0; 1.5, x
    2,
    если 1.2 < x < 1.6 шаг dx = a/5.
    17. Дана непустая последовательность различных натуральных чисел, за которой следует нуль (признак конца последовательности). Определить порядковый номер наименьшего из них и его значение.
    18. Найти первый отрицательный член последовательности cos (ctg), где n = 1,2,3,... . Напечатать его номер и значение. Распечатать всю по- следовательность
    19. Вычислить наибольший общий делитель (k) натуральных чисел d и f. Оператор FOR не использовать.
    20. Дан ряд неотрицательных вещественных чисел. Определить, сколько из них больше своих «соседей»: предыдущего и последующего чисел. Признаком окончания ряда чисел считать появление отрицательного числа.
    Задание 2 (программа 4_3)
    Модифицировать (изменить) программу 3_2 для вычисления функций
    F1(x) и F2(x) с применением вместо счетного цикла оператора цикла с предусловием. Выполнить ее и сравнить результаты с полученными в пре- дыдущей работе.
    Лабораторная работа 5
    Программирование циклических алгоритмов
    с постусловием
    Стpуктуpа оператора цикла с постусловием
    do {<операторы>} while (<условие выполнения>);
    Пример. Вычислить 15 значений функций y1(x) = tg(x); и y2(x) = ctg(x) при a ≤ x ≤ b, a=0.6*Pi, b=0.7*Pi.
    Для вычислений разработана СА (рис.6) и следующая про- грамма:
    #include
    #include
    #include
    void main()

    20
    Начало
    E =10
    -5
    ,s=0, i=1
    R = 1/i
    2
    Вывод s
    Конец
    Рис.7 s = s+r, i = i+1 r≤E
    { int n=14; float a=0.6*M_PI, b=0.7*M_PI; float x, y1, y2, dx; clrscr(); dx=fabs((a-b)/n); x=a;
    do
    {
    y1=tan(x); y2=1/y1; printf ("x= %6.4f y1= %7.4f y2= %7.4f\n",x,y1,y2); x=x+dx;
    }
    while (x<=b);
    getch();
    }
    Пример 2. Вычислить сумму элементов s = 1+1/4+1/9+1/16+... c точностью до
    E = 0.00001 (рис. 7).
    #include
    #include void main ()
    { float E=0.00001; float s, r; // s- сумма, r-слагаемое int i; // счетчик слагаемых s = 0; i = 1;
    do
    {
    r = 1.0/(i*i); // вычисление слагаемых s = s + r; // s+ = r; i++ ; // i = I +1;
    }
    while (r>E); // сравнение слагаемых с Е printf ("Сумма=%9.5f\n",s); // вывод суммы getch();
    } y
    1
    = tg x , y
    2
    = ctg x n = 14, a = 0.6π b = 0.7π dx = | (a-b)\n |, x = a
    Рис.6 x x = x+dx, x>b
    Конец
    Вывод x, y
    1
    , y
    2
    Начало

    21
    Задание 1 (программа 5_1)
    Модифицировать программу 3_2 для вычисления функций F1(x) и F2
    (x) с применением оператора цикла с постусловием. Выполнить ее и срав- нить результаты с полученными ранее.
    Задание 2 (программа 5_2)
    Начертить структурную схему алгоритма, написать и отладить прог- рамму для одной из следующих задач.
    1. Вычислить приближенное значение z = arctg x и сравнить с x - x
    3
    /3
    +
    x
    5
    /5
    -
    + (-1)
    n x
    2n+1
    /(2n+1)
    + ... (|х|<1), прекращая вычисления, когда очередной член по абсолютной величине будет меньше eps=0.00001.
    2. Вычислить y = x - x
    2
    /2
    +
    x
    3
    /3
    -
    +
    (-1)
    n-1
    x n
    /n
    + ... с точностью eps=0.00001, где |x|<1. Сравнить результат с вычисленным через стан- дартную функцию значением y = LN(1+x).
    3. Вычислить y = 1 + x/1! + x
    2
    /2!
    +
    +
    x n
    /n!
    + ... с точностью eps=0.00001 и срав-нить результат с вычисленным через стандартную функцию значением y = ЕXP(x).
    4. Вычислить y = sin x = x - x
    3
    /3!
    +x
    5
    /5!
    -...+ (-1)
    n x
    2n+1
    /(2n+1)!+... с точностью eps=0.00001.
    5. Вычислить y = 1 - x
    2
    /2!
    +
    x
    4
    /4!
    -
    +
    (-1)
    n x
    2n
    /(2n)!
    + ... с точностью eps = 0.0001 и сравнить результат с вычисленным через стандартную функцию значением y = cos (x).
    6. Найти произведение цифр заданного натурального числа.
    7. Определить число, получаемое выписыванием в обратном порядке цифр заданного натурального числа.
    8. Определить номер первого из чисел sin x, sin(sin x), sin(sin(sin x)), .. , меньшего по модулю 10
    -3 9. Дана непустая последовательность различных целых чисел, за кото- рой следует нуль. Определить порядковый номер и величину наибольшего среди отрицательных чисел этой последовательности.
    10. Вычислять периметры и площади прямоугольных треугольников по длинам катетов, пока один из заданных катетов не окажется нулевым.
    11. Дана непустая последовательность положительных целых чисел, за которой следует отрицательное число (это признак конца последова- тельности). Вычислить среднее геометрическое этих чисел.
    12. Дана непустая последовательность ненулевых целых чисел, за которой следует нуль. Определить, сколько раз в этой последовательности меняется знак.
    13. Числа Фибоначчи (f n
    )
    определяются формулами f
    0
    =
    f
    1
    =
    1
    ; f n
    =
    f n-1
    +
    f n-2 при n = 2,3,... .
    Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000.

    22 14. Дана непустая последовательность положительных вещественных чисел х
    1
    , х
    2
    , х
    3
    ,..., за которыми следует отрицательное число. Вычислить величину х
    1
    + 2х
    2
    + ... + (N-1)x
    N-1
    +
    N
    х
    N
    , где N заранее не известно.
    15. Вычислить длины окружностей, площади кругов и объемы шаров для ряда заданных радиусов. Признаком окончания счета является нулевое значение радиуса.
    16. Определить, есть ли среди цифр заданного числа одинаковые.
    17. Определить, является ли заданное натуральное число палиндро- мом, т. е. таким, десятичная запись которого читается одинаково слева направо и справа налево.
    18. Вычислить наименьшее общее кратное натуральных чисел a и b.
    19. Дано число L. Определить первый отрицательный член последова- тельности х
    1
    , х
    2
    , х
    3
    ,..., где х
    1
    = L, x i
    = tg(x i-1
    ).
    20. Определить, является ли заданное натуральное число совершен- ным, т.е. равным сумме всех своих (положительных) делителей, кроме самого этого числа (например, совершенное число 6=1+2+3).
    Задание 3 (программа 5_3)
    Модифицировать программу 4_1 с использованием оператора цикла с постусло- вием do … while и сравнить с полученными результатами в работе 4.
    Лабораторная работа 6
    Программирование алгоритмов обработки одномерных массивов
    Цель работы: научиться разрабатывать и отлаживать программы с использованием регулярных типов (векторов).
    Массивнабор элементов, способных хранить данные одинакового
    типа. Объявляя массив, необходимо сначала указать тип хранимых дан- ных, имя массива и его размер в квадратных скобках. Размером массива называется количество его элементов.
    1   2   3   4   5   6   7


    написать администратору сайта