永发信息网

C语言编程:输入某年某月某日,判断这一天是一年的第几天

答案:5  悬赏:0  手机版
解决时间 2021-11-22 22:06
  • 提问者网友:泪痣哥哥
  • 2021-11-22 09:11
C语言编程:输入某年某月某日,判断这一天是一年的第几天
最佳答案
  • 五星知识达人网友:轮獄道
  • 2021-11-22 09:50
#include

//返回指定年月日是对应年度的第几天
int getDays(int month,int day);
int isRunnian(int year);

int main(int argc,char* argv[])
{
int year=0;
int month=0;
int day=0;

printf("请输入年月日格式示例20140101\n");
scanf("%4d%2d%2d",&year,&month,&day);

//简化后的条件,是闰年且月份大于二,则返回天数加一,否则直接返回函数值
int days = getDays(month,day);
if (days==0){
printf("您输入的日期格式无效。\n");
return 0;
}
if (isRunnian(year) && month >2){
printf("输入日期是对应年份的第%d天",days+1);
}else{
printf("输入日期是对应年份的第%d天",days);
}
return 0;
}

//循环实现
int getDays(int month,int day){
int NUMBER[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int result=day;
if (month >12){ //避免出现数组越界情况
return 0;
}
for (int i=0;i< month-1;i++){//数组下标是从零开始
result+= NUMBER[i];
}
return result;
}

int isRunnian(int year){
//闰年的条件
//一:年度是400的整数倍,则是闰年
//二:年度能被4整除且不能被100整除
return year%4 ==0 && year%100 !=0 || year%400 ==0;
}
全部回答
  • 1楼网友:酒者煙囻
  • 2021-11-22 12:01
#include
int main()
{
 int find(int x, int y, int z);
 int year, month, date, day;
 printf(" Please input the date(such as 20180324): ");
 scanf("%4d%2d%2d", &year, &month, &date);
 day = find(year, month, date);
 printf(" The date is the %dth days. ", day);
}
int find(int x, int y, int z)
{
 int i, t, s, days = 0;
 if (x % 4 == 0 && x % 100 != 0 || x % 400 == 0)//判断是否闰年.
  t = 1;
 else
  t = 0;
 for (i = 1; i < y; i++)
 {
  if (i < 8) //注意1到7月与8到12月的大小月份奇偶性刚好相反.
  {
   if (i == 2)
    s = 2 - t;//如果是闰年2月份在30天的基础上减1天(s=2-1),不是就减2天(s=2-0).
   else
    s = 0;
   days = days + 30 + i % 2 - s;
  }
  else
   days = days + 30 + (i + 1) % 2;
 }
 days = days + z;
 return days;
}
  • 2楼网友:枭雄戏美人
  • 2021-11-22 11:38
#include
int main()
{
int year,month,day,sum,leap;

printf("Please input year,month,day:");

scanf("%d-%d-%d",&year,&month,&day);

if(year%400==0 && year%100==0 || year%4==0 && year%100!=0)
leap=1;
else
leap=0;
if(leap==1 || leap==0 && month==1)
sum=day;
if(leap==1 || leap==0 && month==2)
sum=31+day;
if(leap==1 && month==3)
sum=60+day;
if(leap==0 && month==3)
sum=59+day;
if(leap==1 && month==4)
sum=91+day;
if(leap==0 && month==4)
sum=90+day;
if(leap==1 && month==5)
sum=121+day;
if(leap==0 && month==5)
sum=120+day;
if(leap==1 && month==6)
sum=152+day;
if(leap==0 && month==6)
sum=151+day;
if(leap==1 && month==7)
sum=182+day;
if(leap==0 && month==7)
sum=181+day;
if(leap==1 && month==8)
sum=213+day;
if(leap==0 && month==8)
sum=212+day;
if(leap==1 && month==9)
sum=244+day;
if(leap==0 && month==9)
sum=243+day;
if(leap==1 && month==10)
sum=274+day;
if(leap==0 && month==10)
sum=273+day;
if(leap==1 && month==11)
sum=305+day;
if(leap==0 && month==11)
sum=304+day;
if(leap==1 && month==12)
sum=335+day;
if(leap==0 && month==12)
sum=334+day;
printf("This day is the %dth day.\n",sum);

return 0;
}
  • 3楼网友:往事隔山水
  • 2021-11-22 10:23
闰年先算28填,然后几月就加当月的天数呗
  • 4楼网友:野慌
  • 2021-11-22 10:00
#include "stdio.h"
#include "conio.h"
void main()
{
  int day,month,year,sum,leap;
  printf(" please input year,month,day ");
  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");break;
  }
  sum=sum+day; 
  if(year%400==0||(year%4==0&&year%100!=0)) 
    leap=1;
  else
    leap=0;
  if(leap==1&&month>2) 
    sum++;
  printf("It is the %dth day.",sum);
  getch(); 
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