Part (a) is wrong, because you are constrained by having only 4 crosses.
Therefore, the answer is $\binom{16}{4}.$
Part (b) is also wrong, for much the same reason.
There are 4 choices where to put the cross in each row.
Therefore, the answer is $4^4.$
Part (c) is trickier.
Going from the top down, you will have to place a cross in each row.
In the 1st row, you have 4 columns to choose from.
Having made that choice, in the 2nd row, you have 3 remaining columns to choose from.
Final answer here is $4!$.
Addendum
Assume that crosses and noughts are unlimited.
For part (a), your answer of $2^{(16)}$ is correct.
Part (b) is complex. I assumed that you intended that each row has at least one cross, but that you can have a different # of crosses from one row to the next.
I got
$$2^{(16)} - \binom{4}{1}2^{(12)} + \binom{4}{2}2^8 - \binom{4}{3}2^4 + \binom{4}{4}2^0.$$
The above formula employs the principle of Inclusion-Exclusion, as discussed at https://en.wikipedia.org/wiki/Inclusion%E2%80%93exclusion_principle.
The idea is to start will all possible possible placements, deduct possible placements of all noughts in the 1st row, with the other 12 rows unconstrained, multiplying this by 4, since the blanked out row could be any of the 4 rows.
Then you add back possible ways of blanking out two rows, since this have been over-counted by previous running total. Then you continue adding and then deducting, in accordance with Inclusion Exclusion.
My answer actually agrees with Phicar's answer. This can be verified by doing binomial expansion on
$$(2^4 - 1)^4.$$
Addendum-1
Part C.
I again used Inclusion-Exclusion, but in a much more convoluted fashion. This answer is very complicated to explain. Consider the following chart.
$$
\begin{array}{| l | l c l c l c l c l |}
\hline
T_0 & \binom{4}{0}\binom{4}{0}\times 2^{(16)}
\\[8pt]
\hline
T_1 & \binom{4}{1}\binom{4}{0}\times 2^{(12)}
&+& \binom{4}{0}\binom{4}{ 1}\times 2^{(12)}\\[8pt]
\hline
T_2 & \binom{4}{2}\binom{4}{0}\times 2^{(8)}
&+& \binom{4}{1}\binom{4}{ 1}\times 2^{(9)} &+& \binom{4}{0}\binom{4}{ 2}\times 2^{(8)}\\[8pt]
\hline
T_3 & \binom{4}{3}\binom{4}{0}\times 2^{(4)}
&+& \binom{4}{2}\binom{4}{1}\times 2^{(6)} &+& \binom{4}{1}\binom{4}{2}\times 2^{(6)} &+& \binom{4}{0}\binom{4}{ 3}\times 2^{(4)}\\[8pt]
\hline
T_4 & \binom{4}{4}\binom{4}{0}\times 2^{(0)}
&+& \binom{4}{3}\binom{4}{1}\times 2^{(3)} &+& \binom{4}{2}\binom{4}{2}\times 2^{(4)} &+& \binom{4}{1}\binom{4}{3}\times 2^{(3)} &+& \binom{4}{0}\binom{4}{4}\times 2^{(4)}\\[8pt]
\hline
T_5 & \binom{4}{4}\binom{4}{1}\times 2^{(0)}
&+& \binom{4}{3}\binom{4}{2}\times 2^{(2)} &+& \binom{4}{2}\binom{4}{3}\times 2^{(2)} &+& \binom{4}{1}\binom{4}{4}\times 2^{(0)}\\[8pt]
\hline
T_6 & \binom{4}{4}\binom{4}{2}\times 2^{(0)}
&+& \binom{4}{3}\binom{4}{3}\times 2^{(1)} &+& \binom{4}{2}\binom{4}{4}\times 2^{(0)}\\[8pt]
\hline
T_7 & \binom{4}{4}\binom{4}{3}\times 2^{(0)}
&+& \binom{4}{3}\binom{4}{4}\times 2^{(0)}\\[8pt]
\hline
T_8 & \binom{4}{4}\binom{4}{4}\times 2^{(0)}\\[8pt]
\hline
\end{array}
$$
Out of the $2^{(16)}$ possible configurations, you have to compute how many of them will have a cross in very row and also a cross in every column.
I construe the 4 rows and 4 columns as 8 "straight paths". In the chart, you will see entries that look like this:
$$\binom{4}{a}\binom{4}{b} \times 2^c.
$$
In the first factor, $a$ corresponds to how many rows (from 0 through 4) inclusive are presumed to be filled with noughts. Similarly, in the second factor, $b$ corresponds to how many columns (from 0 through 4) inclusive are presumed to be filled with noughts. The $c$ exponent represents the # of unconstrained cells when $a$ rows and $b$ columns are presumed to be filled with noughts.
As an example, consider the following entry from row $T_4$:
$$\binom{4}{2}\binom{4}{2} \times 2^4.$$
If there are 2 rows and 2 columns each filled with noughts, there will automatically be 4 unconstrained cells, namely the 4 cells that are not in either of the two rows or two columns.
So the above expression indicates how many ways there are of choosing 2 rows to fill with noughts, simultaneously choosing 2 columns to fill with noughts, and allowing the remaining cells to be unconstrained.
In effect, the expression indicates that there are 36 distinct sets, each with 2 rows and 2 columns designated to be filled with noughts. Further, in each of the 36 sets, there are $2^4 = 16$ elements, corresponding to the possible cross/nought possibilities for the remaining (unconstrained) cells.
For $k \in \{0,1,2,\cdots,8\},$ the row labeled $T_k$ identifies all of the sets where the number of rows to be filled with noughts + the number of columns to be filled with noughts $= k.$
In each row, the intent is that the variable $T_k =$ a sum of terms, where each term has 3 factors.
The actual answer to the problem is
$$T_0 - T_1 + T_2 - T_3 + T_4 - T_5 + T_6 - T_7 + T_8.$$
The fundamental idea in Inclusion-Exclusion, as I am using it, is that every unsatisfactory configuration (out of the $2^{(16)}$ possible configurations) will be subtracted, added back, subtracted, ... so that the net effect is that the unsatisfactory configuration is deducted once.
Consider the following example:
Rows $1, 2,$ and $3$ will be filled with noughts and columns $1,2$ will be filled with noughts. The 2 remaining cells will be filled with crosses. Of the $2^{(16)}$ possible configurations, this example, represents one of the unsatisfactory ones.
In order for the algorithm to function correctly, the net effect must be that this particular example is deducted one time from the $2^{(16)}$ possible configurations,
Examining the representation of this example with respect to
$T_1, T_2, \cdots, T_8$:
In the first term in $T_1,$ the example is represented 3 times, since there are three rows to be filled with noughts, Similarly, In the second term in $T_1$, the example is represented 2 times. Therefore, the example is represented (3 + 2 = 5) times in $T_1$.
In the first term in $T_2$ this example is represented 3 times., This is because in this example, 3 rows are to be filled with noughts, and there are 3 different ways of selecting two out of the three rows.
Similarly, this example is represented 6 times in the second term in $T_2$. This is because there are 6 different ways ($3 \times 2$) of choosing 1 row and 1 column.
Simlarly, this example is represented once with respect to the third term in $T_2$.
Therefore, this example is represented (3 + 6 + 1 = 10) times in $T_2.$
Using Similar analysis, this example is represented (1 + 6 + 3 + 0) = 10 times in row $T_3$.
Using Similar analysis, this example is represented (0 + 2 + 3 + 0 + 0) = 5 times in row $T_4$.
Using Similar analysis, this example is represented (0 + 1 + 0 + 0) = 1 time in row $T_5$.
This example is not represented in any of rows $T_6, T_7$, or $T_8$. This is because those rows pertain to filling more than 5 "straight paths" with noughts, and this example represents filling only 3 rows + 2 columns with noughts.
Examining the representations for this example. the example is represented $(5, 10, 10, 5, 1)$ times in $T_1, T_2, T_3, T_4,$ and $T_5$ respectively. Notice that these 5 terms represent all but the first term in the 5th row of Pascal's triangle.
Although it is unclear to me exactly why this is happening, it is related to the fact that this example specifically pertains to (3 + 2 = 5) straight paths. It is easy to demonstrate that when you add - subtract - add - subtract... across any row in Pascal's triangle, where you start with the second term, the computation will equal 1. This relates to the binomial expansion of $(1 + [-1])^k.$
The net effect of the algorithm's computation of $T_0 - T_1 + \cdots$ is that this specific unsatisfactory configuration is deducted one time from the $2^{(16)}$ total possible configurations.
The backbone of the Inclusion-Exclusion principle, as documented in the Wikipedia article is that each region will end up being added, then subtracted, then added, ... so that the net effect is that the region is counted once.