Enviar um café pro programador

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

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:

Unknown disse...

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;

}

zé ninguém disse...

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 ?!

Anônimo disse...

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.

Unknown disse...

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...