用c语言中的数组编程,当填写年月日时,输出是这年的第几天.

比如:输入2月3号 输出34 (是这年的第34天)
请编一下程

方法一:

#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
int day,month,year,sum,leap;
do{
printf("\nplease input year month day\n");
printf("\n请输入年 月 日\n");
scanf("%d %d %d",&year,&month,&day);
if((month==1&&day<=31&&day>=1)||
((year%4==0&&year%100!=0||year%400==0)&&(month==2&&day<=29&&day>=1))||
(!(year%4==0&&year%100!=0||year%400==0)&&(month==2&&day<=28&&day>=1))||
(month==3&&day<=31&&day>=1)||(month==4&&day<=30&&day>=1)||
(month==5&&day<=31&&day>=1)||(month==6&&day<=30&&day>=1)||
(month==7&&day<=31&&day>=1)||(month==8&&day<=31&&day>=1)||
(month==9&&day<=30&&day>=1)||(month==10&&day<=31&&day>=1)||
(month==11&&day<=30&&day>=1)||(month==12&&day<=31&&day>=1))
{ 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) //如果是闰年且月份大于2,总天数应该加一天
sum++;
//clrscr(); //清屏
system("cls"); //清屏
printf("%d-%d-%dis the year\'s first %d days.\n\n",year,month,day,sum);
printf("%d-%d-%d是这年的第%d天.\n\n",year,month,day,sum);
}
else printf("\tData errors!!!\n\n");
}while(1);
}

方法二:

#include<stdio.h>
#include <stdlib.h>
struct
{
int year;
int month;
int day;
}date;
void main()
{int i,days;
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
do{
printf("Input year,month,day:\n");
scanf("%d %d %d",&date.year,&date.month,&date.day);
system("cls"); //清屏
days=0;
if((date.month==1&&date.day<=31&&date.day>=1)||
((date.year%4==0&&date.year%100!=0||date.year%400==0)&&(date.month==2&&date.day<=29&&date.day>=1))||
(!(date.year%4==0&&date.year%100!=0||date.year%400==0)&&(date.month==2&&date.day<=28&&date.day>=1))||
(date.month==3&&date.day<=31&&date.day>=1)||(date.month==4&&date.day<=30&&date.day>=1)||
(date.month==5&&date.day<=31&&date.day>=1)||(date.month==6&&date.day<=30&&date.day>=1)||
(date.month==7&&date.day<=31&&date.day>=1)||(date.month==8&&date.day<=31&&date.day>=1)||
(date.month==9&&date.day<=30&&date.day>=1)||(date.month==10&&date.day<=31&&date.day>=1)||
(date.month==11&&date.day<=30&&date.day>=1)||(date.month==12&&date.day<=31&&date.day>=1))
{
for(i=1;i<date.month;i++)
days+=day_tab[i];
days+=date.day;
if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)
days++;
printf("\n\n");
printf("\t%d/%d is the %dth day in %d.\n",date.month,date.day,days,date.year);
}
else printf("\tData errors!!!\n\n");
}while(1);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-30
#include <stdio.h>

void main()
{
int days[13]={0,31,28,31,30,31,30,
31,31,30,31,30,31};
unsigned int yue,ri,nian,total_day=0;
char junk;

printf("请输入一个日期,格式为月/日/年,如9/25/2001。\n");
scanf("%d%c%d%c%d",&yue,&junk,&ri,&junk,&nian);

if(nian%400==0||(nian%100!=0&&nian%4==0)) //考虑闰年
days[2]+=1;

if((yue<1 ||yue>12)||(ri<1 ||ri>days[yue-1]))
printf("这个日期不存在。\n");
else
{
for(int i=1;i<yue;i++)
total_day+=days[i];
total_day+=ri;
printf("这是那一年中的第%d天。\n",total_day);
}
}
第2个回答  2008-10-29
首先判断是否是闰年,将每月的日期数存入数组,然后就简单了……
第3个回答  2008-10-29
#include<stdio.h>

int main()
{
int a[13];
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
a[2]=29;
else
a[2]=28;
a[1]=a[3]=a[5]=a[7]=a[8]=a[10]=a[12]=31;
a[4]=a[6]=a[9]=a[11]=30;
int sum=0;
for(int i=1; i<month; i++)
sum=a[i]+sum;
int totalday;
totalday=sum+day;
printf("%d",totalday);
}本回答被网友采纳
第4个回答  2008-10-29
年/月/日/ - 年/1/1
相似回答