Você está na página 1de 20

Lista de Exercícios sobre Ponteiros

1. Escreva um programa que declare um inteiro, um real e um char, e


ponteiros para inteiro, real, e char. Associe as variáveis aos ponteiros (use &).
Modifique os valores de cada variável usando os ponteiros. Imprima os
valores das variáveis antes e após a modificação.

2. Escreva uma função que dado um número real passado como parâmetro,
retorna a parte inteira e a parte fracionária deste número. Escreva um
programa que chama esta função. Obedecendo o seguinte protótipo:

void fracionario(float n, int* inteiro, float* fracionario);

3. Escreva os valores das variáveis para cada instrução do programa abaixo.


O que o programa imprime?

int main (int argc, char *argv[]) {

int a,b,*p1, *p2;


a = 4;
b = 3;
p1 = &a;
p2 = p1;
*p2 = *p1 + 3;
b = b * (*p1);
(*p2)++;
p1 = &b;

printf("%d %d\n", *p1, *p2);


printf("%d %d\n", a, b);
}

4. Faça uma função “max” que recebe uma matriz inteira Anxn e devolve
três inteiros: “k”, “l” e “c”. “k” é o maior elemento de “A” e é igual a A[l][c].
Se o elemento máximo ocorrer mais de uma vez, indique em “l” e “c” as
posições. Use ponteiros para os argumentos.
6. Escreva uma função que aceita como parâmetro um array de inteiros com
N valores, e determina o maior elemento do array e o número de vezes que
este elemento ocorreu no array. Por exemplo, para um array com os
seguintes elementos: 5, 2, 15, 3, 7, 15,8, 6, 15, a função deve retornar para o
programa que a chamou o valor 15 e o número 3 (indicando que o número 15
ocorreu 3 vezes). A função deve ser do tipo void.

7. Faça um programa que possua uma função para:

● Ler 2 notas e retorná-las por parâmetro (chamar uma função dedicada


a ler 2 notas válidas e que devolver os 2 números lidos);
● Calcular a média simples e a média ponderada e retorná-las por
parâmetro, onde a segunda nota tem peso 2 ( média-ponderada= (n1
+n2∗2)/3 );

8. Implemente a seguintes funções usando ponteiros:

● strcpy (char* destino, const char* origem);


● strcmp (char* str1, char* str2);
● strcat (char* destino, const char* origem);
UNIVERSIDADE FEDERAL DO MARANHÃO
PET - COMPUTAÇÃO

EXERCÍCIOS - ALOCAÇÃO DINÂMICA

[ID]: 001
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Mais jovem e Mais velha Dificuldade: Fácil
Enunciado:
1. Crie um programa que:
a) Aloque dinamicamente um array de 5 números inteiros.
b) Peça para o usuário digitar os 5 números no espaço alocado.
c) Mostre na tela os 5 números.
d) Libere a memória alocada.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 002
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Múltiplo de um número no vetor Dificuldade: Fácil
Enunciado:
Faça um programa que leia um número N e:
a) Crie dinamicamente e leia um vetor de inteiro de N posições;
b) Leia um número inteiro X e conte e mostre os múltiplos desse número que existem no
vetor.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 003
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Acertos na loteria Dificuldade: Média
Enunciado:

Escreva um programa que leia primeiro os 6 números gerados pela loteria e depois os 6
números do seu bilhete. O programa então compara quantos números o jogador acertou. Em
seguida, ele aloca espaços para um vetor de tamanho igual a quantidade de números
corretos e guarda os números corretos nesse vetor. Finalmente, o programa exibe os
números sorteados e os seus números corretos.

Obs./Dicas:
Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 004
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Interrupção de leitura Dificuldade: Média
Enunciado:

Faça um programa que leia uma quantidade qualquer de números armazenando-os na


memória e pare a leitura quando o usuário entrar um número negativo. Em seguida, imprima
o vetor lido.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:
[ID]: 005
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Interrupção de leitura Dificuldade: Média
Enunciado:

