我写的程序哪有问题?请解答一下!
当输入月份和年时 输出该月天数
int year,mouth;
printf("请在键盘上输入一个月份和一个年份");
scanf("%d%d",&mouth,&year);
if(year%4==0&&year%100!=0||year%400==0)
if(mouth==2)
printf("本月为28天");
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}
}
[解决办法]
你判断了年份是否是闰年等于没有判断了啊。那个if语句没有了用处啊!
#include"stdio.h"
void main()
{
int year,mouth;
printf("请在键盘上输入一个月份和一个年份");
scanf("%d%d",&mouth,&year);
if(year%4==0&&year%100!=0||year%400==0)
{
if(mouth==2)
printf("本月为28天");
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}
}
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}
}
这个是我稍微改了下的。我也不是很懂得啊@但是这样之后就可以了!
那个if语句后也要加上花括号的!
[解决办法]
这个你的if语句有问题;
- C/C++ code
#define TRUE 1 #define FAlSE 0int isLeap(int year){ if(year%4==0 && year%100==0 && year%400 == 0) { return TRUE; } return FALSE;}void MonthDays(int year,int month){ switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("本月31天\n"); break; case 2: if(isLeap(year)) printf("本月29天\n"); else printf("本月28天\n"); break; case 4: case 6: case 9: case 11: printf("本月30天\n"); break; }}
[解决办法]
支持lS
[解决办法]
- C/C++ code
#include<iostream>using namespace std;int main(){ int year,mouth; printf("请在键盘上输入一个月份和一个年份"); scanf("%d%d",&mouth,&year); if(year%4==0&&year%100!=0||year%400==0) { if(mouth==2) printf("本月为28天"); else switch(mouth) { case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break; case 4: case 6: case 9:case 11:printf("本月为30天\n");break; default:printf("输出错误信息\n");break; } }else { switch(mouth) { case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break; case 2:printf("本月为29天\n");break; case 4: case 6: case 9:case 11:printf("本月为30天\n");break; default:printf("输出错误信息\n");break; } } return 1;}
[解决办法]
第一个if后面少一对大括号
[解决办法]
- C/C++ code
int year,mouth;printf("请在键盘上输入一个月份和一个年份");scanf("%d%d",&mouth,&year);// if(year%4==0&&year%100!=0||year%400==0)// if(mouth==2)// printf("本月为28天");// else switch(mouth){case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;case 2:if(year%4==0&&year%100!=0||year%400==0) printf("本月为29天\n"); else printf("本月为28天"); break;case 4: case 6: case 9:case 11:printf("本月为30天\n");break;default:printf("输出错误信息\n");break;}}
[解决办法]
scanf 可以这样用吗?
[解决办法]
后面的else lz本想与第一个if对应的..但却和 第二个if 对上了.. 要记住else是和他前一个if对应的 如果楼主想和第一if对应 可用{} 把第二个if和else给括起来.
[解决办法]
你的if和else不对吧,if和else有就近原则啊,你的else跟的第二个if,建议你Debug跟着跑下就知道了,嘿嘿
[解决办法]
大家都说了,那我就不说了
[解决办法]
int year,mouth;
printf("请在键盘上输入一个月份和一个年份");
scanf("%d%d",&mouth,&year);
if(year%4==0&&year%100!=0||year%400==0)
{
if(mouth==2)
printf("本月为28天");
}
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}
}
[解决办法]