wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Revissão - Linguagem C (str, fun, stru, vt+mt,)

Total questions: 20

Worksheet time: 11mins

Name
Class
Date
1.

O que é uma struct em C e qual a sua principal finalidade?

a)

Uma estrutura que permite armazenar dados do mesmo tipo, similar a um array.

b)

Um tipo de dado composto que permite armazenar diferentes tipos de dados sob um único nome.

c)

Um ponteiro para armazenar múltiplas variáveis do mesmo tipo.

d)

Uma estrutura que substitui a necessidade de funções na linguagem C.

2.

Qual a diferença entre declarar uma struct e instanciar uma variável desse tipo?

a)

A declaração define a estrutura, enquanto a instanciação cria uma variável baseada nela.

b)

Não há diferença, ambos os termos significam a mesma coisa.

c)

A instanciação define o tipo da struct e a declaração armazena valores.

d)

A declaração ocorre no main(), enquanto a instanciação ocorre fora dele.

3.

Como inicializar diretamente um struct socio com os valores {101, 25, 1.75} no momento da declaração?

a)

struct socio s = {101, 25, 1.75};

b)

struct socio s(101, 25, 1.75);

c)

struct socio s = [101, 25, 1.75];

d)

struct socio s = socio(101, 25, 1.75);

4.

Analise o seguinte trecho de código e escolha a alternativa correta sobre sua funcionalidade: ______________________________________________________________________

struct socio s;

printf("Entre a matricula, idade e altura: ");

scanf("%d %d %f", &s.mat, &s.id, &s.alt);

printf("Matricula: %d\nIdade: %d\nAltura: %.2f\n", s.mat, s.id, s.alt);

______________________________________________________________________

a)

O código solicita dados do usuário, armazena em uma struct e os imprime.

b)

O código lê dados, mas não os imprime corretamente devido ao uso de scanf.

c)

O código imprime dados aleatórios pois os valores da struct não foram inicializados.

d)

O código apresenta erro, pois printf não pode imprimir valores de struct.

5.

Como declarar um vetor de struct socio capaz de armazenar 5 elementos?

a)

struct socio s;

b)

struct socio s[5];

c)

struct socio[5] s;

d)

struct socio *s[5];

6.

Como acessar e modificar a idade do terceiro elemento desse vetor?

a)

s[3].id = 30;

b)

s[2].id = 30;

c)

s.id[3] = 30;

d)

s->id[2] = 30;

7.

Considerando a estrutura abaixo, como atribuir um valor ao campo rua da estrutura endereco dentro de um socio chamado s1?

______________________________________________________________________

struct endereco {

char rua[50]; int numero;

};

struct socio {

int mat;

int id;

float alt;

struct endereco end;

};

______________________________________________________________________

a)

s1.end.rua = "Rua Principal";

b)

strcpy(s1.end.rua, "Rua Principal");

c)

s1.rua = "Rua Principal";

d)

s1.rua.end = "Rua Principal";

8.

Como criar uma função que recebe um struct socio como parâmetro e imprime seus dados?

a)

void imprime(struct socio s) { printf("%d %d %.2f", s.mat, s.id, s.alt); }

b)

void imprime(struct socio s) { printf("%d %d %.2f", &s.mat, &s.id, &s.alt); }

c)

void imprime(int s) { printf("%d", s); }

d)

void imprime(struct socio *s) { printf("%d %d %.2f", s->mat, s->id, s->alt); }

9.

Qual será a saída do seguinte programa?

______________________________________________________________________

#include <stdio.h>

void somar(int a, int b) {

a = a + b;

}

int main() {

int x = 5, y = 3;

somar(x, y);

printf("%d\n", x); return 0; }

______________________________________________________________________

a)

8

b)

3

c)

5

d)

Erro de compilação

10.

Qual das seguintes funções implementa corretamente um cálculo recursivo do fatorial de um número?

a)

int fatorial(int n) { return n * fatorial(n - 1); }

b)

int fatorial(int n) { if (n == 0) return 1; return n * fatorial(n - 1); }

c)

int fatorial(int n) { return n * fatorial(n + 1); }

d)

int fatorial(int n) { if (n == 0) return 0; return n * fatorial(n - 1); }

11.

Qual das seguintes afirmações sobre escopo de variáveis em C está correta?

a)

Variáveis globais podem ser acessadas de qualquer função, mas ocupam memória durante toda a execução do programa.

b)

Variáveis locais são visíveis em todo o programa e podem ser acessadas por qualquer função.

c)

O escopo de uma variável declarada dentro de um bloco if ou for se estende para toda a função.

d)

Variáveis declaradas como static dentro de uma função são destruídas assim que a função termina.

12.

Qual será a saída do seguinte trecho de código?

________________________________________________________________

#include <stdio.h>

int main() {

int numeros[] = {10, 20, 30, 40, 50};

printf("%d", numeros[2]);

return 0;

}

________________________________________________________________

a)

10

b)

20

c)

30

d)

50

13.

O que acontecerá ao executar esse programa?

_______________________________________________________________________

int main() {

int matriz[2][3] = {{1, 2, 3}, {4, 5, 6}};

printf("%d", matriz[1][3]);

return 0;

}

________________________________________________________________________

a)

Será impresso 6, pois matriz[1][3] corresponde ao último elemento da matriz.

b)

O código imprimirá 0, pois índices fora do intervalo são inicializados automaticamente.

c)

O código resultará em comportamento indefinido, pois matriz[1][3] acessa memória fora dos limites.

d)

O código não compilará, pois índices inválidos geram erro de compilação.

14.

Qual será o valor de strlen(str) no seguinte código?

___________________________________________________________________

#include <stdio.h>

int main() {

char str[] = "C linguage";

printf("%lu", strlen(str));

return 0;

}

_____________________________________________________________________

a)

9

b)

10

c)

11

d)

12

15.

Qual das seguintes opções é a maneira correta de comparar duas strings em C?

a)

if (str1 == str2)

b)

if (strcmp(str1, str2) == 0)

c)

if (str1.equals(str2))

d)

if (compare(str1, str2) == 0)

16.

Qual das opções a seguir concatena corretamente as strings s1 e s2 em C?

a)

s1 + s2;

b)

strcat(s1, s2);

c)

s1.append(s2);

d)

concatenate(s1, s2);

17.

Qual é a forma correta de copiar uma string em C?

a)

s1 = s2;

b)

s1.copy(s2);

c)

strcpy(s1, s2);

d)

s1

18.

Qual será a saída do seguinte trecho de código?

___________________________________________________________________

#include <stdio.h>

int main() {

char palavra[15] = "Programação";

printf("%lu %lu", sizeof(palavra), strlen(palavra));

return 0;

}

___________________________________________________________________

a)

11 15

b)

15 11

c)

11 11

d)

15 15

19.

Qual das seguintes opções lê corretamente uma string com espaços e evita problemas de estouro de buffer?

a)

scanf("%s", str);

b)

fgets(str, sizeof(str), stdin);

c)

gets(str);

d)

scanf("%[^ ]", str);

20.

Qual dos seguintes trechos de código percorre corretamente uma matriz 3x3 e imprime seus elementos?

a)

for (int i = 0; i < 3; i++) { printf("%d ", matriz[i]); }

b)

for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) printf("%d ", matriz[i][j]);

c)

for (int j = 0; j < 3; j++) printf("%d ", matriz[3][j]);

d)

for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) printf("%d ", matriz[j][i]);