Ciao,
devo creare un programma che svolga questo problema:
Per l'elezione del rappresentante di classe vi sono tre candidati, A, B e C. Durante lo spoglio il programma conteggia, uno alla volta, il numero di voti ottenuti da ciascun candidato e il numero di schede nulle. Al termine dello spoglio il programma comunica il nome del vincitore e la percentuale delle schede valide sul totale.

Io ho scritto questo programma:
codice:
//Elezioni dei rappresentanti
#include <stdio.h>
int main()
{
    int num; //Numero totale delle schede
    int val; //Numero di schede valide
    int nul; //Numero di schede nulle
    float per; //Percentuale di schede valide
    int k; //Numero di voti per a
    int j; //Numero di voti per b
    int w; //Numero di voti per c
    char a, b, c, d; //Candidati a, b, c mentre d e\' cio\' che e\' scritto sulla scheda
    a='a';
    b='b';
    c='c';
    printf("Inserire il nome del candidato 0 per terminare:");
    do
    {
        scanf("%c", &d);
        num++;
        if(d==a)
        {
            k++;
            val++;
        }
        else
        {
            if(d==b)
            {
                j++;
                val++;
            }
            else
            {
                if(d==c)
                {
                    w++;
                    val++;
                }
                else
                    nul++;
            }
        }                        
    }
    while(d!=0);
    per=val*100/num;  
    if(k>j)
    {
        if(k>w)
        printf("a ha vinto le elezioni");
        else
        printf("c ha vinto le elezioni");
    }    
    else
    {
        if(j>c)
        printf("b ha vinto le elezioni");
        else
        printf("c ha vinto le elezioni");
    }
    printf("Il numero di schede totali e\' di: %d",num);
    nul=num-val;
    printf("Il numero di schede valide e\' di: %d",val);   
    printf("Il numero di schede nulle e\' di: %d",nul);
    printf("La percentuale di schede valide sul totale e\' di: %f",per);   
    printf("\n");     
    system("pause");   
    return 0;
}
Il problema è che rimane sempre piantato sulla printf senza mai avanzare.
Potreste gentilmente spiegarmi dove ho sbagliato e se vi sono degli altri problemi che mi sono sfuggiti?

Ciao e grazie mille