Baixe o app para aproveitar ainda mais
Prévia do material em texto
QUESTIONÁRIO UNIDADE VI (2017/02) – LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO Pergunta 1 Analise o programa abaixo e assinale a alternativa correta: #include<stdio.h> void incr_vetor (int *v, int tam){ int i; for (i = 0; i < tam; i++) v[i]++; } int main() { int a[]={1,3,5}; incr_vetor(a, 3); printf("%d %d %d\n", a[0], a[1], a[2]); system("pause"); return 0; } Resposta: a. 2 4 6 Pergunta 2 A função abaixo (trecho de um programa) deveria trocar os valores entre duas variáveis, mas possui um erro. void troca (int *i, int *j) { int *temp; *temp = *i; *i = *j; *j + *temp; } A alternativa que identifica o erro é: Resposta: d. A variável “temp” não precisava ser um ponteiro. Pergunta 3 O programa abaixo deveria identificar entre duas palavras qual vem antes no dicionário: #include<stdio.h> #include<string.h> int main() { char *a, *b; *a = "abacate"; *b = "uva"; if(strcmp(a,b)<0) printf("%s vem antes de %s no dicionario", a,b); else printf("%s vem depois de %s no dicionario", a,b); printf("\n"); system("pause"); return 0; } A alternativa que identifica o erro é: Resposta: c. As variáveis “a” e “b” não precisavam ser ponteiros na atribuição de valores. Pergunta 4 Dado o programa abaixo e considerando as entradas 0, 1 e 5; qual será a saída apresentada para cada entrada respectivamente? #include<stdio.h> int f1(int n) { if(n==0) return 1; else return(n*f1(n-1)); } int main() { int a,b; printf("Digite um valor inteiro:"); scanf("%d", &a); b=f1(a); printf("%d\n", b); system("pause"); return 0; } Resposta: c. 1, 1, 120. Pergunta 5 Dado o programa abaixo e considerando as entradas 0, 1 e 5; qual será a saída apresentada para cada entrada respectivamente? #include<stdio.h> int f2(int n) { if(n==0) printf(“Zero”); else { printf(“%d”, n); f2(n-1); } } int main() { int a,b; printf("Digite um valor inteiro:"); scanf("%d", &a); f2(a); system("pause"); return 0; } Resposta: e. Zero, 1Zero, 54321Zero. Pergunta 6 Dado o programa abaixo e considerando as entradas 0, 1 e 5; qual será a saída apresentada para cada entrada respectivamente? #include<stdio.h> int func(int n) { if(n==0) return (0); return(n+func(n-1)); } int main() { int a,b; printf("Digite um valor inteiro:"); scanf("%d", &a); b=func(a); printf("%d\n", b); system("pause"); return 0; } Resposta: a. 0, 1, 15 Pergunta 7 Dado o programa abaixo e considerando as entradas 0, 1 e 5; qual será a saída apresentada para cada entrada respectivamente? #include<stdio.h> int func(int n) { if(n==0) return (0); return(3*n+func(n-1)); } int main() { int a,b; printf("Digite um valor inteiro:"); scanf("%d", &a); b=func(a); printf("%d\n", b); system("pause"); return 0; } Resposta: b. 0, 3, 9 Pergunta 8 Analise a função caracteres e identifique a alternativa que melhor descreve a tarefa executada por ela. char *caracteres(char *s1, char *s2){ int i,j,w,n=0, encontrado; char *s3; for(i=0; s1[i]!='\0'; i++){ for(j=0; s1[j]!='\0'; j++){ if(s1[i]==s2[j]){ n++; break; } } } s3 = malloc((n+1)*sizeof(char)); n=0; for(i=0; s1[i]!='\0'; i++){ for(j=0; s1[j]!='\0'; j++){ if(s1[i]==s2[j]){ encontrado=0; for(w=0; w<n; w++){ encontrado=1; break; } } if(encontrado==0){ s3[n]=s1[i]; n++; break; } } } } s3[n]='\0'; return s3; } Resposta: c. Lê duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contem todos os caracteres que aparecem em s1 e s2. Pergunta 9 O programa abaixo deve receber uma string de caracteres e uma letra. Possuir uma função que devolve um vetor de inteiros contendo as posições (índices no vetor da string) onde a letra foi encontrada e um inteiro contendo o tamanho do vetor criado (total de letras iguais encontradas). #include<stdio.h> #include<stdlib.h> int *acha_caractere(char *str, char c, int +pn){ int i=0, n=0, *indices=0; for(i=0; str[i]!='\0', i++){ if(str[i]==c){ n++ } } ____________________________________________ for(i=0,n=0;str[i]!='\0';i++){ if(str[i]==c){ indices[n]=i; n++; } } *pn=n; return indices; } int main(){ int *indices=0, n=0, i; char *frase = "Universidade Paulista"; _____________________________________________ for (i=0; i<n; i++){ printf("%d ", indices[i]); } return 0; } Para que o programa execute corretamente sua tarefa, devemos preencher a linha 11 e a linha 25, respectivamente, conforme a alternativa: Resposta: a. índices=(int *) malloc(n*sizeof(int)); Índices = acha_caractere(frase, ‘a’, &n); Pergunta 10 Ao declarar um vetor, para dimensiona-lo, é necessário saber de antemão quantos elementos deveriam compo-lo. Temos de prever o numero máximo de elementos no vetor durante o processo da codificação. Com base nesses dados, avalie as afirmações seguintes: I – o pré-dimensionamento do vetor é um fator que limita a programação II – podemos superdimensionar o vetor, pois nunca estamos sujeitos a ter falta de memoria III – podemos reservar a memoria, istoé, solicitar ao programa que aloque dinamicamente um espaço na memoria durante sua execução É correto apenas o que se afirma em: Resposta: e. I e III apenas
Compartilhar