Tampoco te has leído muy bien el enunciado:
/*c) Función que recibe la cadena y dos caracteres, y reemplaza la
aparición del primer carácter por el segundo en toda la cadena
función devuelve una nueva cadena con el carácter cambiado, La
función no modifica la cadena original.
*/
1) Haces "cambio a por b y b por a", y encima lo haces con 4 ifs Si ya encuentras 'a' para que le metes un '1' para posteriormente si es '1' meterle b. ¿No ves que si tienes 'a' ya le puedes meter 'b'? Dices que es para que no se mezclen, no se exactamente que querrás decir, pero los "else" existen para algo.
Prueba tu programa con esta entrada, a ver que tal va: Fcadena("1111111111111", 'a', 'b' )
2) Tampoco lo cumples. Tu función modifica la cadena original, aunque tu haces el apaño de copiar la cadena en el main, cosa que no es lo que se te pide.