Para quem está mais avançado na matéria, criei este programinha que responde o desafio de tres maneiras:
1) Método da Soma de Gauss - Para somar de 1 até 100, observe que 1+100 = 101; 2+99 = 101; 3 + 98 = 101 ... 50 + 51 = 101. Assim, na soma de 1 até 100 obteremos 50 vezes o número 101. Então para efetuar 1 + 2 + 3 + … + 98 + 99 + 100, basta fazer 50 x 101 que resulta em 5.050. Este método funciona para outros números também, ex.: Somar os números de 1 até 200: Basta fazer 100 x 201.
2) O segundo método é um pouco mais complexo de entender, ele utiliza funções recursivas, ou seja, funções que chamam a si mesma várias vezes. Neste caso, criei três variáveis, uma corresponde ao resultado, uma é um contador que irá de 0 a 100, e outra é o valor máximo o qual queremos chegar. A função inicia com o resultado 0, contador 0 e valor máximo 100. Na primeira iteração, a função verifica se o contador é igual ao valor máximo (100), se for, encerra-se a recursão, retornando o resultado, se não for, chama-se a função novamente, desta vez incrementando o contador, e somando o contador ao resultado.
3) A última maneira, é a proposta no exercício, que é a utilização de um loop. Escolhi o for, mas poderia ter sido feito com while também :)
Segue o código!
#include<stdio.h>
#include<locale.h>
int soma(resultado, contador, valor_maximo) {
// Caso Base
if(contador==valor_maximo) return resultado;
// Caso Recursivo
return soma(resultado+=contador, ++contador, valor_maximo);
}
int main(){
setlocale(LC_ALL, "Portuguese");
//Método da soma de Gauss
int valor_max=100;
printf("Gauss - O valor é: %d",(valor_max/2)*(valor_max+1));
//Método Recursivo
printf("\nRecursivo - O valor é: %d", soma(0, 0, 100));
// Método Repetição
int i, resultado=0;
for(i=1; i<=100; i++){
resultado+=i;
}
printf("\nRepetição - O valor é: %d", resultado);
}