Revisão Prova AED1 (Função, Recursão, Ponteiros e Lista Encadeada )| Questões Resolvidas de Linguagem C
Função
Passagem de Parâmetros (Referência e Valor)
A passagem de parâmetros é uma parte fundamental da programação, permitindo que os valores sejam transmitidos entre diferentes partes de um programa. Existem dois principais métodos de passagem de parâmetros: por valor e por referência.
Na passagem de parâmetros por valor, uma cópia do valor do argumento é passada para a função ou método. Isso significa que quaisquer alterações feitas dentro da função não afetarão o valor original do argumento. Vamos considerar um exemplo em Python para ilustrar isso:
def dobrar_valor(numero):
numero *= 2
print("Dentro da função: ", numero)
valor = 5
print("Antes da função: ", valor)
dobrar_valor(valor)
print("Depois da função: ", valor)
Neste exemplo, temos uma função chamada dobrar_valor
que recebe um parâmetro numero
por valor. Dentro da função, o valor do parâmetro é dobrado. No entanto, quando a função é chamada com o valor 5
, a saída será:
Antes da função: 5
Dentro da função: 10
Depois da função: 5
Observe que o valor original de valor
não foi alterado após a chamada da função, pois a passagem de parâmetros foi feita por valor. Ou seja, uma cópia do valor foi passada para a função e qualquer modificação feita dentro dela não afetou a variável original.
Por outro lado, na passagem de parâmetros por referência, o endereço de memória do argumento é passado para a função. Isso permite que a função acesse e modifique diretamente o valor original do argumento.
Em resumo, a passagem de parâmetros por valor faz uma cópia do valor do argumento, enquanto a passagem por referência permite acessar e modificar diretamente o valor original do argumento. A escolha entre os dois métodos depende dos requisitos e das necessidades do programa em questão.
Recursão
Crie um programa que calcula o máximo divisor comum entre dois números usando a recursão.
#include<stdio.h>
int mdc(int num1, int num2)
{
if(num2 != 0)
return mdc(num2, num1%num2);
else
return num1;
}
int main()
{
int n1, n2,calc;
printf("Digite dois numeros inteiros positivos: ");
scanf("%d %d", &n1, &n2);
calc=mdc(n1,n2);
printf("O MDC entre %d e %d eh : %d", n1, n2,calc );
return 0;
}
Crie um programa em Linguagem C que conte os dígitos de um determinado número usando recursão.
Observação: se o usuário inserir o número 250, a saída esperada deve ser : o número digitado tem 3 dígitos.
#include<stdio.h>
int num_digitos(int n1)
{
static int cont=0;
if(n1!=0)
{
cont++;
num_digitos(n1/10);
}
return cont;
}
int main()
{
int num,contador;
printf(" Insira o numero : ");
scanf("%d",&num);
contador = num_digitos(num);
printf("Quantidade de digitos = %d ",contador);
return 0;
}
https://www.huicode.com.br/p/lista-exercicios-resolvidos-sobre.html
Tipos Abstratos de Dados
Ponteiros
https://ninacientista.hashnode.dev/exercicio-usando-struct-questoes-resolvidas-em-linguagem-c
Lista Encadeada (Inserção, Remoção)
obs: o último elemento é aquele que termina em ponteiro->Null
https://ninacientista.hashnode.dev/pilhas-questoes-resolvidas-de-linguagem-c
https://ninacientista.hashnode.dev/filas-estaticas-questoes-resolvidas-de-linguagem-c
https://ninacientista.hashnode.dev/filas-dinamicas-questoes-resolvidas-de-linguagem-c