问如果用日子来计算已经过去了多少天
比如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;
}