Make sure in Contacts your Contacts are showing in the iCloud Group. If you have other Groups, those may be syncing from elsewhere and not syncing with iCloud. A common reason for this would be if you're attached to an Exhange server, for example.
Contacts, hit group's top right and uncheck all groups (temporarily) so only iCloud is checked then look at what's in your main pane. (You can turn them back on again later. This won't delete anything.)
If you find contacts you want in iCloud are in a different group that isn't syncing from/to iCloud, you'll have to add it as a new contact, and perhaps then "link" it to the other one.
It's not as easy to do this on iOS as it is on a Mac or whatever contact manager you sync with on a PC, because it's harder to cut and paste data between them in iOS. Open one, copy a field, open the other, paste, back and forth until it's done.
It's easier to edit in your contact manager on the desktop and sync straight up to iCloud if you're having this "multiple sources of contacts" issue, in my opinion. Or directly enter them at iCloud.com, perhaps cutting and pasting from a desktop contact list or whatever source they originally came from. YMMV.
But anyway, check your groups.
If iOS is receiving contacts from a non-iCloud source, it'll sync with that source, not iCloud. So if you have multiple sources, it takes some work to copy them over.
Also just for terminology, turning on iCloud sync of Contacts is not the same thing as turning on "iCloud Backups". This screenshot shows the iCloud settings page with Contacts set to sync to ICloud and NO iCloud backups turned on at all. Different things.
You can see if your contacts are syncing by adding one oddball into iOS and one oddball via iCloud web and seeing if they copy to the other side. It's really rare that only a partial sync is occurring.
It's usually that you're looking at contacts that didn't start in iOS or whatever contact manager you use that's attached to iCloud in the desktop, and they're syncing with that source, not iCloud. By turning off groups you can see which contacts are stored in which ones.