Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercícios de aula sobre Vetores, Matrizes, Strings, Ponteiros e Funções 1. Na sequência de instruções abaixo: float f; float *pf; pf = &f; scanf("%f", pf); a) Efetuamos a leitura de f b) Não efetuamos a leitura de f c) Temos um erro de sintaxe d) Deveríamos estar usando &pf no scanf 2. Na expressão abaixo, o que é do tipo float? float* pf; a) a variável pf; b) o endereço de pf; c) o conteúdo do endereço que será apontado por pf; e) nenhuma das anteriores. 3. Pelas seguintes declarações, int *x, *y, a; float *p, b; Determine quais das seguintes sentenças são válidas: a) y = &a; b) y = &b; c) y = a; d) y = b; e) p = &a; f) p = &b; g) p = a; h) p = b; i) x = y; j) x = p; k) y = x; l) y = p; 4. Preencha a memória a seguir com os dados apropriados, como determinados pelas declarações e instruções abaixo. Note que alguns valores já foram previamente armazenados na memória. int *p, *q, *r, *z, *t, *y; int k, m, c, b, f, a; p = &m; q = &c; *z = 5; t = z; k = *r + *t; *y = f; *q = *r; 5. Seja a seguinte sequência de instruções em um programa C: int *pti; int v[6]={12,5,4,6,3,6}; pti = v; Assinale com V ou F ( ) pti[5] é igual a v[5] ( ) *pti é igual a 12 ( ) (*pti) + 4 é igual a 3 ( ) pti[1]+1 é igual a 6 ( ) *(pti + 2) é igual a v[2] ( ) *(pti) + 1 é igual a *(pti + 1) ( ) *v é igual a 12 6. Simule a execução do programa abaixo destacando o que aparecerá na tela. #include <stdio.h> int F1 (int, int); void F2 (int, int, float *); main() { int a = 2, b = 6, c; float d; c = F1(a, b); printf("O valor de c eh: %d \n", c); F2(a + 1, b + 1, &d); printf("O valor de d eh: %f\n", d); } int F1 (int k, int m) { printf("O valor de k eh: %d \n", k); printf("O valor de m eh: %d \n", m); if(k > m) return 1; 10500 10504 10508 10512 10516 10520 10524 10528 10532 10536 10540 10544 10536 10524 46 p q z r t y a m c f b k 10540 else return 0; } void F2 (int a, int b, float *d) { if (a > b) *d = a/2.0; else *d = b/2.0; } 7. Escreva um programa que contenha uma função que receba uma matriz 3x3 e um número y e calcule o produto escalar de y pela própria matriz. A função deve alterar a matriz original. 8. Escreva uma função para corrigir provas de múltipla escolha de 10 questões. A função deve receber como parâmetro o gabarito da prova – um vetor de 10 caracteres – e as respostas do aluno – também um vetor de 10 caracteres. Retornar a quantidade de acertos do aluno. 9. A amplitude de uma sequência é a diferença entre o maior e o menor valor da sequência. Escreva um programa para ler uma sequência de números reais, armazenar em um vetor e calcular a amplitude. Estruturar nas seguintes funções: le_array: ler os números menor: determina o menor valor e retorna esse valor maior: determina o maior valor e retorna esse valor amplitude: recebe o maior e o menor valores e retorna a diferença 10. Escreva uma função C que receba como parâmetro o ângulo que uma linha faz com o eixo positivo X e determina e retorna o quadrante que essa linha reside. A determinação do quadrante é dada através da seguinte tabela: Ângulo com o eixo positivo X Quadrante Entre 0 e 90 graus 1 Entre 90 e 180 graus 2 Entre 180 e 270 graus 3 Entre 270 e 360 graus 4 Se o ângulo for exatamente 0, 90, 180, ou 270 graus, a linha correspondente não reside em nenhum quadrante mas fica em cima de um eixo. Para esta situação, sua função deve retornar 0. Um ângulo fora do intervalo entre 0 e 360 deve resultar no retorno do valor –1. A função principal deve imprimir o valor retornado. 11. Escrever um programa que leia um caractere digitado pelo usuário e uma string. O programa deve mostrar na tela: a primeira posição onde aparece o caractere digitado, e quantos caracteres a string possui após a primeira posição onde aparece o caractere digitado. Se o caractere não aparecer na string, imprimir -1. 12. Escreva um programa que leia um vetor de caracteres, retire os espaços em branco entre as palavras (caso existam), construa uma nova string (sem os espaços em branco) e imprima na tela esta nova string. 13. Escreva um programa que leia o nome completo de um aluno, e em seguida construa uma nova string com o primeiro nome do aluno e todos os seus sobrenomes abreviados. Imprimir esta nova string. Exemplo: Entrada: Mario Vargas LLosa Saída: Mario V. L. 14. Escreva um programa que leia uma matriz de inteiros A quadrada de ordem 10, e chame uma função que calcule a sua transposta AT. A função principal deve imprimir a matriz original e sua transposta. Exemplo para matriz de ordem 4: 16151413 1211109 8765 4321 A AT 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 15. Dada uma sequência de n números reais, escrever um programa que determine os números que compõem a sequência e a frequência de tais números na sequência dada. Exemplo: n = 10 Seqüência: 3.2 8.1 2.5 3.2 7.4 8.1 3.2 6.3 7.4 3.2 Saída: Num Freq 3.2 4 8.1 2 2.5 1 7.4 2 6.3 1
Compartilhar