Ajuda em c

Bom dia galera, meu professor deu uma programação e disse que tem uma falha na locação de memoria, sendo assim tem uma forma mais correta de construir tal programação, se alguém conseguir me ajudar a solucionar esse problema, segue a programação e a questão:

Elabore um programa que calcula a temperatura média nos dias de uma semana. No final do processamento o programa
deve apresentar a temperatura média de cada dia e a temperatura média da semana;
considerações: i) semana tem 7 dias e os dias tem 24 horas;
ii) temperatura diária varia de 5 oC a 35 oC;
iii) as temperaturas de cada hora são geradas randomicamente;

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define dias 7
#define horas 24

int**GoraTempSemana ()
{
int **temp,i,j=0;
srand(time(NULL));
temp=malloc(diassizeof(int));//verificacao
if (temp!=NULL)
{
for (i=0;i<dias;i++)
{
temp[i]=malloc(horas*sizeof(int));
if (temp[i]==NULL)
{
break;
}
for(j=0;j<horas;j++)
{
temp[i][j]=5+rand()%31;
}

{

}

}
if (temp==NULL||i<dias)
printf(“falha alocacao memoria”);

}
return temp;
}

int main()//falha de locacao de memoria. Como resolver o erro da programacao
{ int i,j;
float media,msem;
int **temp;
char Dias[dias][8]={“domingo”,“segunda”,“terca”,“quarta”,“quinta”,“sexta”,“sabado”};
temp= GoraTempSemana();
if (temp!=NULL)

{
printf(“temperaturas medias diarias:\n”);
for (i=msem=0;i<dias;i++)
{
for (j=msem=0;j<horas;j++)
{
media +=temp[i][j];
}
media/=horas;
printf("%8s: %.1f%cC\n",Dias[i],media,248);
msem+=media;

    }

}
printf(“temp media semanal:%.1f %cC\n”,msem/dias,248);
for (i=0;i<dias;i++)
{
free(temp[i]);
}

    free(temp);

media=0;
return 0;

}

No título você colocou C#, nem todo mundo que for de C vai entrar no seu tópico pois a questão não é sobre C#.