Вторник, 21.05.2024, 07:31
Приветствую Вас, Гость

БИЛЕТ 5.

1) Константы: целые, вещественные, символьные, строковые.

Константы – неизменяемые величины. Различают целые, вещественные, символьные, строковые константы. Компилятор, выделив константу, относит ее к одному из типов по ее внешнему виду. Программист может задать тип константы самостоятельно.

Целая константа может быть записана в формате:

-десятичном: последовательность цифр, начинающаяся не с нуля, если это не число нуль (8, 0, 199226);

-восьмеричном: нуль, за которым следуют восьмеричные цифры (01, 020, 07155);

-шестнадцатеричном: 0x или 0Х, за которым следуют шестнадцатеричные цифры 0..9, А, В, С, D, F (0xA, x1B8,  0X00FF).

Вещественная константа может быть записана в формате:

-десятичном: [цифры].[цифры]. Могут быть опущены либо целая часть, либо дробная, но не обе сразу (5.7, .001, 35. ).

-экспоненциальном:  [цифры].[цифры]{E или е}[+ или -] [цифры]. Могут быть опущены либо целая часть, либо дробная, но не обе сразу. Если указаны обе части символ точки обязателен (0.2Е6, .11е-3, 5Е10)

Символьная константа - один или два символа, заключенных в апострофы (‘F’, ‘ю’, ‘*’, ‘\0’, ‘\n’).

Строковая константа–последовательность символов, заключенная в кавычки ("Hello, world!”). Последовательности символов, начинающиеся с обратной косой черты, называются управляющими и интерпретируются как одиночный символ:

\b – возврат на шаг

\f - перевод страницы

\n – новая строка

\r – переход в начало строки

\t – горизонтальная табуляция

\v – вертикальная табуляция

\\ - обратная косая черта

\’-апостроф

\0ddd – восьмеричный код символа

\0xddd – шестнадцатеричный код символа.

 

В конце каждой строковой константы компилятором добавляется нулевой символ \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи. Таким образом, пустая строка "” имеет длину 1 байт. Строковая константа из одного символа "A” будет занимать 2 байта, а символьная константа ‘А’  - 1 байт. Пустая символьная константа недопустима.

 

2) Оператор-переключатель switch.

Используется для выбора одного из многих путей. Она проверяет, совпадает ли значение выражения с одним из значений, входящих в некоторое множество целых констант, и выполняет соответствующую этому значению ветвь программы:

switch (выражение) {

    case конст-выр: оператор

    case конст-выр: оператор

    default: оператор

}

Каждая ветвь case помечена одной или несколькими целочисленными константами или же константными выражениями. Вычисления начинаются с той ветви case, в которой константа совпадает со значением выражения . Константы всех ветвей case должны отличаться друг от друга. Если выяснилось, что ни одна из констант не подходит, то выполняется ветвь, помеченная словом default, если таковая имеется, в противном случае ничего не делается. Ветви case и default можно располагать в любом порядке.


3.   Напишите функцию поиска количества максимальных элементов  в массиве

# include <stdio.h>

# include <stdlib.h>

  const n=10;

  int mas[n];

  int max,kol;

 

int poisk(int a[])

{ int k=1;

  max=a[0];

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

    if (a[i]>max) { max=a[i]; k=1;}

    else if (a[i]==max) k++;

  return k;

}

void main()

{

  randomize();

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

    mas[i]=5+random(10);

  kol=poisk(mas);

}


4.   Найти все простые числа из интервала 2..N ( N<=80000).

#include<stdio.h>

#include<conio.h>

char mask[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

void main()

{

clrscr();

const long MAX=80000;

char newMAX[MAX/8];

for(long i=0;i<MAX/8;i++)

    newMAX[i]=0xFF;

for(i=2;i<=MAX/2;i++)

    if(newMAX[i/8] & mask[i%8])

       {

            long d=2*i;

            for(;d<MAX;d+=i)

                newMAX[d/8] &= ~mask[d%8];

       }

    for(i=2;i<MAX;i++)

       {

            if(newMAX[i/8] & mask[i%8])

              {

               printf("%8lu",i);

               if (wherey() == 25)

                  {

                   getch();

                   clrscr();

                  }

              }

      }

getch();

}