1.a) Ambas abrem um ficheiro nome.ext
(se
existir) para leitura, embora a primeira o abra em modo texto
e a segunda em modo binário.
1.b) Ambas abrem um ficheiro nome.ext
para leitura e
escrita no modo binário, mas no primeiro caso se o ficheiro
existir é apagado, e no segundo se o ficheiro o ficheiro não
existir ocorre um erro.
1.c) A primeira expressão escreve num ficheiro (de texto) os
caracteres correspondentes à representação decimal do valor val
,
enquanto a segunda escreve num ficheiro (binário) os bytes
com a representação binária de val
.
1.d) FILE *fich
e int val
.
2.a) A definição de MULT3()
2.b) A chamada printf("%d\n", 8 / MULT1(1, 4))
imprime 32
.
2.c) A chamada printf("%d\n", MULT2(1+1, 2))
imprime
3
.
3.a) Deve-se usar a segunda linha de código.
3.b) Em ANSI-C os parâmetros das funções são variáveis
locais inicializadas com o valor dos argumentos. Assim, alterar o
valor dum parâmetro não afecta o valor do argumento respectivo.
Para conseguir afectar variáveis ou posições de memória
exteriores a uma função é necessário passar à função o endereço
dessas variáveis.
4.a) A variável turmas
consiste numa matriz de MAXTURMAS
turmas. Cada turma consiste numa estrutura do tipo turmaTipo
com quatro campos: o número da turma (número
, um
inteiro), o número de alunos da turma (numeroAlunos
,
um inteiro), o ano da turma (ano
, um inteiro), e uma
matriz de MAXALUNOSTURMA
alunos. Cada aluno consiste
numa estrutura do tipo alunoTipo
com dois campos: o
número do aluno (numero
, um inteiro), e o nome do
aluno (nome
), que consiste numa cadeia de caracteres
com MAXNOME+1
posições.
4.b)
int t, a; for(t = 0; t < numeroTurmas; t++) for(a = 0; a < turmas[t].numeroAlunos; a++) printf("nome \"%s\", numero %d\n", turmas[t].alunos[a].nome, turmas[t].alunos[a].numero);
4.c) turmas[8].alunos[6].número = 111
5.a) A chamada a f2()
deveria ser f2(b)
.
5.b) Imprime 1, 0
6. A chamada func(4)
imprime:
1 3 6 10
7. O resultado da execução do programa é:
1 6 10 4 5 6 7 8
8.
int Ltroca(Lista *l) { Lelemento *seguinte; if(l == NULL || l->inicio == NULL || l->corrente == NULL) return 0; if((seg = l->corrente->seguinte) == NULL) return 0; if(l->anterior != NULL) l->anterior->seguinte = seguinte; else l->inicio = seguinte; l->corrente->seguinte = seguinte->seguinte; seguinte->seguinte = l->corrente; return 1; }
9. O resultado da execução do programa é:
?? 11 2 1 8 2
em que ??
representa um valor indeterminado.
Página
concebida e mantida por Eng. Manuel Menezes de Sequeira (última actualização 2006/07/07) Copyright © 1996-2001 ISCTE |