Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Apostila UFMG: Questões sobre funções com gabarito


O seguinte material era um curso ofertado pela UFMG (Universidade Federal de Minas Gerais) até 2005.
Devido a qualidade e grande uso da apostila, até hoje eles deixam seu material para quem desejar estudar, consultar ou divulgar.

Indicamos, pois a apostila é uma excelente fonte de estudo, e como programador C você estudar o máximo possível por diversas fontes.
Apostila de linguagem C da UFMG

O seguinte material é uma coletânea de questões sobre ponteiros, assunto que já foi ensinado em nosso Curso C Progressivo:
Funções em C


-->
 

Responda as perguntas abaixo, escolhendo a alternativa adequada para cada questão. Ao terminar, aperte o botão "Verifica  nota" no final do formulário. Você pode fazer quantas tentativas quiser até atingir a nota 100. Se quiser recomeçar, basta apertar o botão "Limpa" no final do formulário.

1- Qual a afirmativa verdadeira?
     
    a.  Você pode retornar para um programa quantas variáveis de uma função desejar através do comando return 
    b.  Uma função só pode ter um comando return 
    c.  Os protótipos de função servem para declarar as funções, isto é, indicar para o compilador qual o seu nome, tipo de retorno e o número e tipos dos parâmetros 
    d.  Uma função não pode retornar um ponteiro 
    e.  Nenhuma das opções anteriores 

2- : Qual das seguintes razões não é uma razão válida para o uso de funções em C?
     
    a.  Funções usam menos memória do que se repetirmos o mesmo código várias vezes
    b.  Funções rodam mais rápido 
    c. Funções fornecem um meio de esconder cálculos em uma "caixa preta" que pode ser usada sem a preocupação de detalhes internos de implementação
    d. Funções mantêm variáveis protegidas das outras partes do programa

3- Qual a afirmativa falsa?
     
    a.  Se uma função não retorna nada ela deve ser declarada como void
    b.  O retorno da função main é feito para o sistema operacional 
    c.  stdio.h e string.h contêm o protótipo de algumas funções da biblioteca do C 
    d.  Funções podem ser definidas dentro de outras funções 
    e.  Uma das opções anteriores é falsa

4- Qual a afirmativa verdadeira?
     
    a.  stdio.h e string.h contêm o corpo de algumas funções da biblioteca do C 
    b.  Funções podem ser chamadas por outras funções 
    c.  Em um programa C todas as funções de um programa devem estar em um único arquivo .c
    d.  Variáveis declaradas em uma função são acessíveis por todas as outras funções 
    e.  Nenhuma das opções anteriores

5- Qual a afirmativa verdadeira?
     
    a.  A palavra reservada auto é utilizada para dizer que uma variável é local (automática). Porém, ela pode ser omitida dentro de uma função, pois todas as variáveis são locais por default.
    b.  Não se pode utilizar variáveis com o mesmo nome em funções diferentes.
    c. Os parâmetros recebidos por uma função têm o mesmo endereço das variáveis usadas na chamada à função
    d. Quando uma variável local tem o mesmo nome de uma variável global, a variável local se torna inacessível e a variável global é acessível
    e. Nenhuma das opções anteriores

6- Qual a afirmativa falsa?
     
    a.  Os parâmetros recebidos por uma função armazenam cópias das variáveis usadas na chamada da função 
    b.  Variáveis globais são conhecidas e podem ser alteradas por todas as funções do programa
    c.  Quando queremos alterar as variáveis que são passadas como parâmetros para uma função, devemos declará-las como ponteiros na função
    d.  A função scanf necessita receber como parâmetro o endereço da variável de entrada, porque ela precisa alterar esta variável. 
    e.  Uma das opções anteriores é falsa

7-  O que imprime o programa abaixo?
    #include <stdio.h>
    void func();
    int i = 10;
    void main()
    {
        int i=20;
        func();
        printf("i= %d ", i);
        {
            int i = 30;
            func();
            printf("i= %d ", i);
        }
    }
    void func()
    {
        printf("i = %d ", i);
    }
    
     
    a.  i= 20 i= 20 i= 30 i= 30
    b.  i= 10 i= 20 i=10 i= 30
    c.  i= 20 i=10 i=10 i=30
    d.  i= 10 i=10 i=10 i=10
    e.  Nenhuma das opções anteriores

8- Ao se utilizar um vetor como parâmetro para uma função que informação está sendo passada à função?
     
    a.  Uma cópia de todos elementos do vetor
    b.  Uma cópia do primeiro elemento do vetor 
    c.  O endereço do primeiro elemento do vetor 
    d.  O endereço de todos os elementos do vetor 
    e.  Nenhuma das opções anteriores 

9- Sejam par1, par2 e par3 variáveis inteiras. Se chamarmos uma função pela instrução:
    func(&par1,&par2,&par3);
Para que servem &par1, &par2 e &par3 ?
     
    a.  São valores inteiros passados para a função 
    b.  Servem para armazenar os endereços da função e das funções que chamaram
    c.  São os endereços das variáveis da função que chamou. Nestes endereços iremos armazenar os valores a serem modificados pela função
    d.  Armazenam os endereços das funções de biblioteca usados na função 
    e.  Nenhuma das opções anteriores

10- O que imprime o programa a seguir?
    #include <stdio.h>
    func(int *a, int b)
    {
        int temp;
        temp = *a;
        *a = b;
        b = temp;
    }
    void main()
    {
        int a = 10, b = 20;
        func(&a, b);
        printf("a = %d, b = %d", a, b);
    }
     
    a.  a = 10, b = 20
    b.  a = 20, b = 10
    c.  a = 10, b = 10 
    d.  a = 20, b = 20
    e.  Nenhuma das opções anteriores 



Sua nota é: em um máximo de 100.

3 comentários:

ze disse...

8- Ao se utilizar um vetor como parâmetro para uma função que informação está sendo passada à função?


a. Uma cópia de todos elementos do vetor
b. Uma cópia do primeiro elemento do vetor
c. O endereço do primeiro elemento do vetor
d. O endereço de todos os elementos do vetor
e. Nenhuma das opções anteriores


a resposta correta foi a letra c. como assim? so se cada elemeto do vetor funcionar como um ponteiro. o 1 elemento aponta pro segundo e assim vai... é isso ?

Unknown disse...

O link da apostila da UFMG está quebrado.
Fiz uma busca no google e encontrei o seguinte link: http://www2.dcc.ufmg.br/disciplinas/pc/source/introducao_c_renatocm_deeufmg.pdf
É essa apostila??

Muito Obrigado!!!!!

Unknown disse...

#André de Souza Embora o que eu irei falar não deve ser mais útil para você, talvez seja útil para outra pessoa.
Se você tem tem um vetor de inteiro de 10 elementos, se cada elemento ocupa 4 bytes na memoria, e o endereço do primeiro elemento for 100, então todos os elementos estarão nestas posições de memoria (100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140). Isto porque, os elementos de um vetor ficam em sequencia na memoria, logo basta passar o endereço do primeiro elemento, e poderá acessar todos os outros.
Quando você acessar por exemplo o terceiro elemento deste vetor ( vetor[2] ),
O que o compilador vai fazer é o seguinte: 100 + (2 * 4). Onde 100 seria o endereço do primeiro elemento, o 2 é o elemento a ser acessado, e o 4 a quantidade de bytes que cada elemento do vetor ocupa na memoria.