СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Лекция 8 "Программирование на Си"

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Лекция 8 "Программирование на Си"»

Введение в программирование Лекция 8.  Примеры решения задач

Введение в программирование

Лекция 8.

Примеры решения задач

Примеры решения задач  Задание З_1. Составить схему и трассировочную таблицу для данной программы. Входной тест имеет вид: 24 60 /* Программа З_1        */  #include   void main (void) { int x, y;  scanf ( 0 && y 0) if (x y) x = x - y; else y = y - x; if (y == 0) printf ("%d", x); else printf ("%d", y); } " width="640"

Примеры решения задач

  • Задание З_1. Составить схему и трассировочную таблицу для данной программы.

Входной тест имеет вид: 24 60

/* Программа З_1 */ #include void main (void)

{ int x, y;

scanf ("%d %d", &x, &y);

while (x 0 && y 0)

if (x y) x = x - y;

else y = y - x;

if (y == 0) printf ("%d", x);

else printf ("%d", y); }

Примеры решения задач Решение задания З_1.  Схема программы З_1 приведена на рис. 8.1.

Примеры решения задач

Решение задания З_1.

Схема программы З_1 приведена на рис. 8.1.

0 &&y0 да да нет да да да xy нет нет нет y==0 да Результат: 12 Вывод " width="640"

Примеры решения задач

Табл.8.1. Трассировочная таблица программы З_1

x=

24

12

y=

0

12

36

60

x0 &&y0

да

да

нет

да

да

да

xy

нет

нет

нет

y==0

да

Результат: 12

Вывод

Примеры решения задач Задание З_2. Вычислить объем памяти для данных, определенных следующим образом: int r[100]; float x[10], z; char t[] = “KGTU

Примеры решения задач

Задание З_2. Вычислить объем памяти для данных, определенных следующим образом:

int r[100];

float x[10], z;

char t[] = “KGTU"; char *s;

Решение задания З_2.

объем = sizeof(r) + sizeof(x) + sizeof(z) + sizeof(t) + sizeof(s) = = (2*100 + 4*10 + 4 + 5 + 4) байт = 253 байт Значением операции sizeof (тип) или sizeof выражение является количество байтов, необходимое для хранения в памяти данного типа или данного выражения.

Примеры решения задач Задание З_3. Дана последовательность из целых чисел - количество очков каждого из 500 участников соревнований. Определить порядковые номера участников, набравших максимальное количество очков.  Составить схему и C-программу. Решение задания З_3 - программа З_3 и          схема программы на рис. 8.2. КГТ (КАИ), кафедра АСОИУ

Примеры решения задач

  • Задание З_3. Дана последовательность из целых чисел - количество очков каждого из 500 участников соревнований.

Определить порядковые номера участников, набравших максимальное количество очков. Составить схему и C-программу.

Решение задания З_3 - программа З_3 и схема программы на рис. 8.2.

КГТ (КАИ), кафедра АСОИУ

max нет да r[n]=max да max=r[n] Выв. n+1 Конец Рис. 8.2. Схема программы З_3 7 " width="640"

Примеры решения задач

Схема программы на рис. 8.2.

З_3

Ввод max

r[0] = max

n = 1, 499, 1

Вывод заголов.

Ввод r[n]

n=0,499,1

нет

r[n]max

нет

да

r[n]=max

да

max=r[n]

Выв. n+1

Конец

Рис. 8.2. Схема программы З_3

7

Примеры решения задач /* Программа З_3.             */  /* Получение номеров с максимальным результатом    */ #include   #define K 500     /* Количество участников    */ void main (void) { int r[K];      /* результаты участников    */  int max;      /* максимальный результат   */  int n;       /* текущий номер участника   */  /* Ввод и определение максимального результата     */  printf ( max) max = r[n]; } 7 7 " width="640"

Примеры решения задач

/* Программа З_3. */ /* Получение номеров с максимальным результатом */

#include #define K 500 /* Количество участников */

void main (void)

