Наиболее очевидный ответ заключается в том, чтобы внутренне использовать что-то вроде atoi
и sprintf
для преобразования чисел в целые числа, суммирования и возврата ответа как char*
Однако здесь важно не что интервьюер спрашивает, но почему.
По моему опыту, интервьюер, вероятно, не хочет, чтобы вы писали бездумное решение, охватывающее все стороны.Скорее всего, они хотят, чтобы это был самый распространенный подход и каковы возможные ограничения такой функции.Т.е.:
Что произойдет, если ваши входные числа не являются целыми числами?(например, 13.245, 2.3E + 7)
Что произойдет, если ваши «цифры» вообще не являются числами?
Что произойдет, есливаши входные целые действительно большие?(т. е. ~ 2 ^ 31)
Как вы можете обнаружить ошибку и как вы ее сообщите.
Как бы вы распределили памятьрезультирующая строка?
Что будет означать распределение памяти для вызывающего кода?
Какова эффективность функции и как вы могли бысделать его более эффективным?
Таким образом, интервьюер хочет исследовать ваш опыт критического подхода к решению проблем.Естественно, есть много способов решения этой проблемы.Некоторые из подходов имеют побочные эффекты, но в определенных контекстах эти побочные эффекты (например, целочисленное переполнение) могут быть не очень важны.
Кодирование часто является компромиссом между всеобъемлющим решением и тем, что можно быстро получить (и, следовательно, дешевле). Эти вопросы позволяют интервьюеру почувствовать ваше понимание качества - то есть, можете ли вы спроектировать что-то подходящее для цели, надежное, но не собирающее слишком много времени, - а также ваш опытнеобходимость выявления / устранения распространенных ошибок.