Esse código possui duas saídas, produzidas nas linhas 13 e 1...

Próximas questões
Com base no mesmo assunto
Q48471 Programação
Imagem 006.jpg

Considerando o código em linguagem C acima, julgue os itens de 101 a 107.

Esse código possui duas saídas, produzidas nas linhas 13 e 15, que são iguais.
Alternativas

Comentários

Veja os comentários dos nossos alunos

CESPE pegando pesado, mas vamos lá...

a mágica está entre as linhas 4 a 8:

 for(i=0;i<n/2; i++){

......... s[n] = *(s+i); // Aqui é atribuída uma variável temporária que irá receber o valor conforme a variável i

......... s[i] = s[n - i !1];

......... *(s+n-i-1) = *(s+n); } // Como um array é um ponteiro, podemos acessá-lo da seguinte maneira: *(s+n-i-1),

...........................................// leia-se assim: *(s+5-0-1) ===> *(s+4) ===> s[4]

.... *(s+n) = '\0';

O array str inicialmente vale: "abcde"

Entraremos no laço for, somente 2 vezes ( i=0 e i=1), pois n/2 = 2, porque estamos dividindo 2 inteiros

Após o primeiro for (i=0):

> Trocamos os valores do s[0] com s[4]

Após o segundo for (i=1)

> Trocamos os valores do s[1] com s[3]

Saímos do laço for;

O primeiro printf, linha 13, imprimirá na tela: edcba    

Como estamos trabalhando com ponteiro, os valores do array foram alterados, portanto:

O segundo printf, linha 15, imprimirá na tela: edcba  

Ou seja, as duas saída produzidas serão iguais

GABARITO: CERTO

juntando a declaracao da funcao char *MyStr (char *s, int n, int i) que contém um ponteiro para um array (string), tamanjo do array e loop counter) com a sua oimplemtacao (que inverte a o inut da string com um loop

de 0 a n/2 -1, faznedo um swap dos caracteres), a funcao main inicializa o array str com a string abcde e chama MyStr para inverter a string. o printf exibe a srting modifcado com o espficiador de formato %s. Apos, ele exibe cada carcter do array str com o loop. O ouput é exibido 2 vezes: edcba

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo