回复 22楼 bccn_2012
我们只是学到指针,一些系统命令都没学!发给老师他坑定不信的
回复 29楼 read_you
强悍的说
#include<stdio.h> int main() {printf(" 万年历by\n"); void abc( int year,int month); int year,month; for(;;) {printf("请输入要查询的年份和月份\n"); printf("年份:"); scanf("%d",&year); printf("月份:"); scanf("%d",&month); for(;;) if(year>0&&(1<=month&&month<=12))break; else{printf("请输入正确的年份和月份\n"); printf("年份:"); scanf("%d",&year); printf("月份:"); scanf("%d",&month);} abc(year,month); } return 0; } void abc(int year,int month) {int preyear;int premonth;int predays;int days; int leap;int i; preyear=year-1; premonth=month-1; leap=((year%4==0&&year%100!=0)||(year%400==0))?1:0; predays=preyear*365+preyear/4+preyear/400-preyear/100; switch(premonth) {case 1:predays+=31;break; case 2:predays+=59;break; case 3:predays+=90;break; case 4:predays+=120;break; case 5:predays+=151;break; case 6:predays+=181;break; case 7:predays+=212;break; case 8:predays+=243;break; case 9:predays+=273;break; case 10:predays+=304;break; case 11:predays+=334;break; } if(leap&&month>=3)predays++; if(leap)printf("闰年 ");else printf("平年 "); switch(month) {case 1:days=31;printf("1月 ");break; case 2:days=29;printf("2月 ");break; case 3:days=31;printf("3月 ");break; case 4:days=30;printf("4月 ");break; case 5:days=31;printf("5月 ");break; case 6:days=30;printf("6月 ");break; case 7:days=31;printf("7月 ");break; case 8:days=31;printf("8月 ");break; case 9:days=30;printf("9月 ");break; case 10:days=31;printf("10月 ");break; case 11:days=30;printf("11月 ");break; case 12:days=31;printf("12月 ");break; } if(leap&&month==2)days=28; printf("%d\n",year); printf(" 日 一 二 三 四 五 六\n"); predays%=7; for(i=1;i<=predays;i++) printf(" "); for(i=1;i<=days;i++) {printf(" %4d",i); if((i+predays)%7==6)printf("\n"); } printf("\n"); printf("\n"); }我用VC++6.0 我自己写的,但是对其存在问题,主要是每个月的第一行,而且有的月份能对齐有的月份对不齐,不知道是什么原因?求指点