注意:此代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。 IDE工具:Visual Studio 2010
代码块:
方法一:(指针法)
#include#include struct Date{ int year, month, day; }; void output(Date *date); int main(){ Date *date=(Date*)malloc(sizeof(Date)); date->year=2008; date->month=8; date->day=8; output(date); free(date); system("pause"); return 0; } void output(Date *date){ int i, sumDay, mon[12]; int y=date->year; for(i=0; i<12; i++) i<=6 ? (i%2==0 ? mon[i]=31 : mon[i]=30) : (i%2==0 ? mon[i]=30 : mon[i]=31); (y%4==0&&y%100!=0)||(y%400==0) ? mon[1]=29 : mon[1]=28; for(i=0, sumDay=0; i month-1; i++) sumDay+=mon[i]; sumDay+=date->day; printf("%d-%d-%d is the No.%d day in %d!n", date->year, date->month, date->day, sumDay, date->year); }
方法二:(极简写法,不提倡,代码可读性差)
#include#include struct Date{ int year, month, day; }; void output(Date *date); int main(){ Date *date=(Date*)malloc(sizeof(Date)); date->year=2008, date->month=8, date->day=8; output(date); free(date); system("pause"); return 0; } void output(Date *date){ int i, sumDay, mon[12]; for(i=0; i<12; i<=6 ? (i%2==0 ? mon[i]=31 : mon[i]=30) : (i%2==0 ? mon[i]=30 : mon[i]=31), i++); ((date->year)%4==0&&(date->year)%100!=0)||((date->year)%400==0) ? mon[1]=29 : mon[1]=28; for(i=0, sumDay=0; i month-1; sumDay+=mon[i++]); printf("%d-%d-%d is the No.%d day in %d!n", date->year, date->month, date->day, sumDay+date->day, date->year); }
实现效果如下:



