Preparação para Prova de C (Preencher) — 45 Questões

3 blocos × 15 questões. Corrija cada bloco independentemente conforme avança.

Total: 0 / 45

A. Fundamentos

tipos, operadores, if/for/while (Q1-15)
Pontuação: 0/15

Variáveis, tipos, operadores

Q1Tipo
Preencha o tipo para que x armazene 3.14.
[1] x = 3.14;
[1]:
Resposta: double
Q2formato printf
Imprima int n em decimal e double f com 2 casas decimais.
printf("n=%[1], f=%[2]\n", n, f);
[1]:  [2]:
Resposta: d, .2f
Q3operadores compostos
Qual é o valor final de a?
int a = 7; a += 3; a *= 2; a %= 7;
a =
Resposta: 6
Q4cast
Force divisão em ponto flutuante.
int a = 7, b = 2; double r = [1]a / b;
[1]:
Resposta: (double)
Q5incremento
Qual é o valor de b?
int a = 5; int b = a++ + ++a;
b =
Resposta: 12
Q6sizeof
Valor típico de sizeof(int) em bytes.
Resposta: 4
Q7divisão inteira
Saída de printf("%d\n", 7 / 2);?
Resposta: 3
A divisão inteira trunca em direção a zero.

Controle de fluxo (if / for / while)

Q8if
80 ou mais: A. 60–79: B. Caso contrário: C.
if (score >= 80) printf("A"); [1] (score >= 60) printf("B"); [2] printf("C");
[1]:  [2]:
Resposta: else if, else
Q9for
Some os inteiros de 1 a 10.
int sum = 0; for (int i = [1]; i [2] 10; i++) sum += i;
[1]:  [2]:
Resposta: 1, <=
Q10saída while
Preveja a saída.
int n = 10; while (n > 0) { printf("%d ", n); n /= 2; }
Saída:
Resposta: 10 5 2 1
Q11switch
Qual palavra-chave evita o fall-through?
case '+': r = a + b; [1];
[1]:
Resposta: break
Q12do-while
Quantas vezes o printf é executado?
int i = 0; do { printf("*"); i++; } while (i < 0);
Contagem:
Resposta: 1
Q13break/continue
O que isso imprime?
for (int i = 1; i <= 5; i++) { if (i == 3) continue; if (i == 5) break; printf("%d ", i); }
Saída:
Resposta: 1 2 4
Q14laços aninhados
Quantas vezes o printf é executado?
for (int i = 0; i < 3; i++) for (int j = 0; j < 4; j++) printf("*");
Contagem:
Resposta: 12
Q15ternário
Use o operador ternário para escolher o maior entre a e b.
int max = (a > b) [1] a [2] b;
[1]:  [2]:
Resposta: ?, :
Resultado do Bloco A: não corrigido

B. Funções e Globais

vetores, strings, funções, recursão, escopo (Q16-30)
Pontuação: 0/15

Vetores e strings

Q16inicialização de vetor
Declare um vetor a de 5 ints inicializado com {10, 20, 30, 40, 50}.
int a[[1]] = {[2]};
[1]:  [2]:
Resposta: 5, 10, 20, 30, 40, 50
Q17laço sobre vetor
O que isso imprime?
int a[5] = {1, 2, 3, 4, 5}; int sum = 0; for (int i = 0; i < 5; i++) if (a[i] % 2 == 0) sum += a[i]; printf("%d\n", sum);
Saída:
Resposta: 6
Q18terminador NUL
Escreva o terminador de string em C (como aparece no código-fonte).
Resposta: \\0
Q19funções de string
Preencha os nomes das funções da biblioteca padrão.
// concatenar [1](dst, src); // comprimento size_t len = [2](s); // comparar (0 se iguais) if ([3](a, b) == 0) { }
[1]:  [2]:  [3]:
Resposta: strcat, strlen, strcmp
Q20sizeof 2D
Para int m[3][4];, dê o número de elementos e sizeof(m) (assuma int = 4).
elementos:  sizeof(m):
Resposta: 12, 48
Q21vetor para função
Escreva o protótipo de uma função que recebe um vetor de int e seu tamanho e retorna a soma.
Resposta: int sum(int a[], int n);
Q22tamanho de vetor de char
Para char s[] = "Hello";, dê sizeof(s) e strlen(s).
sizeof:  strlen:
Resposta: 6, 5

Funções, recursão, escopo

Q23protótipo
Escreva o protótipo de uma função add(a, b) que recebe dois ints e retorna um int.
Resposta: int add(int a, int b);
Q24return
Qual palavra-chave retorna um valor de uma função?
if (a > b) [1] a; else [1] b;
[1]:
Resposta: return
Q25recursão
Complete a função fatorial.
int fact(int n) { if (n <= 1) return [1]; return n * fact([2]); }
[1]:  [2]:
Resposta: 1, n - 1
Q26Fibonacci
Dado fib(0)=0 e fib(1)=1, quanto é fib(6)?
fib(6) =
Resposta: 8
Q27passagem por valor
O que é impresso para a e b depois de swap()?
void swap(int x, int y) { int t = x; x = y; y = t; } int a = 3, b = 5; swap(a, b); printf("%d %d", a, b);
Saída:
Resposta: 3 5
Q28escopo
Depois do bloco interno, qual é o valor de x?
int x = 10; { int x = 20; } printf("%d", x);
Saída:
Resposta: 10
Q29global
O que isso imprime?
int g = 0; void add(int x) { g += x; } int main(void) { add(3); add(4); printf("%d", g); }
Saída:
Resposta: 7
Q30static
O que é impresso depois de 3 chamadas?
void count(void) { static int n = 0; n++; printf("%d ", n); }
Saída:
Resposta: 1 2 3
Resultado do Bloco B: não corrigido

C. Ponteiros e Avançado

ponteiro, struct, malloc, bitwise, misto (Q31-45)
Pontuação: 0/15

Ponteiros, struct, memória dinâmica

Q31fundamentos de ponteiro
Crie um ponteiro para n e depois some 10 através do ponteiro.
int n = 100; int [1]p = [2]n; [3]p += 10;
[1]:  [2]:  [3]:
Resposta: *, &, *
Q32vetor vs ponteiro
Marque todas as afirmações corretas.
A: o nome de um vetor é o endereço do primeiro elemento.
B: a[i] é equivalente a *(a+i).
C: sizeof(a) sempre é igual a sizeof(&a[0]).
D: dentro de uma função, sizeof em um parâmetro de vetor dá o tamanho de um ponteiro.
Resposta:
Resposta: A, B, D
Q33acesso a struct
Preencha os operadores de acesso a membro corretos.
struct Point { int x, y; }; struct Point p = {3, 4}; printf("%d", p[1]x); struct Point *pp = &p; printf("%d", pp[2]y);
[1]:  [2]:
Resposta: ., ->
Q34malloc/free
Aloque n ints e depois libere-os.
int *a = (int*)[1](n * sizeof(int)); [2](a);
[1]:  [2]:
Resposta: malloc, free
Q35swap por ponteiros
Complete a função swap.
void swap(int [1]x, int [1]y) { int t = [2]x; [2]x = [2]y; [2]y = t; } swap([3]a, [3]b);
[1]:  [2]:  [3]:
Resposta: *, *, &
Q36verificação de NULL
Detecte uma chamada de malloc que falhou.
int *a = malloc(100); if (a == [1]) { /* erro */ }
[1]:
Resposta: NULL
Q37vazamento de memória
Nomeie o bug em duas palavras:
void leaky(int n) { int *a = malloc(n * sizeof(int)); return; }
Resposta: memory leak
Q38aritmética de ponteiro
Qual é o valor de *p?
int a[] = {10, 20, 30, 40, 50}; int *p = a; p += 3;
*p =
Resposta: 40

Avançado / misto

Q39bitwise
Dado x = 0b1010 (= 10), calcule cada expressão.
x & 0b1100 = [1] x | 0b0101 = [2] x << 2 = [3]
[1]:  [2]:  [3]:
Resposta: 8, 15, 40
Q40file IO
Abra um arquivo para leitura e verifique o resultado.
FILE *fp = fopen("data.txt", "[1]"); if (fp == [2]) { return 1; }
[1]:  [2]:
Resposta: r, NULL
Q41pegadinha de macro
#define SQUARE(x) x * x. Valor de SQUARE(3+1)?
Resposta: 7
A macro expande para 3+1*3+1.
Q42bubble sort
Ordenando {5, 2, 4, 1, 3} em ordem crescente com bubble sort — como fica o vetor depois de uma passagem externa?
Resposta: 2, 4, 1, 3, 5
Q43memória
Nomeie cada uma das quatro regiões de memória.
// locais, frames de chamada [1] // malloc [2] // globais, static [3] // código [4]
[1]:  [2]:
[3]:  [4]:
Resposta: stack, heap, data, text
Q44const
Qual linha não compila?
1: const int x = 10; 2: printf("%d", x); 3: x = 20; 4: printf("%d", x);
linha:
Resposta: 3
Q45union
Qual o tamanho desta union (assuma int = 4, double = 8)?
union U { int i; char c; double d; };
sizeof(union U) =
Resposta: 8
O tamanho de uma union é igual ao do seu maior membro.
Resultado do Bloco C: não corrigido