Сперва вычисляется минимальная длина для этих двух строк (N), в рамках которой имеет смысл сравнивать символы.
Дальше идём по первым N символам, сравнивая их числовые значения, причём автор, задумывал сделать словарное сравнение, но у него это не получилось. Кроме того, в представленных нет правильного ответа вовсе.
[примеры будут рабочими, если добавить const, иначе придется создавать отдельные переменные для передачи в функцию]
а - неверно, если первые N символов одинаковы, но на этом s2 закончилась, а в s1 есть еще символы, либо эти строки одинаковы, скажем для строк a("mytest1f", "mytest1" и a("m", "m" результат будет false.
b - неверно, скажем, в случае равных по длине строк a("aa", "ab" результат будет true
c - неверно, true выдается и для неодинаковых строк, например a("aa", "ab"
d - неверно, ф-ция выдаст true для случая a("abb", "abaa", при этом "раньше по алфавиту" находится вторая строка.
e - неверно. Адреса строк нигде не сравниваются. Берем первый пример с a("m", "m", вместо "m" используем разные переменные, затем меняем их порядок, в обоих случаях результат будет false, адреса, естественно, будут различными.