Criar um algoritmo que imprima a soma dos números pares em um intervalo fornecido pelo usuário

Eu já estava com a resposta quase pronta quando tive que parar. Estou postando assim mesmo já que tem o código executando e mais organizado e simplificado.

O erro principal era não ter inicializado a variável impar com valor 1. Poderia acontecer duas coisas. Ter o valor 0 e aí qualquer multiplicação daria 0. Ou pegar um valor qualquer que estava na memória, o que daria muito errado e pareceria uma loucura. Em C sempre inicialize as variáveis, a não ser que saiba o que está fazendo.

#include <stdio.h> int main() { int X = 0, Y = 0, par = 0, impar = 1; printf("Insira o VALOR DE X: "); scanf("%d", &X); printf("Insira o VALOR DE Y: "); scanf("%d", &Y); if (Y <= X) { printf("X não pode ser maior que Y\n"); return 0; } for (int cont = X; cont <= Y; cont++) { if (cont % 2 == 0) par += cont; else impar *= cont; } printf("A soma dos números pares nesse intervalo é %d\n", par); printf("A multiplicação dos números impares nesse intervalo é %d\n", impar); }

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Bem vindo a aula 72 de nosso curso gratuito de programação com a linguagem C.

Na aula de hoje vamos continuar a resolução da nossa lista de exercícios.

3) Faça um programa que some os números ímpares entre 1 e 1000 e imprima a resposta.

#include <stdio.h> #include <stdlib.h> int main() { int i, soma = 0; for(i =1; i <= 1000; i++)// 1000 if(i % 2 == 1) // 1000 soma += i; // soma = soma + i -> 500 printf("Soma dos impares de 1 a 1000: %d\n\n", soma); }

Esse programa pode ser melhorado. Como desejamos calcular a soma apenas dos números ímpares, podemos fazer um salto de 2 em 2. Assim, como a variável i foi inicializada com o valor 1, i sempre assumirá um valor ímpar, dispensando a necessidade do if dentro do for.

#include <stdio.h> #include <stdlib.h> int main() { int i, soma = 0; for(i =1; i <= 1000; i+=2)// 500 soma += i; // soma = soma + i -> 500 printf("Soma dos impares de 1 a 1000: %d\n\n", soma); }