Каждый элемент формата состоит из нескольких полей:
%[флаг][ширина][точность][модификатор_типа] тип_формата
Тип формата:
d – значением аргумента является десятичное целое число
s – значением аргумента является строка символов
f – значением аргумента является вещественное десятичное число с плавающей точкой
Ò Ширина – в данном поле устанавливается минимальная ширина поля в символах. Если число подлежащих выводу символов меньше, чем указано в этом поле, то слева и справа добавляются пробелы для достижения указанного значения. Если перед числом стоит нуль, то вместо пробелов добавляются нули.
Ò Точность – задает число подлежащих выводу десятичных знаков и должно начинаться точкой. Действие поля зависит от типа данных.
Флаг:
- | Выравнивание влево выводимого числа в пределах выделенного поля. Если этот знак не указан, то по умолчанию производится выравнивание вправо. |
+ | Выводится знак числа. Знак минус при отрицательных значениях числа выводится всегда и не зависит от наличия данного флага. |
И др.
|
|
Функция scanf() выполняет форматированный ввод данных из входного потока.
Ее синтаксис:
%[*][ширина][точность] тип_формата
% - символ начала спецификатора формата.
Если после % стоит *, то вводимое поле не присваивается ни одной из переменных, указанных в списке параметров.
Ширина – положительное десятичное число, которое определяет минимальную ширину поля в символах.
Точность – это поле задает точность для преобразуемых величин.
5. Стандартные функции ввода-вывода символьной строки в ANSI C.
Объяснить формат записи функций управления форматированным вводом-выводом.
Составить программу решения задачи: Ввести с клавиатуры две произвольные строки, объединить их, вывести на экранполученную строку и еедлину. Использовать стандартные функции ввода-вывода символьной строки.
Для ввода и вывода строк в библиотеке stdio.h содержатся специализированные функции gets и puts.
Функция gets предназначена для ввода строк и имеет следующий заголовок:
char * gets(char *buffer);
*buffer – указатель на строку
Функция puts предназначена для вывода строк и имеет следующий заголовок:
int puts(const char *string);
*string– указатель на строку
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
char s1[25];
char s2[25];
int d;
puts("Stroka 1:");
gets(s1);
puts("Stroka 2:");
gets(s2);
d=strlen(strcat(s1,s2));
printf("Stroka:%s; Dlina:%d",s1,d);
getch();
}
6. Записать общий вид оператора условного перехода if.
Объяснить схему его выполнения.
Составить программу решения задачи: Вычислить значение функции . Значение x ввести с клавиатуры, результат вывести на экран.
Имеются две формы записи условного оператора:
|
|
1. Сокращенная if (логическое условие) оператор1
2. полная if (логическое условие) оператор1 else оператор2
В первом случае вычисляется логическое условие, стоящее в скобках и, если оно истинно, то выполняется оператор1. Иначе (условие ложно) – выполнения действий передается на директиву (оператор), следующий за оператором условного перехода
Во втором случае, если логическое условие – истинно, то выполняется оператор 1, если оно ложно – выполняется оператор 2, который находится после else.
Логическое условие м.б. составным (исходя из условия задачи), т.е. объединено логическими операциями: && (логическое «И»); || (логическое «ИЛИ»); == (равно);!= (не равно).
Следует помнить, что:
По веткам «истина» и «ложь» всегда следует по 1 директиве (оператору) языка. Если необходимо реализация программы, где используется более 1-ой директивы, то используют составной оператор (операторные скобки): {…..}.
7. Записать общий вид оператора выбора switch.
Объяснить схему его выполнения.
Составить программу решения задачи: Вычислить значение функции с использованием оператора switch:
. Значение k ввести с клавиатуры, результат вывести на экран.
Оператор-переключатель switch (переключатель), вызывает передачу управления к одному из нескольких операторов, в зависимости от значения выражения переключатель. Оператор имеет форму:
switch (выражение) {
case выражение: оператор1; break;
case выражение: оператор2; break;
……………………………..
case выражение: оператор n; break;
………………
default: оператор;}
Выражение, следующее за ключевым словом switch в круглых скобках, может быть любым выражением, допустимыми в языке С, значение которого должно быть целым типом.
Схема выполнения оператора switch следующая:
1. Вычисляется выражение в круглых скобках;
2. Вычисленные значения последовательно сравниваются с константными выражениями, следующими за ключевыми словами case;
3. Если одно из константных выражений совпадает со значением выражения, то управление передается на оператор, помеченный соответствующим ключевым словом case;
4. Если ни одно из константных выражений не равно выражению, то управление передается на оператор, помеченный ключевым словом default, а в случае его отсутствия управление передается на следующий после switch оператор.
Особенность использования оператора switch: конструкция со словом default может быть не последней в теле оператора switch. Ключевые слова case и default в теле оператора switch существенны только при начальной проверке, когда определяется начальная точка выполнения тела оператора switch. Все операторы, между начальным оператором и концом тела, выполняются вне зависимости от ключевых слов, если только какой-то из операторов не передаст управления из тела оператора switch. Таким образом, программист должен сам позаботится о выходе из case, если это необходимо. Чаще всего для этого используется оператор break.
8. Записать общий вид оператора выбора for.
Объяснить схему его выполнения.
Составить программу решения задачи: Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (0 < n < 18). Значение n ввести с клавиатуры, результат вывести на экран.
for (выражение 1; выражение 2; выражение 3) тело цикла;
Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.
|
|
Существенно то, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным.
Следует помнить, что в теле цикла допускается только одна директива (оператор) языка, но если есть необходимость использования более 1 директивы (оператора) – используется составной оператор (операторные скобки): {……}
9. Понятие одномерного массива.
Объяснить правила объявления и инициализации одномерного массива.
Составить программу решения задачи: Для одномерного произвольного массива А(10) вычислить сумму его отрицательных элементов. Значения элементов массива ввести с клавиатуры, результат вывести на экран.
Массив – это совокупность элементов одного типа, объединенных одним именем.
При объявлении массива в программе определяется имя массива, тип его элементов, размерность и размер. Размерность массива определяется количеством индексов при обращении к элементам массива. Массивы бывают одномерные, двухмерные, многомерные.
При объявлении одномерного массива необходимо учитывать правила:
Ò Массив должен иметь тип и уникальное имя.
Ò Следует указать количество значений, которые массив будет хранить.
Ò Все сохраняемые в массиве значения должны быть одного и того же типа. Следующее объявление создает массив с именем massiv, который может вмещать 100 целых значений:
int massiv[100];
Инициализация одномерного массива – задание значений элементов массива при объявлении.
int a[5]={1, 2, 3, 4, 5}; //массив с инициализацией его элементов
10. Понятие двумерного массива.
Объяснить правила объявления и инициализации двумерного массива.
Составить программу решения задачи: Для двумерного произвольного массива А(5,5) вычислить произведение элементов главной диагонали. Значения элементов массива ввести с клавиатуры, результат вывести на экран.
Двумерный массив - это массив одномерных массивов. Двумерный массив объявляется следующим образом:
|
|
тип имя_массива[размер второго измерения][размер первого измерения];
Следовательно, для объявления двумерного массива целых с размером 10 на 20 следует написать:
int d[10] [20];
Двумерные массивы сохраняются в виде матрицы, где первый индекс отвечает за строку, а второй - за столбец.
Ò Инициализация многомерного массива происходит построчно, т.е. в порядке возрастания самого правого индекса.
Ò Инициализация двумерного массива с четырьмя элементами:
Ò int mas[2][2]={23,54,16,43};
11. Понятие строки.
Объяснить правила объявления и инициализации строки.
Составить программу решения задачи: Ввести с клавиатуры произвольную строку, определить, имеется ли в строке заданный символ.
Строка (строковый литерал) - разновидность массива.
В С отсутствует специальный строковый тип. Вместо этого строки представляются, как массив элементов типа char, в конце которого помещен нуль символ ‘\0 ’.