ciao, questo sabato ho un esame di informatica al politecnico, sono al primo anno, quindi ho cercato con piacere di risolvere il tuo problema

Il difetto risiede nel fatto che quando si inserisce un valore maggiore di tutti gli altri, si perde quello che PRIMA era il valore massimo e che quindi dovrebbe diventare il secondo maggiore. Prova così, dovrebbe funzionare:

codice:
#include <stdio.h>
#include <stdlib.h>

int main(){
    int contatore, corrente;
    int maggiore1 = 0;
    int maggiore2 = 0;
    
    printf("Inserire il primo valore:\n");
    scanf("%d", &corrente);
    maggiore1 = corrente;    // Il primo valore immesso è anche il maggiore
    
    for(contatore=1; contatore<6; contatore++){
        printf("Inserire un altro valore:\n");
        scanf("%d", &corrente);
        
        if(corrente > maggiore1){
                maggiore2 = maggiore1;
                maggiore1 = corrente;
                
        }else if(corrente < maggiore1 && corrente > maggiore2)
                maggiore2 = corrente;
                
    }
    
    printf("Maggiore1: %d", maggiore1);
    printf("Maggiore2: %d", maggiore2);
    
    
    system("PAUSE");
    return 0;
}

Fammi sapere, ciao