Would you try to persuade your client that using object-oriented
programming is much cleaner?
I think you need to educate yourself more on programming paradigms. Object-Oriented programmed code is not necessarily cleaner, and in fact, it is not universally applicable. Also, a good object-oriented coder knows how to do good work using a procedural/modular (With Functional and Declarative paradigms, it is a bit harder, but it should not be overly difficult for a good programmer to arrive - via reading and deduction - to an acceptable FP/Declarative solution.)
You almost never cannot, I repeat, you almost cannot have a good understanding of when and how to use Object Orientation without having a good understanding of procedural and modular programming. OO is a lot more than just declaring classes and inheritance hierarchies.
Or would you try to follow what he required and give him crappy code?
If you cannot write good code procedurally, I doubt you can write good code in an object-oriented manner. Period. I'm not trying to judge here, but this has to be asserted.
Object Orientation is an extension of procedural and modular programming. Object-Orientation simply gives you tools that, when used appropriately, give you better mechanisms with which to deal encapsulation, coupling, cohesion and code-reuse/extensibility issues.
But all those issues are not inherent and unique to OO. They exist in procedural/modular code (and in other paradigms for that matter.) This is the type of complexity issues that, at its very core, is paradigm-independent. If you cannot handle them without OO glue, then it's unlikely you can handle them with it.
Going back to your original question, of whether to try to persuade your client. It depends. As poster Sean McMillan said, if the client is simply trying to micro-manage the development effort for some agenda (read, office politics), walk away. People who do that sabotage projects to blame someone else, or push a particular agenda. You do not want to be involved in that.
OTH, there might be other reasons for such a requirement. Many embedded shops, for right or wrong, choose to put a lot of constrains on what you can do with C++ (no virtual methods, no exceptions, for instance.) Some times it is done in a knee-jerking fashion. Some other times, there are valid technical reasons for doing so.
So you need to understand why the client wants to avoid OO code. And if you can surmise that there is no political agenda (no red flags), then you should do the professional thing to do, which is simply do the code procedurally/modular, and do a good job at it.
There is really no excuse for delivering crappy code, independently of the programming paradigm. If you can't produce acceptable code with one paradigm, you most certainly cannot produce acceptable code in general.