4 - O que é um ponteiro

Propaganda
Faculdade Latino Americana
Ciência da Computação
Programação Estruturada II
Profª. Noeli Pimentel
EXERCÍCIOS REVISÃO
1 - Suponha que v é um vetor. Descreva a diferença conceitual entre as expressões
v[3] e v + 3.
2 - Assumindo que array[] é um vetor do tipo int, quais das seguintes expressões
referenciam o valor do terceiro elemento do vetor?
a) *(array + 2)
b) *(array + 4)
c) array + 4
d) array + 2
3 - O que fazem os seguintes programas?
a)
#include <stdlib.h>
#include <stdio.h>
void main(){
int vet[] = {4,9,13};
int i;
for(i=0;i<3;i++){
printf("%d ",*(vet+i));
}
system("PAUSE");
}
b)
#include <stdlib.h>
#include <stdio.h>
void main(){
int vet[] = {4,9,13};
int i;
for(i=0;i<3;i++){
printf("%X ",vet+i);
}
system("PAUSE");
}
4 - Seja vet um vetor de 4 elementos: TIPO vet[4]. Supor que depois da declaração, vet
esteja armazenado no endereço de memória 4092 (ou seja, o endereço de vet[0]). Supor
também que na máquina usada uma variável do tipo char ocupa 1 byte, do tipo int ocupa
2 bytes, do tipo float ocupa 4 bytes e do tipo double ocupa 8 bytes.
Qual o valor de vet+1, vet+2 e vet+3 se:
a) vet for declarado como char?
b) vet for declarado como int?
c) vet for declarado como float?
5 – Seja a seguinte seqüência de instruções em um programa em C:
int *pti;
int i = 10;
pti = &i;
Qual afirmativa é falsa?
a) pti armazena o endereço de i
b) *pti é igual a 10
c) Ao se executar *pti = 20; i passará a ter o valor 20
d) Ao se alterar o valor de i, *pti será modificado
e) pti é igual a 10
Faculdade Latino Americana
Ciência da Computação
Programação Estruturada II
Profª. Noeli Pimentel
6 - Para cada um dos protótipos de funções abaixo, escreva um trecho de programa C
que chame as funções (declare as variáveis que forem necessárias - não é preciso fazer
scanf ou printf, mas somente utilizar as funções com os parâmetros e valores de retorno
corretos):
a) float SomaPA(float s0, float sN, float incremento);
b) void Imprime(char letra);
c) int VerificaSoma(int x, int y, int *res);
d) int CalculaNumDias(Data *d1, Data *d2);
7 - Descreva resumidamente2 formas de passagem de parâmetros estudadas, não
esquecendo de indicar as vantagens e desvantagens de cada uma delas.
8 – O que é Recusividade? Mostre um exemplo de função recursiva.
9 – Quantas chamadas recursivas acontecerão na função abaixo para Fat(6):
int fat(int n)
{
if (n <= 1)
return 1;
else
return n * fat(n -1);
}
10 – Determine o que a seguinte função recursiva em C calcula. Escreva uma função
iterativa para atingir o mesmo objetivo:
int func(int n)
{
if( n == 0)
return 0;
return (n+ func(n-1));
}
11 - Imagine vet como um vetor de inteiros. Apresente uma função iterativa e uma
recursiva para calcular:
a) o elemento máximo do vetor;
b) o elemento mínimo do vetor;
c) a soma dos elementos do vetor;
d) o produto dos elementos do vetor;
e) a média dos elementos do vetor.
Download