Buscar

AlgIII G1 2017 1Gabarito

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

Prévia do material em texto

Universidade Luterana do Brasil Tipo de atividade: 
 
Prova ( X ) Trabalho ( ) ULBRA – Campus Canoas 
Avaliação: G1 ( X ) G2 ( ) Pró-Reitoria de Graduação 
 
 
 
 
 
 
 
Cursos de Computação Disciplina: Algoritmos e Programação III Data: 19/04/2017 
 
 
 
Turma: 0649 Professor(a): Edemar C. Oliveira Valor da Avaliação: 
 
 
 
 
Acadêmico(a) : Nota: 
 
 
Questão 1 ( 0,5 pontos) Considere o programa: 
int main (){ 
 
 int x,y, *p1, *p2; 
 p1= &x; 
 p2=p1; 
 *p2=4; 
 *p2=*p2+x; 
 p2=&y; 
 *p2=5; 
 *p2=*p2+1; 
 printf("%d %d",*p1,*p2); 
 getch(); 
 } 
 
A ordem da saída será: 
A-( ) 10 e 6 B-( X ) 8 e 6 
C-( ) 6 e 10 D-( ) 6 e 8 
E-( ) 10 e 8 
 
Questão 2 (0,5 pontos) O programa abaixo: 
 
long int calcula(int x, int y) 
 
{ 
 
if (y == 1) 
return
(x); 
else 
 
return(x + calcula(x, y-1)); 
} 
 
int main() 
 
{ 
 
printf("\n %d \n",calcula(2,6)); 
system("pause"); 
} 
 
Qual o valor retornado por calcula(int x, int y) ? 
 
A-( X ) 12 B-( ) 15 
C-( ) 13 D-( ) 16 
E-( ) 14 
Questão 3 (1 ponto) A função abaixo efetua leitura em um 
arquivo TEXTO que contém, a cada linha, as informações de 
nome de aluno e nota, complete onde solicitado: 
 
int mostra_linha ( ) 
 // le arquivo e mostra no vídeo 
 { 
 FILE *fp; 
 char nomealuno[30]; 
 double notaaluno; 
 
 // abre arquivo AUlbra.txt somente para leitura 
 fp = fopen("AUlbra.txt ","rt"); 
 
 // lê a primeira linha do arquivo 
 fscanf(fp, "%s%lf", nomealuno, &notaaluno) 
 
 // mostra no vídeo 
 printf("\n nome:%s - nota:%5.3lf", nomealuno, notaaluno); 
 
 fclose(fp); 
 return 0; 
 } 
Questão 4 (0,6 pontos) 
struct endereco { 
 char rua[50],bairro[50],cidade[50]; 
 int num, cep; 
 }; 
 
 struct agenda { 
 char nome[50], email[50], obs[50]; 
 int tel; 
 endereco end; 
 }; 
 
struct agenda *ag; 
ag = (agenda *) malloc(sizeof(agenda) * 10); 
Baseado nas definições da estrutura acima, responda: 
a) Como podemos carregar um valor para o campo rua ? 
scanf(“%s”,&ag[0].end.rua); ou 
gets(ag[0].end.rua); 
b) Da mesma forma, para atribuir um valor para cep ? 
 ag[0].end.cep = 98324567; 
c) E para carregar uma valor para email ? 
 scanf(“%s”,&ag[0].email); 
Avaliação e valor: AAv I - 22/03 (1,0) AAv II - 05/04 (1,0) AAv III - 12/04 (1,0) - Avaliação G1 19/04 (7,0) 
 
Questão 5 ( 2 pontos) O algoritmo abaixo efetua 
inclusões em um arquivo Binário com informações 
de nome e idade de uma pessoa. 
 
Complete o código conforme solicitado: 
 
struct cadastro { 
 char nome[31]; 
int idade; 
}; 
 
int main() 
 
{ 
 
struct cadastro pessoa; 
FILE *fp; 
 
int t; 
char opt; 
 
// abre o arquivo ulbra.dat para inclusão no final 
//criando o mesmo se não existir (0,4) 
 
fp = fopen("ulbra.dat","ab"); 
 
printf("Digite um nome:\n"); 
gets(pessoa.nome); 
 
printf("Entre com a idade:\n"); 
scanf("%d",&pessoa.idade); 
 
// Grava no arquivo (0,5) 
 
fwrite(&pessoa, sizeof(struct cadastro),1,fp); 
 
fclose(fp); 
 
// Abre o arquivo ulbra.dat para leitura (0,3) 
 
fp = fopen("ulbra.dat","rb"); 
 
if (fp){ 
 
do { 
 
t = fread(&pessoa, sizeof (struct cadastro),1,fp); 
 
if (t==1) { 
 
// Mostra registros gravados (0,8) 
 
printf("Nome :\n"); puts(pessoa.nome); 
 
printf("Idade: %d \n", pessoa.idade); 
 
x = feof(fp); 
 
} while (!x); 
 
} 
 
fclose(fp); 
system("pause"); 
 
} 
Questão 6 (1,2 pontos) 
 
O algoritmo abaixo lê dois valores inteiros e efetua 
cálculos e algumas operações afetando o valor de 
algumas variáveis. Ao final serão mostrados 4 valores. 
Informe que valores serão esses se as entradas 
informadas forem 5 e 9. 
 
int funcao(int N1, int N2, int *S){ 
 int M; 
 M = N1 * N2; 
 *S = N1 + N2; 
 printf("\n Soma 1 = %d", *S); 
 printf("\n M = %d ", M); 
 return (M); 
} 
int main () { 
 int V1, V2, soma, mult; 
 printf("Digite 2 entradas "); 
 scanf("%d %d",&V1,&V2); 
 
 mult = funcao(V1,V2,&soma); 
 printf("\n Mult = %d ", mult / 3); 
 printf("\n Soma 2 = %d \n", soma * 2); 
 system("pause"); 
} 
Soma 1 = 14 M = 45 
Mult = 15 Soma 2 = 28 
 
Questão 7 (1,2 pontos) Complete o código. 
 
Este algoritmo lê valores para um vetor. Depois passa 
o vetor por referência a uma função que mostra os 
valores do vetor em ordem inversa. 
#include <stdio.h> 
#include <stdlib.h> 
 
7-b) faça o código para mostrar os elementos 
invertidos passando parâmetros corretamente à 
função. 
void troca(int *dados) 
{ 
 for (int i=9; i>=0;i--) 
 printf("\%d ", dados[i]);} 
int main() 
{ 
 int vetor[10]; 
 for (int i=0; i<10;i++) 
 scanf("%d",&vetor[i]); 
// 7-a) Informe o (s) parâmetro(s) corretamente 
 
 troca (vetor); 
 
 system("PAUSE"); 
}

Continue navegando