I have been told that praising a kid for effort vs. results is much more important. As a child, I was told I was smart and basically tried to coast as much as possible. I still have a lot of trouble learning how to do something new, especially because I have kind of internalized that I'm good at everything.
A bit of both is probably good. For example: in Belgium, in recent years a lot of kids are (often) given points for effort so they can pass a certain grade. More and more the case. I talked to a teacher friend about this, and while he thinks its great, I think it's ridiculous. Do we want a society of people who put in some effort yet achieve nothing? Now, not that I think the educational system shouldn't be flexible…
Effort should be praised, but not rewarded if it's result did not get anyone further than they were before.
Getting all B's is not a very good indicator of anything...