/******************************************** Mais um exemplo de função para a manipulação de números inteiros: a função abaixo calcula o valor da soma dos dígitos de um número n passado como parâmetro. *********************************************/ #include int somaDigitos(int n){ if(n < 0) n = -n; // n < 0 ==> (n % 10 ) <= 0 int s = 0, d; // d mantém o valor de cada dígito while(n != 0){ d = n % 10; // valor do último dígito s = s + d; // acumula em s o valor do último dígito n = n /10; // prepara n para 'pegar' o dígito anterior } /************************************************************** O comando 'while' acima pode ser substituido por um 'do{}while' ou 'for'. O 'for' poderia ser for(s = 0; n != 0; n /= 10) s += n % 10; // ('decifra-me ou devoro-te') **************************************************************/ return s; } /********************************************** Teste simples: le um valor pelo teclado e escreve o valor da soma dos dígitos. Notar que a função main() abaixo define uma variável local com o nome n. Como é local, essa variável é diferente do parâmetro n definido na função somaDigitos. **********************************************/ void main(){ int n,s; printf("entre com um no. inteiro:"); scanf("%d",&n); s = somaDigitos(n); printf("somaDigitos(%d): %d\n",n,s); /******************************************************* Pergunta típica de uma prova: porque o valor de n não se altera após a chamada a somaDigitos(n) ? ********************************************************/ system("PAUSE"); }