Ненужное округление чисел при делении - C (СИ)
Формулировка задачи:
Нужно вывести через пробел каждую цифру десятичного числа.
Вроде выводит, но почему-то не совсем то. Например, если ввести 123456789, то ответ будет 1 2 3 4 5 5 7 7. И если отдельно вывести printf("%f ", l) , то видно,что после пятерки идет округление, как на картинке. Почему это происходит?
int main(void) { long long int x; //само число float l; long long int z; while (scanf("%lld", &x) == 1) { long long int k = 1; while (((long long int)(x / k)) >= 10) { // узнаем количество разрядов k *=10;} do { z = (long long int) x / k ; // берем целую часть разряда l = (float) z / 10; // делаем ее вещественной z = (long long int)( ( l - floor(l) ) * 10 ); // избавляемся от вещественности printf("%d ",z); k /= 10; } while(k != 1); } return 0; }
Решение задачи: «Ненужное округление чисел при делении»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> void print(int n) { if (n < 10) printf("%d ",n); else { print(n/10); printf("%d ",n%10); } } int main(int argc, char *argv[]) { int p=123456789; print(p); printf("\n"); system("PAUSE"); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и для работы с памятью.
- Определение функции print, которая будет выводить число на экран.
- Проверка условия: если число меньше 10, то оно выводится на экран.
- В противном случае число делится на 10 и функция print вызывается рекурсивно для вывода десятых, а затем остатка от деления выводится на экран.
- Определение функции main, которая является точкой входа в программу.
- Создание переменной типа int с именем p и значением 123456789.
- Вызов функции print с передачей значения переменной p в качестве аргумента.
- Вывод символа новой строки на экран.
- Вызов функции system, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу.
- Возврат 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д