Процедурное программирование на языке С. Часть 1. Основные понятия языка С: Методические указания к лабораторным работам по курсам «Алгоритмические языки и программирование» и «Процедурное программирование», страница 3

Пример 1.3.

#include <stdio.h>

#include <windows.h>

#define N 30

  void main (void)

{   int j, i,n;       float B[30], C[30]; char text[40], str_format[40];

  CharToOem("\n Введите значение  n  =  ", text);

CharToOem("\n %d-йэлемент = %f ", str_format);

  printf(text);      scanf("%d",&n);

 CharToOem("\nИсходныймассив: \n ", text);    printf(text);    

B[0]=2.5;     i=0;   printf(str_format,0,B[0]);

while (i<n-1)

 {  B[i+1]=B[i]+(float)(i+1)/2;         

    printf(str_format,i+1,B[i+1]); i++;

}

for (j=0;j<n;j++)     C[j]= B[n-1-j];

CharToOem("\n Инвертированный  массив:  ", text);

printf(text);

for(i=0; i<n; i++)    printf(str_format,i,C[i]);

}


КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАНИЯ

1. Какие этапы обработки  проходит исходный текст программы с целью создания соответствующего исполнимого модуля?

2. Объясните назначение препроцессора на примере директивы

#include <имя заголовочного файла>.

3. Чем характеризуется переменная в соответствии с оператором ее объявления?

4. Почему тип переменной однозначно определяет границы диапазона,  которому принадлежат значения этой переменной?

5. Имеет ли переменная значение после ее объявления?

6. Что происходит в момент выполнения оператора вызова функции scanf()?

7. Переменные a, b, d, e имеют следующие значения: a = 2, b = 3, d = 5, e = 1.

    Как изменятся эти значения после выполнения оператора:

a * = b = ++с –  ––d + e++ ;

8. Что будет на экране после выполнения операторов:

int k= -2, t=1, a ; t++;    a*=k--+t;

printf ("\na = %d", a);   printf ("\nk = %d", k++); 

printf ("\nt = %d", t+ k);

9. В чем разница инициализации массива символов:

    /*1 вариант*/ char ch[]={'t', 'o','d','a', 'y'};

    /*2 вариант*/   char ch[]="today";

  Что будет в каждом варианте на экране после выполнения оператора:

printf("%s",ch);

10. Как изменится значение i в зависимости от значения x?

if ((x-5)>0)||++i)

11. В чем разница выполнения циклов в следующих фрагментах программ?

Какие значения принимают переменные s и j в обоих фрагментах?

Фрагмент 1.                                                         Фрагмент 2.

j = – 1; s = 0;                  j = – 1; s = 0;

for (i=0; i < 2; i++, j=i)       for (i=0; i < 2; i++)

    { s+=j;}                          { s+=j; j=i;}

12. Выбрать вариант правильного ответа.        Фрагмент программы:

i=– 1;     do i++;    while (с[i]<0);

  Выполнение операторов приводит к следующему:

    –  определяется элемент массива, равный 0;

    –  определяется элемент массива, меньший 0;

    –  определяется элемент массива, не меньший 0;

    –  такая последовательность операторов считается  недопустимой.      

13. Выбрать вариант правильного ответа.  Фрагмент программы:

i = 6;     for ( ; ; )    if (i++ > 13) break;

     –  увеличивает i до 15 ;

     –  пример бесконечного цикла;

     –  правильный вариант отсутствует.


ЛАБОРАТОРНАЯ  РАБОТА  2

Целью лабораторной работы  2 является освоение основных правил работы с функциями.

ЗАДАНИЕ

Ниже приведены  25 заданий вида.

Дано k = 5; n=4; m=5. Определить значение , используя две функции, каждая из которых вычисляет значение одного слагаемого.

Задания различаются  видом 1-го и 2-го слагаемого и значениями переменных  n и mТребуется описать две функции: первая функция fun1()  вычисляет первое слагаемое, вторая функция fun2() вычисляет второе слагаемое. Каждая функция имеет не более 3-х параметров: переменные  n и m.

Описать главную функцию, в которой

q  с клавиатуры ввести k : k определяется в соответствии с условием конкретного задания (например, в задании 1      k = 5). k - количество значений переменной  ;

q  в цикле ,

§ с клавиатуры ввести ; = ;

§ вычислить  по формуле, приведенной в задании, используя функции fun1()  и fun2() ;