Física Múltipla Escolha

Considere o algoritmo em linguagem C: main(){ char nome[20]; char sexo; printf("Qual é o seu nome?"); scanf(nome); printf ("Qual é o seu sexo (f/m) "); scanf(&sexo); if (sexo == 'f' && sexo == 'F') printf("Você é do sexo feminino."); else if (sexo == 'm' && sexo == 'M') printf("Você é do sexo masculino."); else printf ("Você digitou um valor de sexo inválido "); } Sobre a lógica do algoritmo acima correto afirmar que:

Considere o algoritmo em linguagem C:
main(){
char nome[20];
char sexo;
printf("Qual é o seu nome?");
scanf(nome);
printf ("Qual é o seu sexo (f/m) ");
scanf(&sexo);

if (sexo == 'f' && sexo == 'F')
printf("Você é do sexo feminino.");
else
if (sexo == 'm' && sexo == 'M')
printf("Você é do sexo masculino.");
else
printf ("Você digitou um valor de sexo inválido ");
}

Sobre a lógica do algoritmo acima correto afirmar que:

  1. a lógica do algoritmo está comprometida pela falta de um comando de repetição.
  2. em vez de utilizar comandos de decisão se aninhados, deveria ter sido usado um único comando de seleção múltipla, por isso a lógica ficou comprometida.
  3. se for digitada uma letra maiúscula 'F' ou minúscula 'f', 'M', 'm' é que a frase Você digitou um sexo inválido será impressa.
  4. somente se a letra digitada para o sexo for diferente de 'f', 'F', 'm', 'M' é que a frase Você digitou um valor de sexo inválido será impressa.
  5. não importa o valor digitado no sexo, pois sempre será impresso Você digitou um valor de sexo inválido.

Resolução completa

Explicação passo a passo

E
Alternativa E

Alternativa E

Análise da Lógica do Algoritmo

Para identificar a resposta correta, precisamos examinar cuidadosamente as condições de decisão utilizadas no código C apresentado.

O Erro Lógico Central:

O problema reside nas instruções if que utilizam o operador lógico E (&&) para comparar a variável sexo com dois valores distintos simultaneamente.

Observe a primeira condição:
\text{if } (\text{sexo} == \text{'f'} \ \&\& \ \text{sexo} == \text{'F'})

Isso significa: "Se o sexo for igual a 'f' E AO MESMO TEMPO for igual a 'F'".

  • Uma variável do tipo char só pode armazenar um único caractere por vez.
  • É impossível que sexo seja igual a 'f' e 'F' simultaneamente.
  • Portanto, essa expressão lógica sempre retorna falso.

O mesmo ocorre na segunda verificação:
\text{if } (\text{sexo} == \text{'m'} \ \&\& \ \text{sexo} == \text{'M'})
Esta condição também é logicamente impossível de ser verdadeira.

Fluxo de Execução:

  1. O usuário digita qualquer valor (ex: 'f', 'F', 'm', etc.).
  2. O primeiro if verifica se o valor é 'f' E 'F'. Resultado: Falso.
  3. O programa vai para o else.
  4. Dentro do else, há outro if verificando 'm' E 'M'. Resultado: Falso.
  5. O programa vai para o else final.
  6. O comando printf("Você digitou um valor de sexo invalido "); é executado.

Comparativo entre Operadores Lógicos:

OperadorSímboloSignificadoExemplo
E (Conjunção)&&Ambas as condições devem ser verdadeirasx > 0 E x < 10
OU (Disjunção)`\\`Pelo menos uma condição deve ser verdadeirax = 0 OU x = 1

No código da questão, o correto seria usar o operador OU (||) para aceitar tanto a maiúscula quanto a minúscula:

  • Correto: (sexo == 'f' || sexo == 'F')
  • Errado (usado na questão): (sexo == 'f' && sexo == 'F')

Conclusão:

Devido ao uso incorreto do operador &&, nenhuma entrada válida passará pelos testes de validação. O fluxo do programa sempre desviará para o bloco else final, imprimindo a mensagem de erro independentemente do que o usuário digitar.

Portanto, a alternativa E é a única que descreve corretamente o comportamento do algoritmo.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Física

Ver mais Física resolvidas

Tem outra questão de Física?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.