本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
网上一搜有很多,c语言教材里也几乎都援引了这个经典的闰年题目~你还是百度一下吧~
最近在研究NDK,我还是试着帮你写一个吧
最近在研究NDK,我还是试着帮你写一个吧
#include <stdio.h>
static int pow(int m, int n) // m^n
{
int result=1;
while(n--) result*=m;
return result;
}
int str2digital(const char *str)
{
int i = 0,j;
const char *ptr = str;
char temp[5];
int digt = 0;
while( *ptr != '\0') {
temp[i++] = *ptr++ - '0';
}
for (j = 0; j < i; ++j) {
digt += temp[j] *pow(10 ,i-j-1);
}
return digt;
}
int main ()
{
char t[15] = {0};
char y[5] = {0}, m[5] = {0}, d[5] = {0};
int yr,mon,dy;
int idx;
int order = 0;
int IsRunTbl[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int UnRunTbl[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
while(true){
scanf("%s",t);
for (idx = 0; idx < 4; ++idx) {
y[idx] = t[idx];
}
y[idx] = '\0';
m[0] = t[5];
m[1] = t[6];
m[2] = '\0';
d[0] = t[8];
d[1] = t[9];
d[2] = '\0';
yr = str2digital(y);
mon = str2digital(m);
dy = str2digital(d);
if ( yr%400 == 0 || ( yr%4 == 0 && yr%100 !=0 ) ) { // 如果是闰年
for ( idx = 0; idx < mon; ++idx) {
order += IsRunTbl[idx];
}
} else {
for ( idx = 0; idx < mon; ++idx) {
order += UnRunTbl[idx];
}
}
order += dy;
printf("%d\n", order);
}
return 0;
}
#include
#include
void main()
{
int daynumber(int year,int month,int day);
int date_y,date_m,date_d,day_num;
printf("please input the date(yyyy/mm/dd):\n");
scanf("%d/%d/%d",&date_y,&date_m,&date_d);
day_num=daynumber(date_y,date_m,date_d);
printf("%d/%d/%d is the %dth day of %d year.\n",date_y ,date_m ,date_d ,day_num ,date_y );
system("pause");
}
int daynumber(int year,int month,int day)
{
int i,flag=0,d_num=0;
((year%400==0)||(year%100!=0&&year%4==0))?flag=1:flag=0;
for(i=1;i<month;i++)
{
switch (i)
{
case 1:d_num +=31;break;
case 2:(flag==1)?d_num +=29:d_num +=28;break;
case 3:d_num +=31;break;
case 4:d_num +=30;break;
case 5:d_num +=31;break;
case 6:d_num +=30;break;
case 7:d_num +=31;break;
case 8:d_num +=31;break;
case 9:d_num +=30;break;
case 10:d_num +=31;break;
case 11:d_num +=30;break;
case 12:d_num +=31;break;
}
}
d_num+=day;
return d_num ;
}