Using the %s type specifier with printf for an array that is not null terminated is an error. You may get lucky or the contents of the a array will be printed and followed by garbage characters (whatever is in memory until a null is encountered) or experience other undefined behavior.
Calling scanf with %s without specifying a width is an invitation to a buffer overrun. The scanf function automatically appends a null terminator to the input. You got lucky because the 5 characters of "Hello" plus a null terminator was less than size of the receiving array (10 characters).
After reading "Helllo" into the a array printf with a %s type specifier recognizes the null terminator for the string. Calling printf with a %c type specifier treats each member of the a array individually.