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;
}
//返回指定年月日是对应年度的第几天
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;
}
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;
}
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();
}
#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();
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