Per somma delle colonne io intendo: prendo tutta la colonna, calcolo la somma e riporto il valore da qualche parte (es: array);
Idem per le righe; con questo algoritmo invece tu stai facendo la somma di tutta la matrice:
for(j=0;j<c;j++)
{
for(i=0;i<r;i++)
sommacol+=a[i][j];
}
printf("\nla somma:%1d",sommacol);
Ad ogni iterazione del for interno vai a sommare tutti i valori in colonna j--> corretto.
Incrementi j e reiteri sulla nuova colonna, andando ancora a sommare al precedente sommacol la nuova colonna --> sbagliato.
Devi azzerare sommacol prima di passare alla colonna sucessiva.
for(j=0;j<c;j++)
{
for(i=0;i<r;i++)
sommacol+=a[i][j];
printf("\n somma colonna %d: %d",j,sommacol);
sommacol=0;
}