1
resposta

Imprime um valor negativo e muito maior do que realmente é

#include <stdio.h>

void soma (numeros[]) {

int total = 0;

for(int i = 0;  i < 10, i++){
    total += numeros[i];
}
printf("O total é de: %d", numeros);

}

int main(){

int numeros[10];

for(int i = 1; i < 10; i++){
    printf("Num: %d", i);
    scanf("%c", &numeros[10]);

}
soma(numeros);

}

1 resposta

Olá Diogo, tudo bem?

Então existem alguns problemas com seu código que precisamos corrigir para que não haja esse comportamento:

Veja que dentro da sua função main todos os valores você tenta colocar na mesma posição do array, e ainda não é uma posição válida (lembre que se criamos um array de tamanho 10, a sua primeira posição é a 0 e a última posição é a 9)

Então para solucionar vamos fazer as seguintes alerações:

  • Primeiramente na função soma precisamos declarar qual o tipo do array, no caso soma( int numeros[])

  • Além disso dentro do for da função soma precisamos corrigir pois tem uma vírgula onde deveria ser um ponto e virgula:

for(int i = 0; i < 10; i++){

  • Ainda na função soma precisamos dar um printf no total e não no numeros pois essa variável "desapareceu" após a execução do for

  • Dentro da função main, vamos alterar nosso for para começar no 0 e ir até <=a 9

for(int i = 0; i <= 9; i++){

  • Para manter o print correto podemos deixar: printf("Num: %d", i+1);

  • Como nosso array é de inteiros precisamos na função main scannear um valor inteiro, utilizando %d e vamos colocar ela dentro de &numeros[i]

scanf("%d", &numeros[i]);

Agora seu programa deve estar normal e somando corretamente :)

Abraços e Bons Estudos!