Soluções das questões sobre o laço FOR em C


Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!

No artigo passado de nossa apostila online C Progressivo, propomos uma série de questões (que já haviam sido propostas no artigo sobre o laço WHILE) para serem resolvidas usando o laço FOR.

O raciocínio e lógica para resolverem essas questões usando o laço FOR é exatamente o mesmo desenvolvido para resolver usando o laço WHILE.

Portanto, apresentaremos somente o código.
Se quiser ver a solução comentada, veja o tutorial sobre a solução das questões envolvendo o laço WHILE.

Apostila C Progressivo - Exercícios resolvidos sobre o laço FOR

0. Programa em C dos patinhos da Xuxa
Código C:
#include <stdio.h>

int main()
{
        int duck,
            count;

        printf("Quantos patinhos a mamae Pata tem? ");
        scanf("%d", &duck);

        for(count=duck ; count!=1; count--)
        {
            printf("%d patinhos foram passear\n", count);
            printf("Além das montanhas\n");
            printf("Para brincar\n");
            printf("A mamãe gritou: Quá, quá, quá, quá\n");
            printf("Mas só %d patinhos voltaram de lá.\n\n", count-1);
        }

        printf("1 patinho foi passear\n");
        printf("Além das montanhas\n");
        printf("Para brincar\n");
        printf("A mamãe gritou: Quá, quá, quá, quá\n");
        printf("Mas nenhum patinho voltou de lá.\n\n");

        printf("A mamãe patinha foi procurar\n");
        printf("Além das montanhas\n");
        printf("Na beira do mar\n");
        printf("A mamãe gritou: Quá, quá, quá, quá\n");
        printf("E os %d patinhos voltaram de lá.\n", duck);
}

1. Programa em C que mostra os números ímpares
Código C:
#include <stdio.h>

int main()
{
        int count;

        for(count=1 ; count<= 100 ; count++)
        {
            if(count%2 == 1)
                printf("%d ",count);

            count++;
        }
}

2. Programa em C que mostra os números pares

3. Escreva um aplicativo em C que recebe inteiro e mostra os números pares e ímpares (separados, em duas colunas), de 1 até esse inteiro.
Código C:
#include <stdio.h>

int main()
{
        int num,
            count;

        printf("Digite um numero: ");
        scanf("%d", &num);

        printf("IMPARES \tPARES\n");

        for(count=1 ; count<=num ; count++)
        {
            if(count%2 == 1)
                printf("    %d \t",count);
            else
                printf("    \t %d\n", count);
        }
}

4. Escreva um programa que pergunte ao usuário quantos alunos tem na sala dele.
Em seguida, através de um laço while, pede ao usuário para que entre com as notas de todos os alunos da sala, um por vez.
Por fim, o programa deve mostrar a média, aritmética, da turma.
Código C:
#include <stdio.h>

int main()
{
        int total,
            count;
        float nota,
              soma=0.0;

        printf("Numero de alunos na sala: ");
        scanf("%d",&total);

        for(count=1, soma ; count<=total ; count++)
        {
            printf("Nota do aluno %d: ",count);
            scanf("%f",&nota);

            soma = soma + nota;
        }

        printf("Media da turma: %.2f", soma/total);
}





5. Achar o maior, menor, média e organizar números ou seqüências são os algoritmos mais importantes e estudados em Computação. Em C não poderia ser diferente.
Em nosso curso, obviamente, também não será diferente.

Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final
mostre qual destes números é o maior.
Código C:
#include <stdio.h>

int main()
{
        int maior,
            num,
            count;

        for(count=1, maior=0; count<=10 ; count++)
        {
            printf("Digite o numero %d: ", count);
            scanf("%d", &num);

            if( num > maior)
                maior=num;
        }

        printf("Maior: %d", maior);
}

6. Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final mostre os dois maiores números digitados pelo usuário.
Código C:
#include <stdio.h>

int main()
{
        int maior,
            segundo_maior,
            num,
            count;
  
 printf("Digite o numero 1: ");
        scanf("%d", &maior);
        
        printf("Digite o numero 2: ");
        scanf("%d", &segundo_maior);
        
 if(maior < segundo_maior)
 {
     count = maior;
     maior = segundo_maior;
     segundo_maior = count;
 }
  
        for(count=3; count<=10 ; count++)
        {
            printf("Digite o numero %d: ", count);
            scanf("%d", &num);

            if(num > maior)
            {
                segundo_maior = maior;
                maior = num;
            }
            else
  if(num > segundo_maior)
   segundo_maior = num;
        }

        printf("Maior: %d\n", maior);
        printf("Segundo maior: %d\n", segundo_maior);
}


7. Escreva um programa que lê o tamanho do lado de um quadrado e imprime um quadrado daquele tamanho com asteriscos. Seu programa deve funcionar para quadrados com lados de todos os tamanhos entre 1 e 20.

Por exemplo, para lado igual a 5:
*****
*****
*****
*****
*****
Código C:
#include <stdio.h>

int main()
{
        int lado,
            count;

        printf("Lado do quadrado: ");
        scanf("%d", &lado);

        for(count=1 ; count<=lado*lado ; count++)
        {
            if(count % lado == 0)
                printf("*\n");
            else
                printf("*");
        }


}

8. Escreva um programa que lê o tamanho do lado de um quadrado e imprime um quadrado daquele tamanho com asteriscos e espaços em branco. Seu programa deve funcionar para quadrados com lados de todos os tamanhos entre 1 e 20.
Para lado igual a 5:
*****
*    *
*    *
*    *
*****
Código C:
#include <stdio.h>

