Тренировочные задания: Форматированный ввод-вывод

Десять задач на форматирование: ширина поля, точность, флаги и правильные спецификаторы ввода-вывода. Все задачи решаются без использования циклов и условий.

Задача 1. Ширина поля

Выведите число 42 в поле шириной 8 символов сначала по правому краю, затем по левому. Обрамите вертикальными чертами, чтобы видеть границы.

Пример вывода:

|      42|
|42      |
Решение
#include <stdio.h>

int main(void)
{
    printf("|%8d|\n", 42);
    printf("|%-8d|\n", 42);

    return 0;
}

Задача 2. Точность

Выведите число pi = 3.14159265 с точностью 2, 4 и 6 знаков после точки.

Пример вывода:

3.14
3.1416
3.141593
Решение
#include <stdio.h>

int main(void)
{
    double pi = 3.14159265;

    printf("%.2f\n", pi);
    printf("%.4f\n", pi);
    printf("%.6f\n", pi);

    return 0;
}

Задача 3. Нули слева

Выведите число 42 в поле шириной 6 символов, дополнив его нулями.

Пример вывода:

000042
Решение
#include <stdio.h>

int main(void)
{
    printf("%06d\n", 42);

    return 0;
}

Задача 4. Знак числа

Считайте целое число и выведите его со знаком: у положительного должен печататься плюс.

Пример ввода:

5

Пример вывода:

+5
Решение
#include <stdio.h>

int main(void)
{
    int x;

    scanf("%d", &x);
    printf("%+d\n", x);

    return 0;
}

Задача 5. Проценты

Выведите долю 0.2567 в процентах: один знак после точки и символ процента.

Пример вывода:

25.7%
Решение
#include <stdio.h>

int main(void)
{
    double part = 0.2567;

    printf("%.1f%%\n", part * 100);   /* %% — печатает один знак процента */

    return 0;
}

Задача 6. Шестнадцатеричный вид

Выведите число 255 в шестнадцатеричном виде: с префиксом 0x и без него.

Пример вывода:

0xff ff
Решение
#include <stdio.h>

int main(void)
{
    int n = 255;

    printf("%#x %x\n", n, n);

    return 0;
}

Задача 7. Строка отчёта

Выведите одну строку отчёта: номер позиции 7 в поле шириной 4 по левому краю и сумму 1234.5 в поле шириной 8 с двумя знаками после точки.

Пример вывода:

7    1234.50
Решение
#include <stdio.h>

int main(void)
{
    printf("%-4d%8.2f\n", 7, 1234.5);

    return 0;
}

Задача 8. Квадрат числа

Считайте дробное число и выведите его квадрат с точностью 3 знака. Обратите внимание на %lf при вводе.

Пример ввода:

1.5

Пример вывода:

2.250
Решение
#include <stdio.h>

int main(void)
{
    double x;

    scanf("%lf", &x);
    printf("%.3f\n", x * x);

    return 0;
}

Задача 9. Три вида одного числа

Для числа 3.7 выведите в одну строку: целую часть, дробную часть с 3 знаками и само число с 1 знаком.

Пример вывода:

3 0.700 3.7
Решение
#include <stdio.h>

int main(void)
{
    double x = 3.7;
    int whole = (int)x;

    printf("%d %.3f %.1f\n", whole, x - whole, x);

    return 0;
}

Задача 10. Ширина и точность вместе

Выведите число 3.14159 в поле шириной 8 с двумя знаками после точки, обрамив вертикальными чертами.

Пример вывода:

|    3.14|
Решение
#include <stdio.h>

int main(void)
{
    printf("|%8.2f|\n", 3.14159);

    return 0;
}

Подтверждение

—