Baixe o app para aproveitar ainda mais
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
Compartilhar