Goals and aims are the best way. If you aim to get a C, then you need to set yourself a goal each day that will get you that mark. It's hard to begin with, and for my AS level years, I was much too laid back about work, but I've managed to get on top of it now.
It becomes very satisfying. You just push hard every now and then, and in between you can relax safe in the knowledge that you know your achieving what you know your capable of.
Regular scheduled breaks are useful as well. I've seen so many people say "Right, I have all this work to do, I'm gonna go into the library and do it all today", and although they may be in the library, they work so hard that it gets to the point where there brain switches off. Any more than about an hour or two, and you'll find your mind wandering, no matter how interested you are. Give yourself small, useful goals, such as "I'm going to finish these two questions, then have half an hour watching TV and having a snack", or "I'll get up, work till 3pm, then go into town and do some stuff". It means you always know exactly what you need to be doing, and you can push yourself, knowing there's an end in sight.
Oh, and willpower, you'll need a bit of that too