3条回答 默认 最新
- CSDN专家-Fay 2021-07-05 09:18关注
这个课设主要到C语言的一些日期函数,还有基本的循环,数组的用法等等
int main(void) { int a, i, j, n, k, t, w, x, y, z; static int d[13][78]; int m[14] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; char wst[] = " Sun Mon Yue Wed Thu Fri Sat "; printf("请输入年份: "); scanf("%d", &y); if(y%4==0 && y%100!=0 || y%400==0) /*闰年的二月为29天*/ m[2] = 29; w = (y+(y-1)/4-(y-1)/100+(y-1)/400)%7; /*计算y年元旦为星期w*/ for(i=1; i<=12; i++) { a = 1; for(j=1; j<=6; j++) { for(k=0; k<=6; k++) { while(k<w) k=k+1; d[i][j*10+k] = a; /*计算i月的第j个星期的星期w的日期为a*/ a=a+1; w = k+1; if(w==7) w=0; if(a>m[i]) break; } if(a>m[i]) break; } } printf("输入每行显示的月份数(1-6): "); scanf("%d", &x); for(k=1; k<=16*x-3; k++) printf(" "); printf("=====%d=====\n", y); /*打印年号*/ for(n=1; n<=12/x; n++) { t = x*(n-1)+1; printf("\n "); for(z=1; z<=x; z++) { for(k=1; k<=15; k++) printf(" "); printf("%2d", t+z-1); /*打印月号*/ for(k=1; k<=14; k++) printf(" "); } printf("\n "); for(z=1; z<=x; z++) /*按一横排x个月格式打印*/ printf("%s", wst); /*打印星期标题*/ for(j=1; j<=6; j++) { printf("\n "); for(i=t; i<=t+x-1; i++) { printf(" "); for(k=0; k<=6; k++) if(d[i][j*10+k]==0) /*空缺日期位置打印空格*/ printf(" "); else printf("%4d", d[i][j*10+k]);/*打印日期*/ } } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报