C is generally considered as a low-level to mid-level, functional programming language which moderately enforces an explicit and static type system. It provides native syntactic support for structured and procedural programming paradigms.
The relation between C and C++ is simply a matter that the basic syntax is essentially the same, and that, a few compatibility issues aside, the C language is a sub-set of C++ (i.e. C code can generally be compiled with a C++ compiler, although there are some incompatibilities that are generally minor issues that are easily resolved).
Object-oriented programming is a programming paradigm (i.e. a way to think of and create a software design). The basic idea is to associate data and functions into one coherent entity (a "class", which, once instantiated, creates an "object"). But usually, when people talk of object-oriented programming (OOP), they also include, at least, the use of three fundamental features: encapsulation, abstraction and polymorphism. C++ is not a pure object-oriented programming language, because (a) OOP is only one of the programming paradigms C++ provides features for, and (b) real adepts of pure OOP generally find C++ to be lacking features or violating some basic tenants of OOP in the way it provides the features that it does provide. In other words, C++'s features for OOP wouldn't be considered a text-book feature-set for an OOP language (Scala or Smalltalk are generally considered as fitting the bill for really pure OOP languages, and Java or C# are considered more pedantic in OOP features than C++ is), but C++'s OOP features are both sufficient and powerful, and from a non-purist perspective of OOP, they are often considered superior to pure-OOP feature-sets.