Ed
há 2 meses
Vamos analisar o código e o que ele faz: ```c int A, B; double M, D, X; scanf("%d", &A); scanf("%d", &B); M = A % B; // resto da divisão inteira de A por B X = modf((A / B), &D); // modf separa a parte fracionária (X) da parte inteira (D) da divisão A/B if ((D - M) == 0) printf("VERDE"); else if ((D - M) == 2) printf("VERMELHO"); else printf("BRANCO"); ``` Passo a passo: 1. `M = A % B` é o resto da divisão inteira de A por B. 2. `D` é a parte inteira da divisão `A / B` (note que `A` e `B` são inteiros, mas `A / B` em C com inteiros faz divisão inteira, então `A / B` é inteiro, mas aqui está sendo usado como double, o que pode causar confusão. Supondo que a divisão seja feita como double, ou seja, `A` e `B` convertidos para double). 3. `X` é a parte fracionária da divisão `A / B`. 4. A condição verifica se `(D - M) == 0` ou `(D - M) == 2`. Queremos que a saída seja "VERMELHO", ou seja, `(D - M) == 2`. Vamos testar cada alternativa: --- Alternativa A: A=75, B=10 - M = 75 % 10 = 5 - A/B = 75 / 10 = 7.5 - D = parte inteira de 7.5 = 7 - D - M = 7 - 5 = 2 → condição para "VERMELHO" satisfeita. --- Alternativa B: A=27, B=7 - M = 27 % 7 = 6 - A/B = 27 / 7 ≈ 3.857 - D = 3 - D - M = 3 - 6 = -3 ≠ 2 --- Alternativa C: A=30, B=4 - M = 30 % 4 = 2 - A/B = 7.5 - D = 7 - D - M = 7 - 2 = 5 ≠ 2 --- Alternativa D: A=39, B=8 - M = 39 % 8 = 7 - A/B = 4.875 - D = 4 - D - M = 4 - 7 = -3 ≠ 2 --- Alternativa E: A=32, B=5 - M = 32 % 5 = 2 - A/B = 6.4 - D = 6 - D - M = 6 - 2 = 4 ≠ 2 --- Resposta correta: alternativa A) 75 e 10 --- Se precisar de mais ajuda, só avisar!
Cadastre-se ou realize login