{ int r[K]; /* результаты участников */ int max; /* максимальный результат */ int n; /* текущий номер участника */

/* Ввод и определение максимального результата */ printf ("\nВведите результаты\n");

scanf ("%d", &max); r[0] = max;

for (n=1; n

if (r[n] max) max = r[n]; }

7

7

Примеры решения задач /* Определение номеров победителей        */  printf (

Примеры решения задач

/* Определение номеров победителей */ printf ("\nНомера победителей:\n");

for (n=0; n

if (r[n] == max) printf (" %d", n+1); /* 1..K */ }

  • Задание З_4. Составить подпрограмму подсчета количества повторений заданного символа в данной строке. Привести пример ее вызова.
  • Решение А. Результат - возвращаемое значение, s – массив символов строки.

7

7

Примеры решения задач /* Программа З_4а             */  /* Функция: количество повторений символа c в строке s    */ int kol_simv (int c, char s[]) { int kol;     /* Значение функции       */  int i;      /* Индекс текущего символа строки   */  kol = 0;  for (i = 0; s[i] != '\0'; i++)  if (s[i] == c) kol++;  return kol;  } 7 7

Примеры решения задач

/* Программа З_4а */ /* Функция: количество повторений символа c в строке s */

int kol_simv (int c, char s[])

{ int kol; /* Значение функции */ int i; /* Индекс текущего символа строки */

kol = 0;

for (i = 0; s[i] != '\0'; i++) if (s[i] == c) kol++;

return kol; }

7

7

Примеры решения задач Решение Б. Результат - выходной параметр kol,  s - адрес строки. /* Программа З_4б             */  /* Подпрограмма: kol = кол-во повторений символа c в строке s  */ void p_kol_simv (int c, char *s, int *kol) { char *i;   /* Адрес текущего символа строки     */  *kol = 0;  for (i = s; *i != '\0'; i++)  if (*i == c) (*kol)++;  return;  } 7 7

Примеры решения задач

  • Решение Б. Результат - выходной параметр kol, s - адрес строки.

/* Программа З_4б */ /* Подпрограмма: kol = кол-во повторений символа c в строке s */

void p_kol_simv (int c, char *s, int *kol)

{ char *i; /* Адрес текущего символа строки */

*kol = 0;

for (i = s; *i != '\0'; i++) if (*i == c) (*kol)++;

return; }

7

7

Примеры решения задач Пример вызова подпрограмм kol_simv и p_kol_simv.  void main (void) { int k;  p_kol_simv ('а',

Примеры решения задач

  • Пример вызова подпрограмм kol_simv и p_kol_simv. void main (void)

{ int k;

p_kol_simv ('а', "клавиатура", &k);

printf ("\nКол. символов 'а' в слове ' клавиатура '

= %d = %d ", kol_simv ('а', " клавиатура "), k); }

Результаты тестирования: Кол. символов 'а' в слове " клавиатура " = 3 = 3

7

7

Примеры решения задач Задача 8.2. Составить подпрограмму удаления букв ‘ы’ из данной строки. Подсчитать количество удаленных букв. Тест.  Входные данные:  Выходы    Выходные данные:  Вход int ud ( char s[ ] ) { int i,          /* индекс чтения    */  j=0;         /* индекс записи    */  for ( i = 0; s[i] != ‘\0’; i++)   if ( s[i] != ‘ы’ )  s[j++] = s[i];  s[j] = ‘\0’;   return i – j;  } 7 7

Примеры решения задач

  • Задача 8.2. Составить подпрограмму удаления букв ‘ы’ из данной строки. Подсчитать количество удаленных букв.
  • Тест. Входные данные: Выходы Выходные данные: Вход

int ud ( char s[ ] )

{ int i, /* индекс чтения */ j=0; /* индекс записи */

for ( i = 0; s[i] != ‘\0’; i++)

if ( s[i] != ‘ы’ ) s[j++] = s[i];

s[j] = ‘\0’;

return i – j; }

7

7

Примеры решения задач /* Драйвер для проверки работы подпрограммы    */  /* удаления заданного символа в данной строке    */ void main (void)  { int st[80]; int k=0;  gets(st);  k=ud(‘ ы ’, st);  puts(st);  printf(“\n Количество удаленных букв = %d”, k);  } 7 7

Примеры решения задач

/* Драйвер для проверки работы подпрограммы */ /* удаления заданного символа в данной строке */

void main (void) { int st[80]; int k=0;

gets(st);

k=ud(‘ ы ’, st);

puts(st);

printf(“\n Количество удаленных букв = %d”, k); }

7

7