Дополнить до десяти: что не так с алгоритмом?

Задание состоит, собственно в этом, мои попытки прикреплены ниже, помогите, пожалуйста. В данный момент у меня просто постепенно число удаляется, не могу понять как изменить цифру, при это сохранив остальные.

Напишите функцию static int UpToTen (int n), которая по данному натуральному числу n возвращает число, полученное из n следующим образом: для каждой цифры i числа n в новом числе ставится цифра (10-i), цифра 0 остается без изменений (например, при вводе 1079 программа выводит 9031).

static void UpToTen(int n)
        {
            int temp = 0;
            while (n > 0)
            {
                if (n % 10 != 0)
                {
                    int i = n % 10;
                    temp = (10 - i) + (n - i);
                }
                n /= 10;
            }
            Console.WriteLine("Полученный результат = " + temp);
        }

Ответы (1 шт):

Автор решения: aepot

Почти верно написали логику, вам только не хватило коэффициента, на который надо умножать полученную цифру. Ну и с нулями ввело вас в заблуждение, вы решили добавить условие, а можно было просто взять остаток от деления на 10.

Еще одна ошибка в том, что сигнатура метода не соответствует той, что указана в задаче, у вас void UpToTen(int n) а должно быть int UpToTen(int n). Будьте внимательны.

static int UpToTen(int n)
{
    int result = 0;
    int k = 1;
    while (n > 0)
    {
        result += (10 - n % 10) % 10 * k;
        n /= 10;
        k *= 10;
    }
    return result;
}

Проверяем

static void Main(string[] args)
{
    Console.WriteLine("Полученный результат = " + UpToTen(1079));
}

Вывод в консоль

Полученный результат = 9031

Бонус - решение через строки-символы

static int UpToTen(int n)
{
    return int.Parse(string.Concat(n.ToString().Select(d => d == '0' ? d : (char)(10 - d + '0' + '0'))));
}

Оно медленнее и ресурсозатратнее, чем математическое, я просто решил показать, что оно существует и работает. Кстати, фрагмент (char)(10 - d + '0' + '0') можно записать как (char)(106 - d).

→ Ссылка