codice corretto:

codice:
#include <iostream>
#include <stdlib.h>
#include <string>

using namespace std;

int main () {
    int i , j , repeat = 0;
    char p[10] , q[10];
    cout<<"Inserire il primo testo: "; p[0] = '\0';
    cin>>p;
    cout<<"Inserire il secondo testo: "; q[0] = '\0';
    cin>>q;
    for (i = 0 ; i < strlen(p) ; i++) {
        for (j = 0 ; j < strlen(q) ; j++) {
            if (p[i] == q[j]) {
                repeat++;
            }
        }
    }
    cout<< "Numero occorrenze: " << repeat;
}
errori:

1) stringhe non inizializzate
2) repeat non inizializzato, errore ancora più grave del primo. il "repeat" iniziava da un numero casuale.
3) nessun controllo sulla lunghezza delle stringhe. se introduci meno di 9 caratteri per le stringhe i due cicli continuano comunque a confrontare tra di loro le locazioni di memoria fino a i=9 e j=9.
4) il ciclo while va in loop infinito non appena si ha la situazione p[i] == q[j].

le notazioni postfisse mi piacciono di più

ciao