Prova Linguagem C
Algoritmos e Programação II
1a Avaliação
Nome: ________________________________________________________________________________
Questão 1(2,0 pontos) . Considere o seguinte código escrito em linguagem C: void main()
{
int i, j, *p_1, *p_2, **p_3; i = 4;
j = 5;
p_1 = &j;
p_2 = &i;
p_3 = &p_2;
}
Qual é o valor das seguintes expressões ?
a) *p1 - *p2
b) **p3
c) 2*(*p1+2)-(*p2/2)+1
Questão 2 (2,0 pontos). Dado o programa abaixo, complete as Tabelas 1 e 2. main() {
int i, j,k, *p1, *p2, *p3,**pp;
i = 1;
j = 2;
k = 0; p1 = &k;
p2 = &j;
p3 = p1; pp = &p2;
}
Tabela 1
Variável
i j k p1 p2 p3 pp
Conteúdo
Endereço
1000
1004
1020
1080
1090
1100
1200
Tabela 2
Expressão
Resultado i *p1
&p2
*p3
**pp
&p1
*p2
Questão 3 (2,0 pontos). Em uma universidade, necessita-se que seja implementado um sistema onde será realizado o cadastro de todos os alunos. Com base nisso, criou-se a seguinte biblioteca contendo as definições da estrutura utilizada para armazenar os dados. typedef struct aluno Aluno;
// Operação para inicializar um aluno. Deve reservar o espaço de memória necessário para criar a estrutura aluno e preencher os campos nome e matrícula (recebidos como parâmetro).
Aluno * inicializa(char *, char *);
// Operação para alteração de cadastro de aluno. Altera o campo nome do aluno recebido como parâmetro. void alterar_nome(Aluno *, char *);
Com base nas descrições definidas nos comentários contidos no arquivo “aluno.h”, implemente as duas operações sobre o TAD aluno. Para isso, complete o programa “aluno.c” definido abaixo.
#include “aluno.h”
struct aluno{ char nome[50]; char matricula[10];
};
Aluno p* inicializa(char *nome, char *mat)
{
Aluno* p = (Aluno*) malloc(sizeof(Aluno));
p->nome[] = 0; p->mat[] = 0; return p;
}
void alterar_nome(Aluno *aluno, char *nome)
{
aluno->nome = nome;
}