Faça um programa que pergunte ao usuário quantos valores ele deseja armazenar em um
vetor de double, depois use a função MALLOC para reservar (alocar) o espaço de memória
de acordo com o especificado pelo usuário. Esse vetor deve ter um tamanho maior ou igual a
10 elementos. Use este vetor dinâmico como um vetor comum, atribuindo aos 10 primeiros
elementos do vetor valores aleatórios entre 0 e 100. Exiba na tela os valores armazenados
nos 10 primeiros elementos do vetor.

Obs./Dicas:
Use a função rand()

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 006
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Difícil
Enunciado:
6. Faça um programa que leia números do teclado e os armazene em um vetor alocado
dinamicamente. O usuário irá digitar uma sequência de números, sem limite de quantidade.
Os números serão digitados um a um e, sendo que caso ele deseje encerrar a entrada de
dados, ele irá digitar o número ZERO. Os dados devem ser armazenados na memória deste
modo.
a) Inicie com um vetor de tamanho 10 alocado dinamicamente;
b) Após, caso o vetor alocado esteja cheio, aloque um novo vetor do tamanho do vetor
anterior adicionado espac o para mais 10 valores (tamanho N+10, onde N inicia com 10);
c) Copie os valores já digitados da área inicial para esta área maior e libere a memória da
área inicial;
d) Repita este procedimento de expandir dinamicamente com mais 10 valores o vetor
alocado cada vez que o mesmo estiver cheio. Assim o vetor irá ser ’expandido’ de 10 em 10
valores.

Ao final, exiba o vetor lido.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 007
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Difícil
Enunciado:
Faça um programa que leia do usuário o tamanho de um vetor a ser lido e faça a alocação
dinâmica de memória. Em seguida, leia do usuário seus valores e imprima o vetor lido.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 008
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Fácil
Enunciado:
Faça um programa que leia do usuário o tamanho de um vetor a ser lido e faça a alocação
dinâmica de memória. Em seguida, leia do usuário seus valores e mostre quantos dos
números são pares e quantos são ímpares.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 009
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:
Faça um programa que receba do usuário o tamanho de uma string e chame uma função
para alocar dinamicamente essa string. Em seguida, o usuário deverá informar o conteúdo
dessa string. O programa imprime a string sem suas vogais.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 010
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:
Faça um programa para armazenar em memória um vetor de dados contendo 100 valores do
tipo int.
a) Faça um loop e verifique se o vetor contém realmente os 100 valores inicializados com
zero (conte os 100 zeros do vetor).
b) Atribua para cada elemento do vetor o valor do seu índice junto a este vetor.
c) Exibir na tela os 10 primeiros e os 10 últimos elementos do vetor.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 011
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 012
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:
Faça um programa para encontrar todas as ocorrências de uma determinada palavra
informada pelo usuário em uma matriz de caracteres que também foi informada pelo usuário,
ambos alocados dinamicamente. A palavra só pode ocorrer na diagonal.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

UNIVERSIDADE FEDERAL DO MARANHÃO


PET - COMPUTAÇÃO

EXERCÍCIOS - ALOCAÇÃO DINÂMICA

[ID]: 001
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Mais jovem e Mais velha Dificuldade: Fácil
Enunciado:
1. Crie um programa que:
a) Aloque dinamicamente um array de 5 números inteiros.
b) Peça para o usuário digitar os 5 números no espaço alocado.
c) Mostre na tela os 5 números.
d) Libere a memória alocada.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 002
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Múltiplo de um número no vetor Dificuldade: Fácil
Enunciado:

Faça um programa que leia um número N e:


a) Crie dinamicamente e leia um vetor de inteiro de N posições;
b) Leia um número inteiro X e conte e mostre os múltiplos desse número que existem no
vetor.
Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 003
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Acertos na loteria Dificuldade: Média
Enunciado:

