1. Nie stosuj zmiennych globalnych (u Ciebie TAB)
2. Funkcja main ma jedną z sygnatur w C poprawną taką: int main(void). Sygnatura którą podałeś jest nieprawidłowa.
3. Zmienne x i y są Ci do niczego nie potrzebne jeśli zauważysz że można wykorzystać indeksy i oraz j dodając do nich 1.
4. Deklaracje zmiennych staraj się używać najbliżej ich wykorzystania i w niezbędnym zasięgu. Polepsza to czytelność programu i ułatwia jego zrozumienie.
5. Do indeksowania służy typ size_t a nie int.
6. Jeśli wprowadzisz pkt 4, to zmienne indeksowe nie będą dostępne poza for. Możesz nazw ponownie użyć.
7. Jeśli wyprowadzasz 1 znak (tu '\n'), printf(...) jest "ciężki". Wystarczy putchar(...).
8. Jeśli masz już <stdlib.h>, użyj do zwrócenia z main(..) EXIT_SUCCESS.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
double TAB[3][3];
for(size_t i = 0; i < 3; ++i)
{
for(size_t j = 0; j < 3; ++j)
{
TAB[i][j] = pow(i + 1, j + 1);
}
}
for(size_t i = 0; i < 3; ++i)
{
for(size_t j = 0; j < 3; ++j)
{
printf("%lf ", TAB[i][j]);
}
putchar('\n');
}
return EXIT_SUCCESS;
}