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

如题,作业

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.

温馨提示:答案为网友推荐,仅供参考
第1个回答  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;
}

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

追问

第几天输出后是负的

追答

不是吧,你怎么调用的?我更新了代码,你使用最新代码了吗?

本回答被提问者采纳
相似回答