Curso: Ciência da Computação
Disciplina: Algoritmos e Estrutura de Dados I
Professora: Luciana Balieiro
Exercícios Complementares
1. Crie um vetor de 10 inteiros a partir da função malloc. Depois imprima o endereço
de cada posição do vetor alocado dinamicamente.
2. Crie um programa para analisar um conjunto de amostras. Sendo que cada amostra
pode ter tamanhos diferentes. Por exemplo: amostra1 = {1, 3, 2, 4}; amostra2 =
{1,2}; amostra3={1,4,2,3,5,6}, etc.
O programa deve solicitar ao usuário a quantidade de conjuntos de amostras, a
quantidade de itens da amostra e cada amostra deve ser armazenada em um vetor.
A cada conjunto deve ser calculada e exibida a média.
3. Seja o seguinte trecho de programa:
int i=3,j=5;
int *p, *q;
p = &i;
q = &j;
Qual é o valor das seguintes expressões?
a) p == &i; b) *p - *q
c) *p/(*q)+7
4. Considere a seguinte declaração int *p; Explique a diferença entre:
p++;
(*p)++;
*(p++);
5. Dado o programa abaixo, completar as Tabelas:
main()
{
int i, j, *p_1, **p_2,**p_3;
i = 4;
j = 5;
p_1 = &j;
p_2 = &p_1;
p_3 = p_2;
}
i
j
p_1
Variável
1000
1007
1030
Endereço
4
5
Conteúdo
Expressão
Resultado
&i
p_2
1053
**p_2
p_3
1071
*p_1
6. Faça um programa ler dois números. Crie uma função que receba esses números por referência e os
coloque em ordem crescente.
7. Faça um programa que leia um texto. Crie uma função que converta este texto para maiúscula. O texto
deve ser passado para função por referência e não ser utilizada nenhuma função já pronta para
transformar a letra em maiúscula.
8. Considerando a declaração int lista[] um ponteiro para um vetor com {2,4,1,3} valores, qual será
a saída produzida por printf("\n%d\n", *lista+1);?
9. Quais serão os valores de x, y e p ao final do trecho de código abaixo?
int x, y, *p;
y = 0;
p = &y;
x = *p;
x = 4;
(*p)++;
--x;
(*p) += x
10. Os programas (trechos de código) abaixo possuem erros. Apresente a solução correta para cada caso.
a) void main() {
int x, *p;
x = 100;
p = x;
printf(“Valor de p: %d.\n”, *p);
}
b) void troca (int *i, int *j) {
int *temp;
*temp = *i;
*i = *j;
*j = *temp;
}
c) char *a, *b;
a = "abacate";
b = "uva";
11. Escreva uma função mm que receba um vetor inteiro v[n] e os endereços de duas variáveis inteiras,
digamos min e max, deposite nessas variáveis o valor do elemento mínimo e o valor do elemento
máximo do vetor. Escreva também uma função main que use a função mm.
12. Escreva uma função que recebe uma string de caracteres e uma letra e devolve um vetor de inteiros
contendo as posições (índices no vetor da string) onde a letra foi encontrada) e um inteiro contendo o
tamanho do vetor criado (total de letras iguais encontradas). Utilize o retorno como um vetor de índices e
um ponteiro para guardar o tamanho do vetor. Crie uma função main para testar. A assinatura da função
deve ser:
int *busca_caractere(char *str, char c, int *pn);
13. Escrever um programa que lê duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todos os
caracteres que aparecem em s1 e em s2.
Download

1. Crie um vetor de 10 inteiros a partir da função