Innanzitutto questo codice è molto ridondante, potresti semplificarlo molto.
In secondo luogo, è sbagliata la condizione del while più esterno: il ciclo continua a girare solo se l'utente risponde di no, il che è ovviamente il contrario di quello che vuoi.
Terzo, dopo ogni risposta l'utente preme invio, inserendo quindi un newline nel buffer: se l'utente risponde n, al ciclo successivo la scanf legge un newline e il programma segnala un errore. Dovresti fare una fflush sullo stdin (se sei su windows, altrimenti cerca nel forum, si è parlato mille volte di una soluzione più portabile).
codice:int main() { char risp; do { /*CODICE PER RISOLVERE L'EQUAZIONE*/ printf("\nVuoi risolvere un'altra equazione? s=si n=no\n"); scanf("%c",&risp); do { if(risp!='n' && risp!='s') { printf("\nError....\n"); scanf("%c",&risp); } } while(risp != 'n' && risp != 's'); } while(risp == 's' ); return 0; }