Crie um programa que contenha uma função que permita passar por parâmetro dois números inteiros A e B . A função deverá calcular a soma entre estes dois números e armazenar o resultado na variável A . Esta função não deverá possuir retorno, mas deverá modificar o valor do primeiro parãmetro. Imprima os valores de A e B na função principal.
Passo 1
O problema pede um programa que tenha uma função sem valor de retorno capaz de calcular A+B e armazenar o resultado em A, alterando o primeiro parâmetro. Na função principal, precisamos imprimir A e B.
Passo 2
Em C a passagem padrão é por valor, ou seja, a função não modificaria A no chamador. Para resolver isso precisamos usar passagem por referência: transformar A em ponteiro (int *A) e deixar B como int.
Definimos então uma função void soma(int *A, int B) que faz a operação de soma direto no endereço de A. Na prática, dentro da função usamos a expressão matematicamente equivalente a *A = *A + B.
Definimos então uma função void soma(int *A, int B) que faz a operação de soma direto no endereço de A. Na prática, dentro da função usamos a expressão matematicamente equivalente a *A = *A + B.
Passo 3
Na função main, declaramos duas variáveis inteiras A e B, lemos seus valores do usuário com scanf e chamamos soma(&A, B). Note que passamos &A para fornecer o endereço de A à função.
Após a chamada, A já estará alterado para A+B, enquanto B permanece inalterado. Por fim, imprimimos A e B com printf para verificar o resultado.
Após a chamada, A já estará alterado para A+B, enquanto B permanece inalterado. Por fim, imprimimos A e B com printf para verificar o resultado.
Resposta
#include <stdio.h>
// Função que soma B a A através de ponteiro em A
void soma(int *A, int B) {
*A = *A + B;
}
void soma(int *A, int B) {
*A = *A + B;
}
int main() {
int A, B;
int A, B;
// Leitura dos valores de A e B
printf("Digite dois inteiros A e B:\n");
scanf("%d %d", &A, &B);
// Chama a função que modifica A
soma(&A, B);
// Imprime os resultados
printf("Após soma, A = %d\n", A);
printf("B permanece = %d\n", B);
return 0;
}