Here you are.
#include <stdio.h>
int main(void) 
{
    enum { N = 100 };
    char s[N];
    char a[] = "CDE";
    int  b[] = { 50, 80, 20 };
    int pos = 0;
    for ( size_t i = 0; i + 1 < sizeof( a ); i++ )
    {
        pos += sprintf( s + pos, "%c%d", a[i], b[i] );
    }
    s[pos] = '\0';
    puts( s );
    return 0;
}
The program output is
C50D80E20
This statement 
s[pos] = '\0';
is required only in the case when there are no values to append to the array s that is when none call of sprintf was executed.
If you want to get a string like this
C50 D80 E20
then just write for example
pos += sprintf( s + pos, "%c%d%c", a[i], b[i], ' ' );
And if you want to remove the last space character then instead of
s[pos] = '\0';
write
s[ pos == 0 ? pos : pos - 1 ] = '\0';
Instead of the function sprintf you could use the function snprintf. But it does not resolve the problem if you allocated not enough memory for the result string because in any case you will not get the expected result in such a case.
As for the function itoa then it is not a standard C function.