БИЛЕТ 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();
}