Buscar

UNIVESP - 2020 - Exercício de apoio - Semana 1_ ESTRUTURAS DE DADOS - EID001

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Questão 1
Escreva o que o seguinte programa imprimirá ao ser executado:
#include <stdio.h>
int main() {
 char a = 'B';
 int x = 20;
 float y = x/8;
 float z = 1.0*x/8;
 printf("a: %c\n", a);
 printf("x: %i\n", x);
 printf("y: %f\n", y);
 printf("z: %f\n", z);
 return 0;
}
Resultado da execução do programa:
a: B
x: 20
y: 2.000000
z: 2.500000
 
Questão 2
Considere a estrutura DATA:
typedef struct{
char dia[2];
char mes[2];
char ano[4];
}DATA;
Escreva uma função que recebe uma cópia de uma estrutura do tipo data e imprime a data
correspondente no formato dia/mês/ano.
/* Assinatura da função imprimir */
void imprimir(DATA copia){
EXERCÍCIOS DE APOIO
Apenas para praticar. Não vale nota.
Exemplo de solução:
void imprimir(DATA copia){
 printf("%i/%i/%i\n", copia.dia, copia.mes, copia.ano);
}
 
Questão 3
Escreva o que o seguinte programa imprimirá ao ser executado:
#include <stdio.h> 
void embaralhar(int* a, int* b, int c) {
 int temp = *a;
 *a = *b + c;
 c = *b;
 *b = temp;
} 
int main() {
 int x = 10;
 int y = 20;
 int z = 35;
 embaralhar(&x,&y,z);
 printf("x: %i\n", x);
 printf("y: %i\n", y);
 printf("z: %i\n", z);
 return 0;
} 
Resultado da execução do programa:
x: 55
y: 10
z: 35
 
Questão 4
O que será impresso pela execução do seguinte programa?
#include <stdio.h>
#include <malloc.h> 
int main() {
 int x = 10;
 int y = 20;
 int z = 35;
 int* a = (int*) malloc(sizeof(int));
 int** b = &a;
 printf("Endereco de x: %p\n", &x);
 printf("Endereco de y: %p\n", &y);
 printf("Endereco de z: %p\n", &z);
 printf("Endereco de a: %p\n", &a);
 printf("Endereco de b: %p\n", &b); 
 printf("Valor de x: %i\n", x);
 printf("Valor de y: %i\n", y);
 printf("Valor de z: %i\n", z);
 printf("Valor de a: %p\n", a);
 printf("Valor de b: %p\n", b);
 *b = &z;
 *a = 44;
 printf("Novo valor de x: %i\n", x);
 printf("Novo valor de y: %i\n", y);
 printf("Novo valor de z: %i\n", z);
 printf("Novo valor de a: %p\n", a);
 printf("Novo valor de b: %p\n", b);
 return 0;
}
Exemplo de resultado (os endereços variam de execução para execução):
Endereco de x: 0x7ffcebdf2554
Endereco de y: 0x7ffcebdf2558
Endereco de z: 0x7ffcebdf255c
Endereco de a: 0x7ffcebdf2560
Endereco de b: 0x7ffcebdf2568
Valor de x: 10
Valor de y: 20
Valor de z: 35
Valor de a: 0x1c0f010
Valor de b: 0x7ffcebdf2560
Novo valor de x: 10
Novo valor de y: 20
Novo valor de z: 44
Novo valor de a: 0x7ffcebdf255c
Novo valor de b: 0x7ffcebdf2560
 
Questão 5
Escreva uma função chamada atualizar, que não possui retorno (void), que terá quatro parâmetros de
entrada:
um ponteiro/referência para uma estrutura do tipo DATA (ver a seguir),a.
um inteiro chamado dia,b.
Esta função deve atualizar os campos dia, mês e ano da estrutura referenciada pelo primeiro parâmetro
da função.
/* Estrutura DATA */
typedef struct
{
 int dia;
 int mes;
 int ano;
} DATA;
/* Assinatura da função atualizar */
void atualizar(DATA* pontData, int dia, int mes, int ano) {
Exemplo de solução:
void atualizar(DATA* pontData, int dia, int mes, int ano) {
 pontData->dia = dia;
 pontData->mes = mes;
 pontData->ano = ano;
}
 
Questão 6
Dada a estrutura lista linear sequencial vista na videoaula 3, considere que trocamos a função de
inserção aprendida na videoaula pela função de inserção inserirNovo apresentada a seguir. Considere
que o usuário tenha inicializado sua lista e em seguida inserido os seguintes registros exibirLista:
primeiro um com chave igual a 10, depois um com chave 20, em seguida um registro com chave igual a
30 e, por fim, um registro com chave igual a 40. O que será impresso pela função exibirLista (vista na
videoaula 3) ao ser chamada depois destas quatro inserções terem sido realizadas?
bool inserirNovo(LISTA* l, REGISTRO reg){
 if (l->nroElem >= MAX) return false;
 l->A[l->nroElem] = l->A[0];
 l->A[0] = reg;
 l->nroElem++;
 return true;
}
 
Será impressa a seguinte linha:
Lista: " 40 10 20 30 "
um inteiro chamado mês, ec.
um inteiro chamado ano.d.
MOSTRAR GABARITO

Continue navegando

Outros materiais