70,019
社区成员




#include <stdio.h>
int main() {
int year,month,day,yearday;
int dayofyear(int year,int month,int day);
int monthofyear(int year,int total_day,int *month,int *day);
char *month_name(int n);
printf("%d\n",dayofyear(2014,9,2));
monthofyear(2014,246,&month,&day);
printf("%d(%s),%d\n",month,month_name(month),day);
return 0;
}
static int *daytab = {
31,
31+28,
31+28+31,
31+28+31+30,
31+28+31+30+31,
31+28+31+30+31+30,
31+28+31+30+31+30+31,
31+28+31+30+31+30+31+31,
31+28+31+30+31+30+31+31+30,
31+28+31+30+31+30+31+31+30+31,
31+28+31+30+31+30+31+31+30+31+30,
31+28+31+30+31+30+31+31+30+31+30+31,
31,
31+29,
31+29+31,
31+29+31+30,
31+29+31+30+31,
31+29+31+30+31+30,
31+29+31+30+31+30+31,
31+29+31+30+31+30+31+31,
31+29+31+30+31+30+31+31+30,
31+29+31+30+31+30+31+31+30+31,
31+29+31+30+31+30+31+31+30+31+30,
31+29+31+30+31+30+31+31+30+31+30+31
};
int leap(int year) {
return ( ( (year%4 == 0) && year%100 != 0 ) || year % 400 == 0 );
}
int dayofyear(int year,int month,int day) {
int leap(int year);
return *(daytab + ( (month - 1) + !leap(year) * 11) ) + day;
}
int monthofyear(int year,int yearday,int *month,int *day) {
int m,ly;
ly = leap(year);
if(yearday < 1 || yearday<(355+!ly)) {
return -1;
}
m = ly ? 11 : 23;
while(yearday < *(daytab + m)) {
m--;
}
if(month) {
*month = m % 12 + 1;
}
if(day) {
*day =yearday - (*(daytab + m));
}
return 0;
}
//the function will return the pointer of the month of sting
char *month_name(int n) {
static char *name[]={"January","February","March",
"April","May","June","July","August","September","October","November",
"December"};
return name[n-1];
}
//the function will return the pointer of the month of sting
char *month_name(int n) {
static char *name[]={"January","February","March",
"April","May","June","July","August","September","October","November",
"December"};
return name[n-1];
}
static char *name[]却可以呢?(我之前测试过了)。
谢谢![/quote]
你要搞清楚static int daytab[]中的 daytab 是一个一维数组,每个元素是一个整数。而 static char *name[] 你可以看作是一个二维的字符数组,其中每个元素是一个字符串(还是一个字符数组)。区分开一维和二维。
或者你可以这么看 static char *name[] 这个数组中的元素是 char*指针,每个指针指向一个字符串的首地址。。。
[/quote]
想明白了,谢谢!//the function will return the pointer of the month of sting
char *month_name(int n) {
static char *name[]={"January","February","March",
"April","May","June","July","August","September","October","November",
"December"};
return name[n-1];
}
static char *name[]却可以呢?(我之前测试过了)。
谢谢![/quote]
你要搞清楚static int daytab[]中的 daytab 是一个一维数组,每个元素是一个整数。而 static char *name[] 你可以看作是一个二维的字符数组,其中每个元素是一个字符串(还是一个字符数组)。区分开一维和二维。
或者你可以这么看 static char *name[] 这个数组中的元素是 char*指针,每个指针指向一个字符串的首地址。。。
//the function will return the pointer of the month of sting
char *month_name(int n) {
static char *name[]={"January","February","March",
"April","May","June","July","August","September","October","November",
"December"};
return name[n-1];
}
static char *name[]却可以呢?(我之前测试过了)。
谢谢! static int daytab[]
试试