NEW
Font size
WorksheetsRevissão - Linguagem C (str, fun, stru, vt+mt,)
Total questions: 20
Worksheet time: 11mins
O que é uma struct em C e qual a sua principal finalidade?
Uma estrutura que permite armazenar dados do mesmo tipo, similar a um array.
Um tipo de dado composto que permite armazenar diferentes tipos de dados sob um único nome.
Um ponteiro para armazenar múltiplas variáveis do mesmo tipo.
Uma estrutura que substitui a necessidade de funções na linguagem C.
Qual a diferença entre declarar uma struct e instanciar uma variável desse tipo?
A declaração define a estrutura, enquanto a instanciação cria uma variável baseada nela.
Não há diferença, ambos os termos significam a mesma coisa.
A instanciação define o tipo da struct e a declaração armazena valores.
A declaração ocorre no main(), enquanto a instanciação ocorre fora dele.
Como inicializar diretamente um struct socio com os valores {101, 25, 1.75} no momento da declaração?
struct socio s = {101, 25, 1.75};
struct socio s(101, 25, 1.75);
struct socio s = [101, 25, 1.75];
struct socio s = socio(101, 25, 1.75);
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);
______________________________________________________________________
O código solicita dados do usuário, armazena em uma struct e os imprime.
O código lê dados, mas não os imprime corretamente devido ao uso de scanf.
O código imprime dados aleatórios pois os valores da struct não foram inicializados.
O código apresenta erro, pois printf não pode imprimir valores de struct.
Como declarar um vetor de struct socio capaz de armazenar 5 elementos?
struct socio s;
struct socio s[5];
struct socio[5] s;
struct socio *s[5];
Como acessar e modificar a idade do terceiro elemento desse vetor?
s[3].id = 30;
s[2].id = 30;
s.id[3] = 30;
s->id[2] = 30;
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;
};
______________________________________________________________________
s1.end.rua = "Rua Principal";
strcpy(s1.end.rua, "Rua Principal");
s1.rua = "Rua Principal";
s1.rua.end = "Rua Principal";
Como criar uma função que recebe um struct socio como parâmetro e imprime seus dados?
void imprime(struct socio s) { printf("%d %d %.2f", s.mat, s.id, s.alt); }
void imprime(struct socio s) { printf("%d %d %.2f", &s.mat, &s.id, &s.alt); }
void imprime(int s) { printf("%d", s); }
void imprime(struct socio *s) { printf("%d %d %.2f", s->mat, s->id, s->alt); }
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; }
______________________________________________________________________
8
3
5
Erro de compilação
Qual das seguintes funções implementa corretamente um cálculo recursivo do fatorial de um número?
int fatorial(int n) { return n * fatorial(n - 1); }
int fatorial(int n) { if (n == 0) return 1; return n * fatorial(n - 1); }
int fatorial(int n) { return n * fatorial(n + 1); }
int fatorial(int n) { if (n == 0) return 0; return n * fatorial(n - 1); }
Qual das seguintes afirmações sobre escopo de variáveis em C está correta?
Variáveis globais podem ser acessadas de qualquer função, mas ocupam memória durante toda a execução do programa.
Variáveis locais são visíveis em todo o programa e podem ser acessadas por qualquer função.
O escopo de uma variável declarada dentro de um bloco if ou for se estende para toda a função.
Variáveis declaradas como static dentro de uma função são destruídas assim que a função termina.
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;
}
________________________________________________________________
10
20
30
50
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;
}
________________________________________________________________________
Será impresso 6, pois matriz[1][3] corresponde ao último elemento da matriz.
O código imprimirá 0, pois índices fora do intervalo são inicializados automaticamente.
O código resultará em comportamento indefinido, pois matriz[1][3] acessa memória fora dos limites.
O código não compilará, pois índices inválidos geram erro de compilação.
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;
}
_____________________________________________________________________
9
10
11
12
Qual das seguintes opções é a maneira correta de comparar duas strings em C?
if (str1 == str2)
if (strcmp(str1, str2) == 0)
if (str1.equals(str2))
if (compare(str1, str2) == 0)
Qual das opções a seguir concatena corretamente as strings s1 e s2 em C?
s1 + s2;
strcat(s1, s2);
s1.append(s2);
concatenate(s1, s2);
Qual é a forma correta de copiar uma string em C?
s1 = s2;
s1.copy(s2);
strcpy(s1, s2);
s1
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;
}
___________________________________________________________________
11 15
15 11
11 11
15 15
Qual das seguintes opções lê corretamente uma string com espaços e evita problemas de estouro de buffer?
scanf("%s", str);
fgets(str, sizeof(str), stdin);
gets(str);
scanf("%[^ ]", str);
Qual dos seguintes trechos de código percorre corretamente uma matriz 3x3 e imprime seus elementos?
for (int i = 0; i < 3; i++) { printf("%d ", matriz[i]); }
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) printf("%d ", matriz[i][j]);
for (int j = 0; j < 3; j++) printf("%d ", matriz[3][j]);
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) printf("%d ", matriz[j][i]);
