C语言 从键盘输入年号和月号,计算这一年的这一月共有几天。

如题所述

事实上,除了闰年的2月外,其它各个月的天数都是固定的。

所以,除了对2月特殊判断一下是否为闰年外,其它均可直接输出。

方便起见,将每月天数存在数组中,以减少代码量,并提高效率。

#include <stdio.h>
int main()
{
    int m,y;
    int days[12] = {31, 28, 31,30,31,30,31,31,30,31,30,31};
    scanf("%d%d",&y,&m);
    if(m == 2)
    {
        if(y%400==0 || (y%4==0 && y%100!=0))//闰年。
            printf("29\n");
        else printf("28\n");
    }
    else 
        printf("%d\n", days[m-1]);
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-11-17
#include"stdio.h"
void main()
{
int b,s=0,a;
scanf("%d,%d",&a,&b);
switch(b)
{
case 1:s=31;break;
case 2:s=28;break;
case 3:s=31;break;
case 4:s=30;break;
case 5:s=31;break;
case 6:s=30;break;
case 7:s=31;break;
case 8:s=21;break;
case 9:s=30;break;
case 10:s=31;break;
case 11:s=30;break;
case 12:s=31;break;
}
if(a%4==0&&a%100!=0||a%400==0)
s=29;
else
s=28;
printf("这个月有%d天",s);/*如果是的是TC 不可以用中文*/
}本回答被提问者采纳
第2个回答  2006-11-17
用数组按顺序记录每个月的的天数,
char month[13]={0,31,28,31,……};
int y,m;
scanf("%d",&y);
scanf("%d",&m);
if(( y%4==0 && y%100!=0) || y%400==0) && m==2)
printf("%d",month[m]+1);
else printf("%d",month[m]);
相似回答