Escreva um programa que leia primeiro os 6 números gerados pela loteria e depois os 6
números do seu bilhete. O programa então compara quantos números o jogador acertou. Em
seguida, ele aloca espaços para um vetor de tamanho igual a quantidade de números
corretos e guarda os números corretos nesse vetor. Finalmente, o programa exibe os
números sorteados e os seus números corretos.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 004
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Interrupção de leitura Dificuldade: Média
Enunciado:

Faça um programa que leia uma quantidade qualquer de números armazenando-os na


memória e pare a leitura quando o usuário entrar um número negativo. Em seguida, imprima
o vetor lido.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 005
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional): Dificuldade: Média
Interrupção de leitura
Enunciado:

Faça um programa que pergunte ao usuário quantos valores ele deseja armazenar em um
vetor de double, depois use a função MALLOC para reservar (alocar) o espaço de memória
de acordo com o especificado pelo usuário. Esse vetor deve ter um tamanho maior ou igual a
10 elementos. Use este vetor dinâmico como um vetor comum, atribuindo aos 10 primeiros
elementos do vetor valores aleatórios entre 0 e 100. Exiba na tela os valores armazenados
nos 10 primeiros elementos do vetor.

Obs./Dicas:
Use a função rand()

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 006
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Difícil
Enunciado:

6. Faça um programa que leia números do teclado e os armazene em um vetor alocado


dinamicamente. O usuário irá digitar uma sequência de números, sem limite de quantidade.
Os números serão digitados um a um e, sendo que caso ele deseje encerrar a entrada de
dados, ele irá digitar o número ZERO. Os dados devem ser armazenados na memória deste
modo.
a) Inicie com um vetor de tamanho 10 alocado dinamicamente;
b) Após, caso o vetor alocado esteja cheio, aloque um novo vetor do tamanho do vetor
anterior adicionado espac o para mais 10 valores (tamanho N+10, onde N inicia com 10);
c) Copie os valores já digitados da área inicial para esta área maior e libere a memória da
área inicial;
d) Repita este procedimento de expandir dinamicamente com mais 10 valores o vetor
alocado cada vez que o mesmo estiver cheio. Assim o vetor irá ser ’expandido’ de 10 em 10
valores.

Ao final, exiba o vetor lido.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 007
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Difícil
Enunciado:

Faça um programa que leia do usuário o tamanho de um vetor a ser lido e faça a alocação
dinâmica de memória. Em seguida, leia do usuário seus valores e imprima o vetor lido.

Obs./Dicas:
Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 008
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Fácil
Enunciado:
Faça um programa que leia do usuário o tamanho de um vetor a ser lido e faça a alocação
dinâmica de memória. Em seguida, leia do usuário seus valores e mostre quantos dos
números são pares e quantos são ímpares.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:
[ID]: 009
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:
Faça um programa que receba do usuário o tamanho de uma string e chame uma função
para alocar dinamicamente essa string. Em seguida, o usuário deverá informar o conteúdo
dessa string. O programa imprime a string sem suas vogais.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 010
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:
Faça um programa para armazenar em memória um vetor de dados contendo 100 valores do
tipo int.
a) Faça um loop e verifique se o vetor contém realmente os 100 valores inicializados com
zero (conte os 100 zeros do vetor).
b) Atribua para cada elemento do vetor o valor do seu índice junto a este vetor.
c) Exibir na tela os 10 primeiros e os 10 últimos elementos do vetor.
Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

[ID]: 011
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:
[ID]: 012
Tópico: <LP - Alocação Dinâmica>
Nome da Questão (opcional):
Expansão de vetor Dificuldade: Média
Enunciado:
Faça um programa para encontrar todas as ocorrências de uma determinada palavra
informada pelo usuário em uma matriz de caracteres que também foi informada pelo usuário,
ambos alocados dinamicamente. A palavra só pode ocorrer na diagonal.

Obs./Dicas:

Exemplos:
Entrada: Saída:
1 2
2 3
3 4
Resposta:

Você também pode gostar