输入年月日,打印这一天是这一年的第几天

到百度贴吧首页
新闻   网页   贴吧   知道   MP3   图片   视频   百科
    吧内搜索 | 帮助

输入年月日,打印这一天是这一年的第几天

218.58.71.*

1楼


61.131.58.*

2楼

主要也就是判断一下闰年和非闰年的二月~~~

3楼

对,运年特点:
year%4==0&&year%100!=0 || year%100==0&&year%400==0

4楼

#include<stdio.h>
int calculate(int reg,int month,int day);

void main(){
int year;
int month;
int day;
int reg;

printf("input year: ");
scanf("%d",&year);
if(year<0) year=-year;
if(year%4==0&&year%100!=0) reg=0;
else if(year%100==0&&year%400!=0) reg=0;
else reg=1;


month: printf("input month: ");
scanf("%d",&month);
if(month<=0||month>12) {
printf("error input!\n");
goto month;
}


day:
printf("input day: ");
scanf("%d",&day);
if(calculate(reg,month,day)==0) goto day;
else printf("%d\n",calculate(reg,month,day));
}

int calculate(int reg,int month,int day){
int value=0;
int data1[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int data2[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int *a;
if(reg==0) a=data1;
else a=data2;
if(a[month-1]<day||day<=0) return 0;
else {
for(int i=1;i<month;i++) value=value+a[i-1];
value=value+day;
return value;
}
}

222.45.129.*

5楼

~~厉害 感谢~~

7楼

#define Y (!(y%4)&&y%100||!(y%400))
main()
{ int y,m,d,temp;
 scanf("%d%d%d",&y,&m,&temp);
 for(d=temp,m--;m>=1;m--)
 { if(m==2)
 if(Y) d+=29;
 else d+=28;
 else if(m==4||m==6||m==9||m==11)
 d+=30;
 else
 d+=31;
 }
 printf("\t%d\n",d);
 getch();
}

8楼

6楼是输入天数求日期,楼上是输入日期求天数!!
218.24.137.*

9楼

可以看看浩强编的c语言上机指导
219.159.159.*

10楼

#include "stdio.h" 

void main() 



 int day,month,year,a,b; 
 printf("请您输入要查询的年/月/日\n\n(例:2006/10/29):"); 
 scanf("%d/%d/%d",&year,&month,&day); 
 if ((month<=12 && month>0) && (day<=31 && day>0)) 
 {     
 switch(month) /*先计算某月以前月份的总天数*/ 
 { 
 case 1: a=0; 
 break; 
 case 2: a=31; 
 break; 
 case 3: a=59; 
 break; 
 case 4: a=90; 
 break; 
 case 5: a=120; 
 break; 
 case 6: a=151; 
 break; 
 case 7: a=181; 
 break; 
 case 8: a=212; 
 break; 
 case 9: a=243; 
 break; 
 case 10:a=273; 
 break; 
 case 11:a=304; 
 break; 
 case 12:a=334; 
 break; 
 } 
 if ((year%400==0 || (year%4==0 && year%100!=0)) && month>2) 
 a=a+day+1; 
 else 
 
 a=a+day; 
 printf("\n您输入的是这年的第%d天\n",a); 
 }   
 else 
 printf("\n不会吧!这都想得出来?!\n"); 


程序都有BUG的

11楼

二楼的对 其他的乱
222.85.98.*

12楼

十楼的答案是最正确的 ,
不信你们试试!

220.248.29.*

13楼

Java解法(算法和10楼一样):
import java.io.*;
class YearMonthDay
{
public static void main(String[] args)
{
int year=1,month=1,day=1,sum=0;
String answer="n";
BufferedReader br=new BufferedReader (new InputStreamReader(System.in));
try
{
do
{
System.out.println("请输入年份");
year=Integer.parseInt(br.readLine());

System.out.println("请输入月份");
month=Integer.parseInt(br.readLine());

System.out.println("请输入日期");
day=Integer.parseInt(br.readLine());

if(month>=1&&month<=12)
{
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;
}

if(year%4==0&&year%100!=0||year%400==0)
{
sum=sum+day+1;
System.out.println("您输入的年月日是"+year+"年的"+sum+"天");
}
else
{
sum=sum+day;
System.out.println("您输入的年月日是"+year+"年的"+sum+"天");
}
}
else
{
System.out.println("哇靠!这你也想的出来!");
}

System.out.println("是否继续输入?(Y/N)");
answer=br.readLine();

}while(answer.equals("Y")||answer.equals("y"));

}


catch(IOException e)
{
System.out.println(e.toString());
}



}
}

14楼

我支持10楼
思路 格式都还行

202.198.191.*

15楼

10的对
222.66.134.*

16楼

已经运行过了,绝对正确,并且方法较简单
#include "stdio.h"
main()
{int y,m,d,k,n,sum,i;
 int M[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 printf("please input the date:\n");
 scanf("%4d%2d%2d",&y,&m,&d);
 if(y<1900)exit(0);
 if(y%400==0||y%4==0&&y%100!=0)M[1]=29;
 
 for(sum=0,i=0;i<m-1;i++)
 sum+=M[i];
 k=sum+d;
 printf("the YD year is:\n%4d%03d",y,k);
 
}

222.66.134.*

17楼

上面一楼的原题是要求输入的年份必须〉=1900,故有EXIT一举

18楼

楼主就不会说句“请”?
218.18.174.*

20楼

#include<stdio.h>
 struct sdata
 {
 int day;
 int month;
 int year;
 int yd;
 }date;

main()
{
int a,rut=0;
 int eve[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
 int *q = eve;


 struct sdata this_day;
 printf("Enter today's date(mm dd yyyy):\n");
 scanf("%d %d %d",&this_day.month,&this_day.day,&this_day.year);
 this_day.yd = 0;
 
 for(a=1;a<this_day.month;a++)  
this_day.yd += (*q++);

 if(((this_day.year%4==0 && this_day.year%100!=0)||this_day.year%400==0)|| this_day.month >2)
 rut=1;
 this_day.yd +=(this_day.day+rut);
 printf("the day is %d\n",this_day.yd);

}

21楼

这是潭浩强的书上的一个例题
220.178.185.*

22楼

#include <stdio.h>
main()
 {
 int year,month,day,n;
 printf("please input the date:\n"); 
 scanf("%d %d %d",&year,&month,&day);
 n=num(month,day);
 if(((year%4==0)&&(year%100!=0))||(year%400==0))
 {
 if(month>2)
 n++;
 }
 printf("第 %d 天",n);
 getch();
 }

int num(b,c)
 {
 int i,s=0;
 int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 for(i=1;i<b;i++)s=s+m[i];
 s=s+c;
 return(s);
 }

218.64.79.*

23楼

10楼的答案是正确的。因为,我的书上有这道题目。
61.130.92.*

24楼

10楼错的!!!
125.220.28.*

25楼

那个更简洁快速?

26楼

我个人觉得10楼的方法简单而且句意分明
61.150.43.*

27楼

相当不错啊!
58.19.228.*

28楼

错的。不能运行啊。
221.213.45.*

29楼

十楼 好理解点

30楼

输入天数求日期,这样行不行?(我是菜鸟)
#include "stdio.h"
struct date{
int year;
int month;
int day;
 };
main()
{struct date dat;
 int i,m;
 int a[12]={31,59,90,120,151,181,212,243,273,304,334,365};
 printf("year:\n");
 scanf("%d",&dat.year);
 if(dat.year%4==0&&dat.year%100!=0||dat.year%100==0&&dat.year%400==0)
 for(i=1;i<12;i++)
 a[i]=a[i]+1; 
 printf("num:\n");
 scanf("%d",&m);
 for(i=0;i<12;i++)
 {if(a[i]>=m)
 {dat.month=i+1;
 dat.day=m-a[i-1];
 break;
 }
 }
 printf("%d,%d,%d",dat.year,dat.month,dat.day);
}

31楼

#include <stdio.h>
//几天前做了个月历,里面不少东西都可以翻出来用呢
int MonthDay[12]={0,31,59,90,120,151,181,212,243,273,303,334};

bool IsLeapYear(int &year)
{
if ((year%4==0)&&(year%100!=0)||(year%400==0)) return true;
return false;
}
void main()
{
int year, month, day;
printf("year,month,day:");
scanf("%d,%d,%d", &year, &month, &day);
day+=MonthDay[month-1];
if (month>2 && IsLeapYear(year)) day++; //如果是三~十二月且是闰年,天数+1
printf("%d", day);
}

32楼

d

发表回复

内 容:
用户名:
  
©2010 Baidu 贴吧协议  意见反馈