Застосування функції 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
/ * Подвійну кількість зерен на наступній клітці * /
total = total + current; / * Корекція суми * /
printf ( "% 4d% 15.2e% 13.2e% 12.2e \ n", count,
current, total, total / CROP);
Це приклад складеного оператора. Від відкриває фігурної дужки оператора while до закриває фігурної дужки.
Складовою оператор використовується в наступних випадках:
Щоб згрупувати кілька логічних пов'язаних операторів в один оператор.
Як тіла функції.
Для обмеження видимості визначень частиною програми, тобто для локалізації дії описів.
Складовою оператор має наступну форму:
визначення і опису
Визначення змінних всередині складеного оператора мають більший пріоритет, ніж визначення змінних з тим же ім'ям для області дії складеного оператора. Ці змінні видимі, тобто доступні, тільки всередині складеного оператора. Глобальні змінні є видимими всередині складеного оператора лише за умови, що їх визначення не змінені локальними визначеннями.
Застосовуйте відступи від поля в рядках, щоб зробити структуру програми наочної!
Вираз складається з операцій і операндів.
Оператор служить командою компілятору. Оператори бувають простими і складеними. Прості оператори закінчуються символом "крапка з комою". приклади: