Escolar Documentos
Profissional Documentos
Cultura Documentos
Ponteiros
Questão 02.
b) Ao tratar a variável temp como um ponteiro sendo ela somente uma variável
auxiliar que armazenará um valor. Para corrigir o erro basta retirar o símbolo asterisco (*)
junto a variável temp.
c) O erro se encontra nas condições, a forma da expressão está fazendo com que
ao verificar qual string vem primeiro na ordem alfabética os caracteres sejam convertidos em
valores conforme tabela ASCII e somados, obtendo assim um valor numérico que não é capaz
de dizer qual string vem primeiro na ordem alfabética. Uma forma de corrigir o programa é
usar o comando strcmp que comparará as strings e retornar um valor conforme a ordem delas
alfabeticamente.
Questão 04.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
if (*min == 0)
(int*)realloc (v, ++*max * sizeof(int));
else
(int*)realloc (v, (*max - *min) * sizeof(int));
int main ()
{
setlocale (LC_ALL, "portuguese");
int min, max, i, *v = (int*)malloc (sizeof(int));
return 0;
}
Questão 05. Sendo v um vetor, a expressão v[3] retornará o valor existente no quarto
elemento do vetor, enquanto que, a expressão v+3 retornará o endereço do quarto elemento do
vetor.
Questão 06. O conteúdo do vetor a será uma sequência do número 0 até o número 98. O
valor de cada elemento do vetor será igual ao seu índice.
Questão 07.
#include <stdio.h>
int main ()
{
int a = 1, b = 2;
return 0;
}
Questão 08.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
char *strcopy (char *str)
{
char *strcop = malloc (strlen(str) * sizeof(char));
strcpy(strcop, str);
return strcop;
}
int main ()
{
setlocale (LC_ALL, "portuguese");
char str[] = "Sê tu uma bênção", *strcop = malloc (strlen(str) * sizeof(char));
strcop = strcopy(str);
return 0;
}
Questão 09.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main ()
{
setlocale (LC_ALL, "portuguese");
int *v, n, i, max, min;
printf ("\n\n\tInforme:\n");
for (i = 0; i < n; i++)
{
printf ("\n\tV[%d] = ", i + 1);
scanf ("%d", &v[i]);
}
system ("cls");
return 0;
}
Questão 10. Na primeira linha esta havendo a declaração e inicialização da variável x com o
valor 100, além da declaração do ponteiro p e do ponteiro de segunda ordem pp. Na segunda
linha o endereço da variável x está sendo atribuído ao ponteiro p, e na terceira linha o
endereço do ponteiro p está sendo atribuído ao ponteiro de segunda ordem pp. Em suma, p
está apontando para x e pp está apontando para p. NA quarta linha está ocorrendo a impressão
do conteúdo apontado pelo ponteiro apontado por pp, no caso, pelo ponteiro p que aponta para
x. Logo, o resultado do código é a impressão do valor 100.
Questão 11.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
int main ()
{
setlocale (LC_ALL, "portuguese");
char str[100], carac;
int *v, tam = 0, i;
printf ("\n\n\tA letra '%c' informada se encontra nos seguintes índices da string: {",
carac);
for (i = 0; i < tam - 1; i++)
printf ("%d, ", v[i]);
printf ("%d}\n\tE a quantidade de elementos do vetor é %d\n\n\n", v[tam - 1], tam);
return 0;
}
Questão 12.
c) No “p” significa que a variável apontada por p esta tendo seu conteúdo
acessado e na expressão “x*5” significa uma multiplicação. A expressão completa “*p = x*5”
significa: a variável apontada por p recebe o valor de x multiplicado por 5.
Questão 13. A saída do programa será primeiro o endereço de ‘i’ que está armazena em ‘p’,
em seguida será acessado o valor da variável apontada por ‘p’ e somado 2 a ele, no caso seria
impresso o valor 7. Logo após, a expressão “**&p” acessará inicialmente o endereço de ‘p’ e
logo após acessará o conteúdo desse endereço que é o endereço de ‘i’, e por fim, acessará o
conteúdo do endereço de ‘i’ que é o valor 5 e que também será impresso. A expressão “3**p”
multiplicará por 3 o valor da variável apontada por ‘p’, será impresso o valor 15. E por fim, a
expressão “**&p + 4” partirá do mesmo princípio da expressão “**&p” e somará ao valor 4,
resultando na impressão do valor 9.
Estrutura
Questão 01.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main()
{
setlocale (LC_ALL, "portuguese");
int n, i;
A aluno[n];
printf ("\n\n\n");
return 0;
}
Questão 02.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main ()
{
setlocale (LC_ALL, "portuguese");
int n, i, cpf, op;
A pessoa[n];
do
{
printf ("\n\n\tInforme o CPF da pessoa que deseja-se saber o IMC: ");
scanf ("%d", &cpf);
system ("cls");
for (i = 0; i < n; i++)
if (pessoa[i].cpf == cpf)
{
printf ("\n\n\tNome: %s", pessoa[i].nome);
printf ("\tIMC: %.1f", pessoa[i].peso / (pessoa[i].altura *
pessoa[i].altura));
break;
}
if (i == n)
printf ("\n\n\tCPF informado não encontrado nos dados cadastrados");
return 0;
}