int main()
{
        int lado,
            count;

        printf("Lado do quadrado: ");
        scanf("%d", &lado);

        //Imprimindo a primeira linha
        for(count=1 ; count<=lado; count++)
            printf("*");

        printf("\n");

        for(count=1 ; count<=lado*(lado-2) ; count++)
        {
            if( (count%lado == 1))
                printf("*");
            else
                if( (count%lado == 0))
                    printf("*\n");
                else
                    printf(" ");
        }

        //Imprimindo a primeira linha
        for(count=1 ; count<=lado; count++)
            printf("*");

        printf("\n");


}

9. Escreva um programa que pergunta um número ao usuário, e mostra sua tabuada completa (de 1 até 10).
Código C:
#include <stdio.h>

int main()
{
        int num,
            count;

        printf("Digite um numero: ");
        scanf("%d", &num);

        for(count=1 ; count<=10 ; count++)
            printf("%d * %d = %d\n", num, count, num*count);
}

10. Se você lembrar bem, quando estudamos as variáveis do tipo caractere, char, dissemos que, na verdade, ela eram representadas por inteiros de 0 até 255.
Mostre a tabela completa do código ASCII.
Código C:
#include <stdio.h>

int main()
{
        int count;

        for(count=0 ; count<=255 ; count++)
            printf("%d = %c\n", count, count);
}

4 comentários:

  1. Aí vai a numero 6 um pouquinho diferente da solução do site ;)

    #include
    #include

    main(){

    int numero,maior_numero,quase_maior_numero,count;

    for(count = 1;count <=10;count++){
    printf("Digite um numero: ");
    scanf("%d",&numero);
    if(numero > maior_numero && maior_numero > quase_maior_numero){
    quase_maior_numero = maior_numero;
    }
    if(numero >maior_numero){
    maior_numero = numero;
    }
    if(maior_numero >numero && numero > quase_maior_numero){
    quase_maior_numero = numero;
    }
    }

    printf("O maior numero e: %d.\n",maior_numero);

    printf("O segundo maior numero e: %d.",quase_maior_numero);

    return 0;

    }

    ResponderExcluir
  2. Olá professor, por gentileza me ajuda nessa questao 5;
    Meu código não funciona quando faço na função for:
    for (x = 0; x == 10; x++) <- resulta em zero;
    mas
    for (x = 0; x >= 10; x++)
    funciona;

    Ai que está, creio que o operador == tb é relacional ?!

    ResponderExcluir
  3. Olá professor, eu fiz o código da questão 4 igual à resolução q o senhor (a) disponibilizou, mas o Code::Blocks13.12 não executou o código. Não identificou erro algum, mas apresentou a afirmação: "Execution of 'mingw32-g++.exe -o "C:\Users\Public\Documents\impares e pares corrigido.exe" "C:\Users\Public\Documents\impares e pares corrigido.o"' in 'C:\Users\Public\Documents' failed."

    Não é a primeira vez que ele "falhou". Eu não consigo entender por que.

    ResponderExcluir
  4. Professor, parabéns pelas aulas acredito são as melhores que encontrei até o momento. Quanto a questão ZERO DOS PATINHOS DA XUXA é necessário fazer uma pequena alteração pois quando sobram apenas dois patinhos aparece a seguinte mensagem printada: "DOIS PATINHOS FORAM PASSEAR ALÉM DA MONTANHA PARA BRINCAR A MAMÃE CHAMOU QUÁ, QUÁ, QUÁ QUÁ, MAS SÓ 1 patinhos voltaram DE LÁ.

    Perceba que há erro de concordância então eu dei uma ajeitadinha e ficou assim:

    #include
    #include
    #include
    #include
    #include

    int main(void)
    {
    setlocale (LC_ALL, "portuguese");
    system ("color 3E");

    int duck,
    count;

    printf("Quantos patinhos a mamae Pata tem? ");
    scanf("%d", &duck);

    for(count=duck ; count!=2; count--)
    {
    printf("%d patinhos foram passear\n", count);
    printf("Além das montanhas\n");
    printf("Para brincar\n");
    printf("A mamãe gritou: Quá, quá, quá, quá\n");
    printf("Mas só %d patinhos voltaram de lá.\n\n", count-1);
    }
    printf("2 patinhos foram passear\n");
    printf("Além das montanhas\n");
    printf("Para brincar\n");
    printf("A mamãe gritou: quá, quá, quá, quá\n");
    printf("Mas só 1 patinho voltou de lá.\n\n");

    printf("1 patinho foi passear\n");
    printf("Além das montanhas\n");
    printf("Para brincar\n");
    printf("A mamãe gritou: Quá, quá, quá, quá\n");
    printf("Mas nenhum patinho voltou de lá.\n\n");

    printf("A mamãe patinha foi procurar\n");
    printf("Além das montanhas\n");
    printf("Na beira do mar\n");
    printf("A mamãe gritou: Quá, quá, quá, quá\n");
    printf("E os %d patinhos voltaram de lá.\n", duck);
    }

    Sua iniciativa é lovável e merece ser recompensado. Obrigado por tudo...

    ResponderExcluir

É quase impossível criar centenas de páginas voltadas para programação C e não cometer algum erro.

- Se notar algum conceito, letra ou trecho de código errado, deixe sua correção

- Se perceber uma maneira melhor ou mais eficiente de fazer algo, deixe sua ideia

- Se algo não ficar claro ou for confuso, nos avise

Aos poucos vamos aumentando e melhorando a qualidade de nosso material, e para isso contamos com sua ajuda.