Dúvida sobre if-else em C
Fiz o seguinte código em C:
#include <stdio.h>
int main()
{
int mes;
printf("Digite o número referente ao mês: ");
scanf("%i", &mes);
if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");
return 0;
}
Neste exemplo, meu código estava apresentando 2 resultados quando eu colocava valores referentes ao meses que têm 30 dias(que estão no 1º if). Isso já não acontece com o 2º if e o else.
Gostaria de saber o porquê disso e, se possível, uma resolução para o problema. Sou iniciante e acabo quebrando cabeça com if e else.
#include <stdio.h>
int main()
{
int mes;
printf("Digite o número referente ao mês: ");
scanf("%i", &mes);
if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");
return 0;
}
Neste exemplo, meu código estava apresentando 2 resultados quando eu colocava valores referentes ao meses que têm 30 dias(que estão no 1º if). Isso já não acontece com o 2º if e o else.
Gostaria de saber o porquê disso e, se possível, uma resolução para o problema. Sou iniciante e acabo quebrando cabeça com if e else.
Matheus
Curtidas 0
Melhor post
Nathália Hirth
25/04/2022
Pessoal, acabei solucionando o problema. Basicamente, utilizei apenas 1 if e 1 else. Dentro deste else, coloquei if e else novamente. Mas, mantenho a minha dúvida, por que dessa forma funcionou e da outra não?
Ficou assim:
int main()
{
int mes;
printf("Digite o número referente ao mês: ");
scanf("%i", &mes);
if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
else{
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");}
return 0;
}
Ficou assim:
int main()
{
int mes;
printf("Digite o número referente ao mês: ");
scanf("%i", &mes);
if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
else{
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");}
return 0;
}
Olá Matheus,
Da forma anterior não funcionava pois o primeiro if não tinha um else e aí ele tratava como duas instruções separadas. Agora quando o if tem um else ele trata como uma mesma instrução.
Por exemplo, vc poderia ter usado tambem o else if direto ali no segundo if que daria certo.
GOSTEI 1
Mais Respostas
Matheus
23/04/2022
Pessoal, acabei solucionando o problema. Basicamente, utilizei apenas 1 if e 1 else. Dentro deste else, coloquei if e else novamente. Mas, mantenho a minha dúvida, por que dessa forma funcionou e da outra não?
Ficou assim:
int main()
{
int mes;
printf("Digite o número referente ao mês: ");
scanf("%i", &mes);
if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
else{
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");}
return 0;
}
Ficou assim:
int main()
{
int mes;
printf("Digite o número referente ao mês: ");
scanf("%i", &mes);
if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
else{
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");}
return 0;
}
GOSTEI 0
Matheus
23/04/2022
Compreendi, obrigado. Só não entendo uma coisa, mesmo como instruções diferentes, eles não deveriam imprimir apenas em caso de uma verificação correta?
GOSTEI 0