Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_OT-1.doc
Скачиваний:
16
Добавлен:
17.03.2016
Размер:
1.15 Mб
Скачать

Scanf(“керуючий рядок”,аргумент1,аргумент2,...);

Керуючий рядок аналогічний як і для функції printf. Якщо після % стоїть знак *, це означає заборону присвоювання.

Аргументи функції scanf на відміну від printf повинні бути вказівниками на відповідні значення (перед іменем змінної ставиться знак взяття адреси &).

Приклади використання функції scanf:

Scanf(“%d %f %c %s”,&I,&j,&k,l);

Команда виконує наступне: зчитує значення, введенні з клавіатури через пропуски, змінної і в десятковому вигляді, змінної j як дійсного числа, змінної k як символу, змінної l як рядка символів. Перед l немає знаку & оскільки рядок є масивом символів, наприклад l[20], а l при цьому є адресою першого елементу масиву.

Scanf(“%d %*d %d”, &I,&j);

При введення значень 5 7 9 змінній i присвоїться значення 5, j - 9, значення 7 буде проігноровано (через знак * після %).

Scanf(“%d,%d”,&n,&m);

У цьому випадку інформацію необхідно вводити через кому.

Приклад 1. Продемонструвати введення та виведення інформації цілого та дійсного типів, символів та беззнакових величин.

#include <stdio.h>

main()

{

int a;

char b;

float c;

double d;

short x;

long y;

unsigned z;

scanf("%d %c %f %lf %d %ld %u",&a,&b,&c,&d,&x,&y,&z);

printf("%d %c %9.5f %19.11f\n %d %ld %u",a,b,c,d,x,y,z);

}

Цифри 9.5 для змінної c типу float в прикладі означають, що виділяється загалом 9 позицій для виведення змінної, причому 5 з них для розрядів після коми. Аналогічно 19.11 для змінної d типу double.

Приклад 2. Продемонструвати виведення рядків символів з різним вирівнюванням та форматом, та виведення дійсних чисел у форматах f, e, g.

#include <stdio.h>

main( )

{

char s[30];/*задається рядок з 30 символів*/

float a=86.531;

printf("%s\n","Electrical Drive Department");

/*виведення звичайного тексту*/

printf("Input String\n");

scanf("%s",s);

/*зчитування рядка*/

printf("( 20s):%20s\n",s);

/*виводить рядок на екран, вирівнювання вліво від 20-ої позиції*/

printf("( -20s):%-20s\n",s);

/*виводить рядок на екран, вирівнювання вправо від 1-ої позиції*/

printf("( 20.10s):%20.10s\n",s);

/*цифра після крапки задає максимальне число символів, які необхідно*/

/*вивести з рядка при вирівнюванні вліво від 20-ої позиції*/

printf("( -20.10s):%-20.10s\n",s);

/*цифра після крапки задає максимальне число символів, які необхідно*/

/*вивести з рядка при вирівнюванні вправо від 1-ої позиції*/

printf("( .10s):%.10s\n",s);

/*з рядка буде виведено 10 символів в поле з 10 символів*/

/*зайві символи відкидаються*/

printf("%%\n");

/*приклад виведення знаку %*/

printf("a=%e\n",a);

printf("a=%f\n",a);

printf("a=%g\n",a);

/*приклади виведення дійсного числа в різних форматах*/

}

Приклад 3. Продемонструвати можливості введення даних через пропуск, без пропуску, через кому, ігнорування введених даних, обмеження кількості символів, які присвоюються масиву символів.

#include <stdio.h>

main( )

{

int a,b;

char c[50],d,f;

printf("Input 3 integer and string\n");

/*введіть 3 цілих і рядок*/

scanf("%d %*d %d %s",&a,&b,c);

/*демонстрація ігнорування другої введеної змінної*/

printf("a=%d; b=%d; c=%s\n",a,b,c);

printf("Input integer and symbol without space\n");

/*введіть ціле і символ без пропуску*/

scanf("%d%c",&a,&d);

printf("a=%d; d=%c\n",a,d);

printf("Input 2 unteger devided by comma\n");

/*введіть 2 цілих, розділених комою*/

scanf("%d,%d",&a,&b);

printf("a=%d; b=%d\n",a,b);

printf("Input string\n");

/*введіть рядок*/

scanf("%3s\n",c);

/*з введеного рядка змінній с присвоюються лише 3 перші символи*/

printf("c=%s",c);

}

    1. У випадку, коли необхідно виконати зчитування або виведення на екран рядкових змінних, доцільно використовувати функції puts() та gets() для виведення та введення відповідно, наприклад:

