Застосування функції scanf ()

Оскільки ми будемо користуватися функцією scanf () епізодично, ми розглянемо тут тільки основні особливості її застосування. Для функції scanf () вказується керуюча рядок і наступний за нею список аргументів. Основна відмінність функцій printf () і scanf () полягає в особливостях даного списку. Функція printf () використовує імена змінних, константи і вирази. а функція scanf () - тільки покажчики на змінні. Ми нічого не повинні знати про такі покажчиках. Необхідно пам'ятати тільки два правила:

Якщо нам потрібно ввести деяке значення і привласнити його змінної одного з основних типів, то перед ім'ям змінної потрібно писати символ .

Якщо ми хочемо ввести значення строкової змінної, використовувати символ не потрібно.

printf ( "Введіть ваш вік, оклад, прізвище. \ n");

scanf ( ".% f", age, assets);

scanf ( "% s", fio); / * відсутня при вказівці

printf ( ". $%. 0f% s \ n", age, assets, fio);

Функція scanf () використовує деякі спеціальні знаки, пропуски, символи табуляції і "новий рядок", для розбиття вхідного потоку символів на окремі поля. Вона погодить послідовність специфікацій перетворення з послідовністю полів, опускаючи згадані спеціальні знаки між ними. Винятком є ​​специфікація% c, що забезпечує читання кожного наступного символу навіть в тому випадку, якщо це порожній символ.

Функція scanf () використовує той же набір символів специфікації перетворення. що і функція printf (). Основні відмінності функції scanf () наступні:

Відсутня специфікація% g.

Специфікації% f і% e еквівалентні. Обидві специфікації допускають наявність або відсутність знака рядка цифр з десятковою крапкою або без неї і поля показника ступеня.

Для читання цілих чисел типу short застосовується специфікація% h.

Функція scanf () не є однією з найбільш часто використовуваних функцій мови Сі. Ми обговорюємо її з-за універсальності.

Особливості роботи з мовою Сі. Завдання фіксованої ширини полів виявляється корисним при якому інформацію стовпчиком.

printf ( "..% 5d \ n", val1, val2, val3);

Результат виглядає так:

22222 3332 11111

Ці ж дані можна представити в покращеному вигляді, якщо задати чималу фіксовану ширину поля:

printf ( "% 9d% 9d% 9d \ n", val1, val2, val3);

Результат буде виглядати так:

22222 3332 11111

Якщо друковане число включено в деяку фразу, то часто при його виведенні виявляється зручним задати ширину поля рівної або менше необхідної. Це дає можливість включити число в фразу без додавання зайвих прогалин.

А тепер розглянемо два приклади роботи з циклом while:

int main () / * отримання квадратів * /

printf ( "% 10d% 10d \ n", n, n * n);

Ця програма виводить на друк перші 10 чисел і їх квадрати.

Згідно з легендою, один правитель обіцяв нагородити вченого, що надало йому велику послугу. Вчений, коли його запитали, що б він хотів отримати в нагороду, зазначив на шахову дошку і сказав: "Покладіть одне пшеничне зерно на першу клітку, два - на другу, чотири на третю, вісім на наступну і т.д." Правитель був вражений, почувши таку скромну прохання. Програма, приведена нижче, показує, в яке становище потрапив правитель!

#define NUMBER 64 / * число клітин на шахівниці * /

#define CROP 7E14 / * весь урожай пшениці,

виражений в числі зерен * /

double current, total;

printf ( "КЛЕТКА ЧИСЛО СУМА ЗЕРЕН ДОЛЯ \ n");

total = current = 1.0; / * починаємо з одного зерна * /

printf ( "% 4d% 15.2e% 13.2e% 12.2e \ n", count,

current, total, total / CROP);

while (count count = count + 1;

/ * Подвійну кількість зерен на наступній клітці * /

total = total + current; / * Корекція суми * /

printf ( "% 4d% 15.2e% 13.2e% 12.2e \ n", count,

current, total, total / CROP);

Це приклад складеного оператора. Від відкриває фігурної дужки оператора while до закриває фігурної дужки.

Складовою оператор використовується в наступних випадках:

Щоб згрупувати кілька логічних пов'язаних операторів в один оператор.

Як тіла функції.

Для обмеження видимості визначень частиною програми, тобто для локалізації дії описів.

Складовою оператор має наступну форму:

визначення і опису

Визначення змінних всередині складеного оператора мають більший пріоритет, ніж визначення змінних з тим же ім'ям для області дії складеного оператора. Ці змінні видимі, тобто доступні, тільки всередині складеного оператора. Глобальні змінні є видимими всередині складеного оператора лише за умови, що їх визначення не змінені локальними визначеннями.

Застосовуйте відступи від поля в рядках, щоб зробити структуру програми наочної!

Вираз складається з операцій і операндів.

Оператор служить командою компілятору. Оператори бувають простими і складеними. Прості оператори закінчуються символом "крапка з комою". приклади: