c语言程序,输入年月日,判断这一天是这一年的第几天,同时判断这一天是星期几。(用switch语句)

如题,作业... 如题,作业 展开
 我来答
匿名用户
2019-03-21
展开全部
cat ex1.c
/*
   程序分析:以3月5日为例,应该先把前两个月的加起来,
   然后再加上5天即本年的第几天,特殊情况,闰年且输入
   月份大于3时需考虑多加一天。
*/
#include<stdio.h>

int main(){
        int day, month, year, sum, leap;
        printf("\nplease input year,month,day\n");
        scanf("%d%d%d",&year,&month,&day);
        switch(month){   //先计算某月以前月份的总天数
                case 1:sum = 0;break;
                case 2:sum = 31;break;
                case 3:sum = 59;break;
                case 4:sum = 90;break;
                case 5:sum = 120;break;
                case 6:sum = 151;break;
                case 7:sum = 181;break;
                case 8:sum = 212;break;
                case 9:sum = 243;break;
                case 10:sum = 273;break;
                case 11:sum = 304;break;
                case 12:sum = 334;break;
                default:printf("data error!\n");break;
        }
        sum = sum + day;    //再加上某天的天数
        if(year%400==0||(year%4==0&&year%100!=0)){  //判断是不是闰年
                leap = 1;
        }else{
                leap = 0;
        }
        if(leap == 1&&month > 2){  //如果是闰年且月份大于2,总数加1天
                sum++;
        }
        printf("It is the %dth day.\n",sum);
}
./ex

please input year,month,day
2019 3 21
It is the 80th day.
匿名用户
2019-03-21
展开全部

#include <stdio.h>
void main()
{
int year, month, day, i =0, n = 0, week = 0;
int month_day[12] = {31, 28, 31, 30,31,30,31,31,30,31,30,31};
scanf("%d%d%d", &year, &month, &day);
if ((year%100 && year % 4 == 0) || (year%100 == 0 && (year % 400 == 0))){
month_day[1] = 29;
}
for (i=0; i < month -1; i++){
n += month_day[i];
}
n += day;
printf("day is %d\n", n);
week = (day + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400) % 7 + 1;
switch(week){
case 1:
printf("Monday\n");
break;
case 2;
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
default:
printf("Sunday\n");
break;
}
return;
}

//国外是周日是第一天。

追问
第几天输出后是负的
追答
不是吧,你怎么调用的?我更新了代码,你使用最新代码了吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式