In order to distribute the color information in C to a 2D-grid of points indexed by (A,B), you would need the number of points in C to be equal to the number of points in the grid. So if A is a length N vector and B is a length M vector, C will need to have N*M entries. You will have to format C as a matrix of size N-by-M where entry C(i,j) corresponds to the height (or color) at the coordinate (A(i),B(j)) in the (x,y)-plane. Then, you can use the contour function as follows:
contour(A,B,C)
However, if all your vectors A, B and C are length N, you do not have enough information to fill in the color value for all the points in the grid formed by abscise A and ordinate B. You need additional information to fill in the color data for the missing point. For instance: do all the points with the same abscise A(i) correspond to the same color?
If you do not have the information for the missing points in the grid, you can try filling all the missing points with one value that is not already in C to create an artificial color level. Then the known points that correspond to coordinates (A(i),B(i)) with color C(i) will be on the diagonal of your new N-by-N matrix D. For instance, you can try:
D = (min(C(:))-1)*ones(N);
D(sub2ind([N N], 1:N, 1:N)) = C;
contour(A,B,D);
You can also specify which levels you want to draw (so that the artificial level created by adding the unknown points do not appear). For instance, picking one out of two values in C:
V = C(1:2:N);
contour(A,B,D,V);
Refer to the documentation page for contour for more information.