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.