"Run[s] C" doesn't actually make sense. C outputs assembly, so most of them run assembly. There are a lot of mobile platforms with no [obvious] C compiler, or certainly not trivial access to one.
Running Java makes sense, since JavaByte is a "thing." Running C is just another way of saying they run native binary blobs which is meaningless and obvious.
It makes as much sense as saying they run Java. Java bytecode is JITted into very same machine code. JVM outputs "assembly" [1] as well. The interpreters are also written in C or C++, even the partially hardware assisted ones, such as Jazelle.
All executable code is native "binary blobs" in the end. But they're written in language X. What I'm saying, is that 100% of those devices contain code written in C. C is also a "thing", it just happens to be usually compiled ahead of time.
[1]: Technically the term should be native/machine code or such. Assembly usually refers to text format assembler listing.
Edit: Wow, so many downvotes? Even though that 100% was just as meaningful as 3 billion. Ok...
Well, C is usually the lowest common denominator language. Something that everything can run. Something you can truly run everywhere, although not necessarily as-is without some porting effort.
Today, 100% of them run C. Without C, there'd be nothing for Java to run on.