A função troca é útil somente para imprimir a última linha da saída.
Quando ele diz que os pontos devem ser impressos com : printf("(%.2f, %.2f) e (%.2f, %.2f) \n", p.x, p.y, q.x, q.y); você nota que ele sempre imprime o p antes do q. Mas ele quer que imprima o "menor" (de acordo com a definição) ponto primeiro. Então você chama a função troca antes de imprimir, aí se o q for "menor" que o p, ele troca os pontos e imprime o q antes.
Abraço
Fórum