Questões Ponteiros, Vetores, Matrizes e Strings
Questões Ponteiros, Vetores, Matrizes e Strings
Questões Ponteiros, Vetores, Matrizes e Strings
Primeiro elemento
b.
Segundo elemento
c.
Terceiro elemento
d.
Quarto elemento
e.
Respostas 1:
Em vetores, o primeiro elemento sempre o 0.
Assim, temos: vet[0], vet[1], vet[2], ..., vet[9]
Logo, o vet[2] um terceiro elemento do vetor.
Gabarito: c
2- Se declararmos um vetor como:
int vet[30]
Sim
b.
No
Respostas 2:
Se voc declaram um vetor de 30 elementos, eles so: vet[0], vet[1], ..., vet[29]
Ou seja, no existe: vet[30]
Gabarito: b
3-
Seja
matriz
matrx
declarada
inicializada
por:
int
matrx[][4]
{1,2,3,4,5,6,7,8,9,10,11,12};
O que conter o elemento matrx[1][2] ?
a.
b.
c.
d.
e.
Respostas 3:
Temos um vetor bidimensional, ou matriz, com 12 elementos.
No foi especificado na declarao dela o tanto de linhas que ela possui, somente o nmero
de elementos existentes em cada linha, que 4.
Ou seja, temos 12 elementos, agrupados de 4 em 4. Logo, temos 3 linhas:
matrx[0][], matrx[1] e matrx[2]
Desenhando nossa matriz para resolver esta Respostas da apostila, temos:
matrx[][0]
matrx[][1]
matrx[][2] matrx[][3]
matrx[0] ->
matrx[1] ->
matrx[2] ->
10
11
12
Gabarito: d
4- Se uma string for declarada como:
char str[20];
18
b.
19
c.
20
d.
21
Respostas 4:
Embora as strings sejam comumente vistas como um vetor de caracteres, esta informao
no est totalmente correta, pois o que caracteriza uma string que o ltimo elemento do
vetor o caractere '\0', e no um caractere visvel.
Assim, se declaramos uma string com 20 elementos, s podemos usar 19, pois o ltimo o
\0.
Gabarito: b
5- Qual funo pode ser usada para determinar o comprimento de uma string?
a.
gets
b.
strcpy
c.
strcat
d.
strlen
e.
strcmp
Respostas 5:
strlen vem de string length, que significa tamanho da string.
Gabarito: d
6- Qual das instrues abaixo correta para declarar um ponteiro para inteiro?
a.
*int pti;
b.
*pti;
c.
&i;
d.
int_pti pti;
e.
int *pti;
Respostas 6:
A sintaxe para declarao de um ponteiro :
tipo_do_ponteiro
* nome_do_ponteiro;
Gabarito: e
7- Seja a seguinte seqncia de instrues em um programa C:
int i = 10;
int *pti;
pti = &i;
Qual afirmativa falsa?
a.
b.
*pti igual a 10
c.
d.
e.
pti igual a 10
Respostas 7:
pti no igual a 10, pois pti armazena um endereo de memria, um tipo de dado especial,
diferente de um inteiro comum.
Gabarito: e
8- Se i e j so variveis inteiras e pi e pj so ponteiros para inteiro, qual atribuio ilegal?
a.
pi = &i;
b.
*pj = &j;
c.
pj = &*&j;
d.
i = *&*&j;
e.
i = (*pi)+++*pj;
Respostas 8:
Como dissemos, o endereo de memria um tipo especial de dado, no exatamente igual
a inteiro.
Sabemos que *pj vai mudar o local na qual o ponteiro pj aponta.
Por exemplo, vamos fazer pj apontar para a varivel j: pj = &j;
Assim, fazer: j=10
o mesmo que: *pj = 10
Pois pj aponta para j.
Ento, *pj um nmero inteiro, e ele deve receber um inteiro, e nessa opo ele recebe
dado do tipo endereo de memria: *pj = &j
Gabarito: e
int *pti;
int veti[]={10,7,2,6,3};
pti = veti;
Qual afirmativa falsa?
a.
*pti igual a 10
b.
*(pti+2) igual a 2
c.
pti[4] igual a 3
d.
pti[1] igual a 10
e.
*(veti+3) igual a 6
Respostas 9:
Um vetor, na verdade, um ponteiro, um ponteiro que aponta para seu primeiro elemento.
float f;
float *pf;
pf = &f;
scanf("%f", pf);
a.
Efetuamos a leitura de f
b.
No efetuamos a leitura de f
c.
d.
e.
Respostas 10:
Para usarmos a funo scanf para a leitura de um nmero do teclado, devemos fornecer
para ela um endereo de memria, de onde essa varivel vai ser armazenada.
E como fornecemos um endereo de memria? Atravs do operador & antes de uma
varivel, ou atravs de um ponteiro, pois este ponteiro armazena um endereo de memria.
Gabarito: a
11- Seja a seguinte seqncia de instrues
j = pti == ptj;
b.
i = pti-ptj;
c.
pti += ptj;
d.
pti++;
e.
i = pti || ptj;
Respostas 11:
O resultado da operao de soma ou subtrao de ponteiros, um inteiro.
Por isso, verdadeira a instruo: i = pti - ptj;
Assim, (pti + ptj) tambm seria um inteiro, logo fazer: pti += ptj errado, pois fazer com
que pti receba (pti + ptj) que um inteiro.
Gabarito: c
12- Seja a declarao:
Qual afirmativa falsa?
a.
**matr igual a 1
b.
*(*(matr+1)+2) igual a 7
c.
*(matr[2]+3) igual a 12
d.
(*(matr+2))[2] igual a 11
e.
*((*matr)+1) igual a 5
Respostas 12:
Desenhando a matriz:
matrx[][0]
matrx[][1]
matrx[][2] matrx[][3]
matr[0] ->
matr[1] ->
matr[2] ->
10
11
12
*ptr
matr[1] ->
*ptr
matr[2] ->
*ptr