1: There have been long standing, but rare, problems with not having a semicolon between individual expressions. It seems to have never been possible to track down exactly when or why these rare problems will appear, but when they do the problem is often very difficult to recognize. So to be cautious I use and recommend others use a semicolon between every expression, unless you know exactly why and when to not use this rule.
2: In the name of efficiency Mathematica remembers the last value assigned to each variable, sometimes for minutes or hours or years depending on how often you exit Mathematica or click on Evaluation->Quit Kernel->Local Kernel->Quit. Mathematica will silently assume you expect to use that previously stored value and will give no obvious hint that it has done this. This can greatly speed things up and under other circumstances can silently lead to incorrect results or no result at all. This leads to the classic IT department question "Did you try turning it off and back on again?" Or you can use the Clear directive to remove specific prior assigned values. There are even things above, beside and beyond Clear, like ClearAll, Unset, ClearAttributes and Remove that you might take a look at, but the implications of some of those might not be completely transparent. If you had somehow previously assigned some value to C[ t ] or C'[ t ] this might have explained why it wasn't working for you, but it seems that it is amost never possible to track down exactly why something like this actually specifically didn't work.
3. Many many names that begin with a capital letter have deep preassigned meaning inside of Mathematica and using those as user defined variables can often lead to warning messages you don't know how to interpret or incorrect results or even nothing at all. This leads to the classic Mathematica advice "don't start any user variable with an uppercase letter" which is rarely followed by "unless you really know what you are doing. You can also check in the help system for a name and see if it has predefined meaning. C for some usually integer n is one such predefined name.
Combining all these.
In[1]:= Clear[khi, Kc, nc, nut, a, ode,c];
khi = 100;
Kc = 21;
nc = 5;
nut = 46;
a = .5;
ode = khi*(1/(1 + (c[t]/Kc)^nc))*nut - a*c[t];
NDSolve[{c'[t] == ode, c[0] == 30}, c[t], {t, 0, 31}]
Out[8]= {{c[t] -> InterpolatingFunction[{{0.,31.}},<>][t]}}
See if you can find any circumstance where this fails, and if so then please report back so I can enhance my set of superstitions and folklore and guidelines for the future.
Thanks