给个 简单的思路

lijianbin9 2008-10-03 12:47:00
要求 算总天数,在2008.1.1-2008.9.30之间中 输入任意日期,得出1.1号到那一天的 天数,,谢谢,,,
...全文
195 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaajj 2008-10-05
  • 打赏
  • 举报
回复
lixiao0808120691 2008-10-05
  • 打赏
  • 举报
回复
UP
xuxian02092213 2008-10-05
  • 打赏
  • 举报
回复
各位也忒猛了,各式各样的代码都贴出来了,真是不简单哦。。。。

这小LZ可有的看了。 参照time()还是很好做的,time()算的时间是从1970年1月1号开始算起的,讲两个时间一见就是中间

时间了,O(∩_∩)O~ 有所获,就必须有所悟啊。。。。
zhuwanglove 2008-10-05
  • 打赏
  • 举报
回复
国庆回来,第一次回贴。
wb186 2008-10-05
  • 打赏
  • 举报
回复
学习了
budweiser 2008-10-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chlaws 的回复:]
C/C++ code#include<stdio.h>#include<string.h>#include<conio.h>structmonths{charname[10];/*月份名*/charabbrev[4];/*月份缩写*/intdays;/*月份天数*/charmonumb[3];/*月份号*/}mon[12]={{"January","Jan",31,"1"},{"February","Feb",28,"2"},{"March","Mar",31,"3"},
{"April","Apr",30,"4"},{"May","may",31,"5"},{"June","Jun",30,"6"},
{"July","Jul",31,"7"},{"August","Aug",31,"8"},{"September","Sep",30,"9"},
{"Oc…
[/Quote]
这肯定不行嘛,平年闰年都没有考虑
可以用<time.h>
htqx 2008-10-04
  • 打赏
  • 举报
回复

算好了查表
lijianbin9 2008-10-04
  • 打赏
  • 举报
回复
不用time。h能有吗,,
现在还没有学到那里,,享用switch case做
guizi110 2008-10-04
  • 打赏
  • 举报
回复
针对2008.1.1--2008.9.30之间的天数计算:

#include <iostream.h> 

int main()
{
int month,day;
int allday = 0;
int daymax;

cout << "请输入月份:" << endl;
cin >> month;

while (1)
{
if (month>9 || month<1)
{
cout << "输入月份不对,请重新输入:" << endl;
cin >> month;
}
else
break;
}

switch(month)
{
case 1:
daymax = 31;
break;
case 2:
daymax = 29;
allday = 31;
break;
case 3:
daymax = 31;
allday = 60;
break;
case 4:
daymax = 30;
allday = 91;
break;
case 5:
daymax = 31;
allday = 121;
break;
case 6:
daymax = 30;
allday = 152;
break;
case 7:
daymax = 31;
allday = 182;
break;
case 8:
daymax = 31;
allday = 213;
break;
default:
daymax = 30;
allday = 244;
}
cout << "请输入日期:" << endl;
cin >> day;

while (1)
{
if (day>daymax || day<1)
{
cout << "输入日期不对,请重新输入:" << endl;
cin >> day;
}
else
break;
}
allday += day-1; //注意此处应该减 1

cout << "总天数为:" << allday;
}
aozhi 2008-10-03
  • 打赏
  • 举报
回复
参看time.h
Walker-cheng 2008-10-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aozhi 的回复:]
参看time.h
[/Quote]
up
lijianbin9 2008-10-03
  • 打赏
  • 举报
回复
不错,,考虑个合适的方案,,谢谢
楼上的 辛苦了
study_live 2008-10-03
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
#include <time.h>

using namespace std;

