Questão nº 43
Questão de Tecnologia da Informação · FGV ALEP 2024 (nº 43)
Considere o seguinte trecho de código em linguagem C:
```
#include <stdio.h>
int main() {
int num1, num2, temp;
printf("Digite dois números inteiros: ");
scanf("%d %d", &num1, &num2);
// Implemente a lógica de troca dos valores aqui
printf("Valores trocados: %d %d\n", num1, num2);
return 0;
}
```
Deseja-se implementar a lógica de troca dos valores das variáveis num1 e num2 de modo que, após a execução, os valores exibidos na tela sejam os valores trocados.
Escolha a opção que completa corretamente a lógica de troca.
- Anum1 = num2; num2 = num1;
- Bnum2 = num1; num1 = num2;
- Cnum1 = num2; num2 = temp;
- Dtemp = num1; num1 = temp; num2 = num1;
- Etemp = num1; num1 = num2; num2 = temp; (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Conceito-chave: Para trocar dois valores, você precisa de uma variável temporária (temp) que guarde um dos valores antes de sobrescrevê-lo. Sem isso, você perde o valor original e a troca falha.
- (A) Incorreta:
num1 = num2; num2 = num1;— Aquinum1recebe o valor denum2, e depoisnum2recebe o valor já sobrescrito denum1(que agora é igual anum2). Resultado: ambos ficam com o valor original denum2. A armadilha é parecer lógico, mas a segunda atribuição usa o valor já alterado. - (B) Incorreta:
num2 = num1; num1 = num2;— Mesmo erro da (A), só que invertido:num2vira cópia denum1, e depoisnum1recebe esse mesmo valor. Ambos terminam iguais ao valor original denum1. - (C) Incorreta:
num1 = num2; num2 = temp;—tempnão foi inicializada (lixo de memória), entãonum2recebe um valor aleatório. Além disso, o valor original denum1é perdido antes de ser copiado paratemp. - (D) Incorreta:
temp = num1; num1 = temp; num2 = num1;— Aquitempguardanum1, masnum1recebe de voltatemp(não muda nada). Depoisnum2recebenum1(que ainda é o valor original). Resultado: nenhuma troca, apenas cópia denum1paranum2. - (E) Correta:
temp = num1; num1 = num2; num2 = temp;— Primeiro guardamos o valor original denum1emtemp. Depois sobrescrevemosnum1com o valor denum2. Por fim, colocamos o valor antigo denum1(que está emtemp) emnum2. Assim, os valores são trocados corretamente, sem perda de dados.
Fonte: FGV ALEP 2024 Técnico Legislativo - Suporte e Manutenção (Caderno Tipo 1). Reproduzida para fins de estudo.