Para esse problema, você terá de saber sobre laço de repetição.
eu faria o seguinte:
Criaria 2 vetores, um para ler a string "frase", e outro para conversão da string "conversao" também criaria duas variáveis "j,i" para serem os indexs cada caractere e uma variável "tam" para receber o tamanho da string através da função strlen(). logo após jogaria no laço de repetição de modo que o laço repita i=i+1 até que seja do tamanho da string digitada, ou seja, "frase". O que acontece neste momento é o J iniciado em 0 bem como o i, e j será o index do vetor conversao[] e i o index do vetor frase[], desse modo para cada letra do vetor frase na posição i , o vetor conversao na posição j receberá frase na posição i, e conversao na posição j + 1 receberá novamente frase na posição i. a cada vez que o laço se repetir j terá de receber j+2 para que I não sobreponha j nas repetições de caracteres. É provável que isso não tenha ficado muito claro, porei o código apenas para fazer uma ilustração do que tentei explicar. Tente entender antes de olhar o código.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,tam; // declaração da variavel index's e da variavel que receberá o tamanho da string
char frase[100],conversao[100]; // declaração de vetores
printf("Digite uma frase: ");
gets(frase); // ler a string incluindo o espaço
printf("\n");
tam = strlen(frase); // a funcao strlen() lê o tamanho da string e atribui a variavel tam.
for (i=0,j=0;i <= tam; i++) // inicio do laco de repeticao
{
conversao[j]=frase; // conversao na posicao j recebendo frase na posicao i conversao[j+1]=frase; // conversao na posicao j+1 recebendo frase na posicao i novamente. j=j+2; // a cada dois caracteres o vetor conversao na posicao j tera de receber frase na posicao i novamente // portanto, faz-se necessário que j pule duas posições para que conversao na posicao j não seja substituido por frase na posicao i } printf("A String modificada e: %s",conversao); // resultado final }