Lista de Exercícios
( ) Qualquer expressão de vetor e índice é equivalente
a uma outra expressão escrita com um apontador e um deslocamento
( ) Após a atribuição pa=&a[0];
pa e a possuem valores idênticos
( ) A atribuição pa=&a[0];
pode ser escrita como pa=a;
( ) Uma referencia a a[i] pode ser escrita como *(a+i)
( ) &a[i] e a+i são idênticos
( ) a+i e' o endereço do i-ésimo elemento após
a
( ) pa[i] e' idêntico a *(pa+i)
( ) pa=a e' uma operação valida
( ) pa++ e' uma operação valida
( ) a=pa e' uma operação valida
( ) a++ e' uma operação valida
Exercício 2:
O que está errado com os programas abaixo? Descubra e indique
a solução para consertá-los. Execute-os no computador
para ver se o erro foi resolvido.
a)
void main(void) /*esse programa esta errado */
{
int x, *p;
x = 10;
*p = x;
}
Obs: por se tratar de um programa muito pequeno, talvez a execução
deste não mostrará de imediato o erro. Mas ele existe e e'
serio.
b)
void main(void) /* esse programa esta
errado */
{
int
x, *p;
x
= 10;
p
= x;
printf
("%d", *p);
}
Exercício 3:
Qual o valor de y no final do programa? Tente primeiro descobrir fazendo
um teste de mesa e depois verifique no computador o resultado. A seguir,
escreva um /* comentário */ em cada comando de atribuição
explicando o que ele faz e o valor da variável à esquerda
do '=' após sua execução.
main()
{
int
y, *p, x;
y
= 0;
p
= &y;
x
= *p;
x
= 4;
(*p)++;
x--;
(*p)
+= x;
printf
("y = %d\n", y);
}
Exercício 4:
Verifique o programa abaixo. Encontre o seu erro e corrija-o para que
escreva o numero 10 na tela.
#include <stdio.h>
main()
{
int x, *p, **q;
p = &x;
q = &p;
x = 10;
printf("\n%d\n", &q);
}
Exercício 5:
Rescreva o exemplo da página c510.html alterando
a forma de varrer o loop. Ao invés de você usar os índices
do array, você deverá usar um ponteiro e ir incrementando
o ponteiro para atingir cada posição.
Exercício 6:
Refaça o programa da multiplicação entre duas
matrizes (lista4). A implementação
deverá ser feita usando-se a aritmética de ponteiros.
Exercício 7:
Refaça o programa que ordena um vetor de inteiros de N posições
(lista4). Para isto você precisará
usar um loop. Verifique o número de iterações até
que o programa consiga finalmente ordenar o vetor (sugestões: use
valores superiores para N = 25 ou 35).
Exercício 8:
Faça um programa que leia uma string do teclado e em seguida
verifica se a string corresponde a um número (como "-987.234").
Se sim, o programa deverá calcular o valor que a string representa
(inclusive negativo) e apresentá-lo na tela como float. Se não
(caso a string não seja correspondente a um número) o número
apresentado deverá ser zero. Utilize-se de ponteiros para percorrer
a string.
Obs: Sobre bibliotecas, para quem conhece outras
bibliotecas que não estão sendo usadas com freqüência
no nosso curso: Você deverá fazer este exercício apenas
com as bibliotecas stdio.h, string.h e ctype.h. As funções
da biblioteca stdlib.h não deverão ser usadas.
Exercício 4:
Refaça o programa da página c530.html
ordenando as strings lidas por tamanho (menores primeiro, maiores depois).
Use um vetor auxiliar com um ponteiro para cada string.