Originariamente inviato da marjuano
no, il programma non continua. in pratica il programma chiede all'utente di inserire 1, 2 o 3 se vuole visualizzare una delle 3 ripologie di numeri primi. L'if pluri-citato controlla che la risposta (risp) sia 1, 2 o 3. Nel caso negativo il programma non va avanti.
"non va avanti" significa che non entra nei cicli, non che le condizioni successive non vengano testate. L'ideale sarebbe bloccare proprio l'esecuzione del programma in quel punto, ma comunque vabbè sono scelte tue.

nel caso positivo invece ci sono gli altri 3 if, ognuno dei quali con un ciclo al loro interno. per risp=1 si aziona il ciclo dei numeri primi gemelli, per risp=2 quello dei cugini e per risp=3 quelli sexy... quindi non credo che il problema stia in quello che hai detto!
veramente io non avevo detto nulla, ti avevo detto di correggere quell'if (e vedo che lo hai fatto) e poi basta, ti avevo infatti invitato a postare di nuovo il codice per vedere cos'è che ancora non va

ecco il codice con la correzione di prima
...
provo a interpretare qual è il problema visto che non lo hai scritto per esplicito: ti chiedi forse come mai, una volta entrato in un ciclo, se premi 1 quello termina anziché continuare? Se il dubbio è questo, la risposta sta nel fatto che il predicato di uscita di tutti quei cicli while non è corretto, per due motivi. Tu infatti scrivi:

while(risp2==0);

ma questo significa che il while deve continuare fintanto che risp2 è 0, ma tu in realtà vuoi continuarlo quando risp2 vale 1, non 0!

Inoltre, fai attenzione: risp2 è dichiarato di tipo char, non int; questo significa che quando leggi da tastiera il valore ad esso associato, questo sarà interpretato come carattere e non come numero, quindi la condizione del while (in definitiva) dovrebbe essere

while ( risp2 == '1' );

(nota gli apici singoli che indicano che 1 è un carattere e non una costante numerica...)