ok ho fatto così...intuitivamente
codice:
#include <stdio.h>
#include <stdlib.h>
#define N 100

/*
 * 
 */
int main() {

    struct bevanda {
            int codicebe;
            int totbe;
            int costobe;
        };

    struct portata {   
            int codicepo;
            int totpo;
            int costopo;
        };


    struct prenotazione {
        int tavolo;
        int data;
        struct portata port[20];
        struct bevanda bev[10];
        int totcosto;
    }pre[N];

    int i;


    printf ("Inserisci Ordinazione");

    for (i = 0; i < N; i++){
        printf ("Inserisci numero del tavolo da 1 a 20 : ");
        scanf ("%d", &pre[i].tavolo);
        printf ("Inserisci data : ");
        scanf ("%d", &pre[i].data );
        for (j = 0; j < N; j++){
            printf ("Inserisci codice portata da 1 a 200 : ");
            scanf("%d", &pre[i].port[j].codicepo);
            printf ("Inserisci quantita portata : ");
            scanf("%d", &pre[i].port[j].totpo);
            printf("Inserisci costo portata : ");
            scanf("%d", &pre[i].port[j].costopo);
            printf ("Inserisci codice bevanda da 1 a 20 : ");
            scanf("%d", &pre[i].bev[j].codicebe);
            printf ("Inserisci quantita bevanda : ");
            scanf("%d", &pre[i].bev[j].totbe);
            printf("Inserisci costo bevanda : ");
            scanf ("%d", &pre[i].bev[j].costobe);
        }

    }
    return 0;
}
per la data provo ad inserire la struct come mi dici..anche se nella traccia non mi chiede il vettore