С какой точностью выводить цифры - C (СИ)
Формулировка задачи:
Как задать точность, с которой программа должна выдавать значения чисел, т.е. количество знаков после запятой, если эта цифра не известна, а задается с клавиатуры?
Решение задачи: «С какой точностью выводить цифры»
textual
Листинг программы
#include <stdio.h>
int main()
{
int precision = 0;
char szFmt[8] = {0};
while(1)
{
printf("Enter precision : ");
if(!scanf("%d", &precision) || getchar() != '\n')
{
printf("Incorrect input\n");
while(getchar() != '\n'){}//очистка буффера
}
else
{
sprintf(szFmt, "%%.%02df\n", precision);
printf( szFmt, 1.0 / 17);
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде пользователь вводит точность, затем программа проверяет корректность ввода. Если ввод корректен, программа использует функцию sprintf для форматирования строки и затем выводит результат на экран.
- Объявлены переменные:
- precision (точность) типа int
- szFmt (строка формата) типа char[]
- В цикле while(1) происходит следующее:
- Выводится приглашение для ввода точности
- Пользователь вводит точность, которую программа проверяет на корректность
- Если ввод некорректен, программа выводит сообщение об ошибке и очищает буфер ввода
- Если ввод корректен, программа использует функцию sprintf для форматирования строки формата
- Форматированная строка выводится на экран
- Значение переменной precision считывается функцией scanf в блок if
- Если scanf не удалось считать значение или после него не было символа новой строки, программа выводит сообщение об ошибке и очищает буфер ввода
- Если scanf успешно считало значение, программа использует функцию sprintf для форматирования строки формата
- В формате указывается точность ввода с помощью спецификатора формата %. Затем в формате указывается ширина поля ввода 02d, чтобы выводилось всегда 2 знака после запятой. Функция sprintf выводит на экран отформатированную строку
- Значение 1.0 / 17 выводится на экран с помощью функции printf, используя отформатированную строку формата