读书人

问如果用日子来计算已经过去了多少天解

发布时间: 2012-03-27 13:44:24 作者: rapoo

问如果用日子来计算已经过去了多少天
比如2007-12-19是多少天。
随便输入一个数就知道是多少天。(这一年过去多少天)
谢谢您了

[解决办法]
自己最好先手大概框架。

基本思路就是先判年份是不是年

月份天可以用表示

然后根入的判相加就OK了。
[解决办法]
int GetDataCount(char *data)
{
int dataCount = 0;
char year[10] = {0};
char month[10] = {0};
char day[10] = {0};
int i = 0;
int j = 0;
int k = 0;
int flag = 0;
int iyear = 0;
int imonth = 0;
int iday = 0;
int c = 1;

while(*data)
{
if(*data != '- ')
{
if(flag == 0)
year[i++] = *data;

if(flag == 1)

month[j++] = *data;
if(flag == 2)

day[k++] = *data;
}
else
{
flag++;
}
data++;
}


iyear = atoi(year);
imonth = atoi(month);
iday = atoi(day);


for(c = 1; c <= imonth; c++)
{
if(c == 1)
dataCount = 31;

if(c == 2)
{
if((iyear%4 == 0) && (iyear%100 != 0))
dataCount += 29;
else
dataCount += 28;
}

if((c > 2) && (c <= 7))
{
if(c%2 == 1)
dataCount += 31;
else
dataCount += 30;
}

if((c > = 8) && (c <=12))
{
if(c%2 == 1)
dataCount += 30;
else
dataCount += 31;
}
}

dataCount += iday;

return dataCount;

}



int main()
{
char *data = "2008-12-18 ";
int dataCount = GetDataCount(data);
printf( "%d\n ", dataCount);

}
[解决办法]
参考一下,比较容易理解的

#include <stdio.h>

int main(void)
{
int year, month, day;
int sum;
int loop_year[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};/* 闰年的12个月 */
int com_year[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};/* 非闰年的12个月 */

sum = 0;

printf ( "\n请输入年月日 格式如:1997-7-1\n-> ");/* 一定要按格式输入 */
scanf ( "%d-%d-%d ", &year, &month, &day);

if (year%4 == 0 && year%100 != 0 || year%400 == 0)/* 当前年是闰年 */
{
printf ( "\n%d 年是闰年\n ", year);
if (month == 1)/* 当前月是1月 */
{
sum += day;
}

else/* 当前月是除1月外的其他月 */
{
for (int i = 0; i < month-1; i++)
{
sum += loop_year[i];
}

sum += day;
}

}

else/* 当前年非闰年 */
{
printf ( "\n%d 不是闰年\n ", year);
if (month == 1)/* 当前月为1月 */
{
sum += day;
}

else/* 当前月是除1月外的其他月 */
{
for (int i = 0; i < month-1; i++)
{
sum += com_year[i];
}
sum += day;
}
}

printf ( "\n%d 年已经过了 %d 天\n ", year, sum);
return 0;
}

读书人网 >C语言

热点推荐