Programa em C que diz quantos dias o mês possui

Programa em C que recebe o mês e informa quantos dias ele possui.Vamos criar agora um programa que pede o mês ao usuário, e retorna quantos dias esse mês possui.
Vamos resolver usando apenas SWITCH e cases acumulados.

Exercício:
Crie um programa em C que receba um inteiro, de 1 até 12, representando os meses do ano e retorne o número de dias do mês.

Use switch e não use break. 
Use acúmulo de case e suponha que fevereiro tenha sempre 28 dias.


Como obter certificação de programação em C

Como programar: aplicativo que diz quantos dias um mês possui em C

Inicialmente, a variável 'dias' é declarada como tendo 31 dias.

Caso seja o mês 4, 6, 9 ou 11, é subtraído 1 da variável 'dias'  e o programa informa que esses meses possuem 30 dias.

Caso seja o mês 2, é subtraído 2  de 'dias', ficando 28 dias para o mês de fevereiro.

Caso não seja nenhum desses meses, não cai no switch, então continua com 31 dias (que são os meses 1, 3, 5, 7, 8, 10 e 12).

Assim, nosso código C fica:

#include <stdio.h>

int main()
{
        int mes,
            dias=31;

        printf("Digite o mes [1-12]: ");
        scanf("%d", &mes);

        if(mes>12 || mes<1)
            printf("Mes invalido");
        else
            switch( mes )
                {
                    // fevereiro: subtraímos 2 dias aqui e 1 dia no próximo case
                    case 2:
                        dias -=2;

                    //meses que possuem 30 dias: só subtraímos 1 dia
                    case 4: case 6: case 9: case 11:
                        dias--;

                }

        printf("O mes %d possui %d dias", mes, dias);

}




6 comentários:

Douglas disse...

Olá!

Antes de mais nada, gostaria de parabenizar pelo excelente trabalho que estão fazendo.

Fiquei com uma dúvida, por o C não subtraiu a variável dia duas vezes?
Como o C se achou sem o break?

Agradeço desde já.

Joao Carlos Agostini disse...

Olá
Fiquei surpreso com a solução do exercício. Não ficou claro na aula que podia por uma única instrução para vários cases em cascata.
Entendi que cada case seria executado sem o break;, mas não que podia juntar todos os cases como um só!

Roberto GMJ disse...

To gostando muito do curso, Parabens e Obrigado.

Esse exercício eu o modifiquei porque achei mais interessante e fica a dica pra quem quiser tentar ao inves de somente dizer quantos dias tem o mes, mandar ele calcular qual o numero do dia durante o ano. 10/02 somaria 31 dias de janeiro + 10 de fevereiro chegando 10/02 sendo o 41º dia do ano e por ae vai.

monia tavares disse...

putz, o ultimo exercicio me surpreendeu, a lógica super limpa e simples kkkkkkkk


maravilhoso esse trabalho de c, estou reforçando bastante o que tenho visto na faculdade de computação.

Fernanda Fernandes Borges disse...

Por que a resposta do ultimo exercicio não tem default?

Estou gostando muito do curso!

Fernanda Fernandes Borges disse...

Bom dia!

Ainda estou aprendendo.

O curso de vcs é ótimo, a lógica dos exercícios resolvidos super simples.

Nesse exercício do Switch quando digito um numero de mês invalido ele aparece a mensagem " mês invalido mês 13 possui 31 dias".Fiquei com duvida no default porque nesse exercício você não colocou?

Obrigado pela atenção.

parabéns pelo curso excente!

Gostou desse tutorial de C?
Sabia que o acervo do portal C Progressivo é o mesmo, ou maior que, de um livro ou curso presencial?
E o melhor: totalmente gratuito.

Mas para nosso projeto se manter é preciso divulgação.
Para isso, basta curtir nossa página no Facebook e/ou clicar no botão +1 do Google.
Contamos e precisamos de seu apoio.