puts("Electric drive");

gets(vstring);

Приклад 4. Продемонструвати зчитування рядка символів за допомогою команди gets та виведення його на екран за допомогою команди gets та виведення його на екран за допомогою команди puts.

#include <stdio.h>

main( )

{

char q[40];

puts("Input string");

/*введіть рядок символів*/

gets(q);

/*зчитування рядка символів з клавіатури*/

puts(q);

/*виведення рядка символів на екран*/

}

  1. ЗАВДАННЯ НА РОБОТУ

Розробити та запустити у роботу програму на мові програмування “СІ”, яка вирішує задачу відповідно до заданого нижче варіанта.

    1. Зчитати два цілих числа a та b, та дійсне число с з клавіатури, введені через кому . Розрахувати значення виразу d=(a2+b2)/(c-b), та вивести a, b, c, d на екран у наступному форматі: для кожної змінної виділено 10 позицій; для дійсних чисел виводити 3 знаки після коми, вирівнювання по правому краю поля, виведення через пробіл.

    2. Зчитати два цілих числа k та m, та дійсне число p з клавіатури, введені через пробіл. Розрахувати значення виразу u=(k-m2)/(p+k+m), та вивести k, m, p, u на екран у наступному форматі: для кожної змінної виділено 15 позицій; для дійсних чисел виводити 1 знак після коми, вирівнювання по лівому краю поля, виведення через кому.

    3. Зчитати два дійсних числа j та u, та ціле беззнакове число m з клавіатури, введені через крапку з комою ;. Розрахувати значення виразу l=(j+u-m)/(ju-m2), та вивести j, u, m, l на екран у наступному форматі: для кожної змінної виділено 8 позицій; для дійсних чисел виводити 5 знаків після коми, вирівнювання по лівому краю поля, виведення через кому.

    4. Зчитати 4 символи, введені через кому. Вивести числові коди прочитаних символів на екран у наступному форматі: для кожної змінної виділено 3 позиції, вирівнювання по правому краю поля, виведення через крапку з комою.

    5. Зчитати три цілих беззнакових числа a, b, c, введених через знак /;. Розрахувати значення виразу k=(a+b+c), та вивести на екран a, b у вісімковій формі, k та с у шістнадцятковій у наступному форматі: для кожної змінної у вісімковій формі виділено 8 позицій, у шістнадцятковій – 4 позиції, вирівнювання по правому краю поля, виведення через пробіл.

    6. Зчитати 6 цілих коротких числа, введених через пробіл. Вивести числа на екран у шістнадцятковій формі у наступному форматі: дві змінні у одному рядку, на початку рядку горизонтальна табуляція, для кожної змінної виділено 5 позицій, вирівнювання по правому краю поля, виведення через знак /.

    7. Зчитати 4 символи та одне ціле беззнакове число, що записані одним рядком. Вивести змінні на екран у вісімковій формі у наступному форматі: на початку рядку горизонтальна табуляція, для кожної змінної виділено 6 позицій, вирівнювання по лівому краю поля, виведення через кому.

    8. Зчитати поточну дату із клавіатури у наступному форматі день/місяць/рік як змінні цілого типу. Вивести дату у форматі: місяць день рік, із одним вільним рядком між введеним та виведеним значенням.

    9. Зчитати дійсні числа a, b, c, записані через знак -. Розрахувати значення d=(a2+b2)/c. Вивести змінні на екран у наступному форматі: одна змінна у рядку, на початку рядку горизонтальна табуляція, для кожної змінної виділено 10 позицій, 5 позицій після коми, вирівнювання по правому краю поля, виведення через пробіл.

    10. Зчитати 6 символів, записаних одним рядком. Вивести десяткові коди змінних на екран у наступному форматі: дві змінні у рядку, для кожної змінної виділено 20 позицій, вирівнювання по правому краю поля, виведення через кому.

  1. КОНТРОЛЬНІ ЗАПИТАННЯ

    1. Які команди слугують для форматованого введення-виведення.

    2. Який формат керуючого рядка у командах форматованого введення-виведення.

    3. Як змінити ширину поля, що відводиться для виведення змінної

    4. Які команди застосовуються для введення-виведення рядків.

    5. За допомогою яких команд реалізується введення та виведення окремих символів.

Комп’ютерний практикум № 11

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]