int main(int argc, char* argv[])
{
int yy, mm, dd;
cout<<"请输入年份:";
cin>>yy;
cout<<"请输入月份:";
cin>>mm;
cout<<"请输入日期:";
cin>>dd;

yy-=1900;
mm--;

tm t1 = { 0, 0, 0, 1, 0, 108};
tm t2 ;
t2.tm_year = yy;
t2.tm_mon= mm;
t2.tm_mday = dd;
t2.tm_hour = 0;
t2.tm_min = 0;
t2.tm_sec = 0;

std::cout << ((mktime(&t2) - mktime(&t1))/(24*60*60))+1 << std::endl;

return 0;
}
mabo321 2008-10-03
  • 打赏
  • 举报
回复
求 某年某月 天数的 函数。。。


int YearMon(int year,int mon)
{
int mday=0;
switch(mon)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
mday=31;
break;
case 2:
if(year%4 ==0 && year%100 != 0 || year%400==0)
{
mday=29;
}
else
{
mday=28;
}
break;
case 4: case 6: case 9: case 11:
mday=30;
break;
}
return mday;
}

jia_xiaoxin 2008-10-03
  • 打赏
  • 举报
回复
如果选择的是8.8那么将1-8月的每月的天数相加然后再加上8,就得出了总天数

int main()
{
MonthDay[] = {31,29,31,30,31,30,31,31,30,31,30,31};
int month,day;
cout << "请输入月份:" << endl;
cin >> month;
cout << "请输入日期:" << endl;
cin >> day;

int allday = 0;
for(int i = 0; i < month - 1; i++)
{
allday += MonthDay[i];
}
allday += day;

cout << "总天数为:" << allday;
}
chlaws 2008-10-03
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<string.h>
#include<conio.h>
struct months{
char name[10]; /*月份名 */
char abbrev[4]; /*月份缩写 */
int days; /*月份天数*/
char monumb[3]; /*月份号*/
}mon[12]={{"January","Jan",31,"1"},{"February","Feb",28 ,"2"},{"March","Mar",31,"3"},
{"April", "Apr", 30, "4"},{"May", "may", 31, "5"},{"June", "Jun", 30, "6"},
{"July","Jul",31,"7"},{"August", "Aug", 31, "8"},{"September", "Sep", 30, "9"},
{"October", "Oct", 31, "10"},{"November","Nov", 30 ,"11"},{"December","Dec",31,"12"}};
int func(int day,char m[],int year)
{
int s=0,i,j,n;
if( ((year%4 == 0) && (year%100 != 0)) || (year%400 == 0) )
{
mon[1].days=29;
}
for(i=0; i<12; i++)
{
if(strcmpi(mon[i].name,m)==0 ||
strcmpi(mon[i].abbrev,m)==0 ||
strcmpi(mon[i].monumb,m)==0)
{
n=i;
//printf("i=%d\n",i);
break;
}
}
for(j=0; j<n; j++)
{
s+=mon[j].days;
}
s+=day;
return s;
}
void main()
{
int sum,day,year;
char m[20];
printf("用户键入日号:\n");
scanf("%d",&day);
printf("用户键入月:月份可以是月份号、月份名或月份缩写:\n");
scanf("%s",m);
printf("用户键入年:\n");
scanf("%d",&year);
sum=func(day,m,year);
printf("当前输入的日号是%d年的第%d天",year,sum);
getch();
}

/*
result:
用户键入日号:
3
用户键入月:月份可以是月份号、月份名或月份缩写:
10
用户键入年:
2008
当前输入的日号是2008年的第277天
*/

Haimiao 2008-10-03
  • 打赏
  • 举报
回复
很多库里面提供了这些解法。
比如MFC,和BOOST里面的datetime。
你可以参考一下MSDN或者相关文档,再读一下源码。
kkndciapp 2008-10-03
  • 打赏
  • 举报
回复
分区段月里的天数相加
oLINo 2008-10-03
  • 打赏
  • 举报
回复
你就算这段时间的,那简单啊,每个月的天数放到数组里,给出一个日期,得到哪月,和这个月的天数,
到数组里计算出这个月之前的天数之和,加起来就OK了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