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 |
||||