/*10、小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥, 编程实现当输入2006年1月1日之后的任意一天, 输出小明那天是结识美女还是帅哥(注意润年问题)(C语言)*/ #include <stdio.h> int main() { intrunnian(int *p, int *q); intt,n,y,r; //1.y表示第几个月 r表示第几日 t表示2月多少天 n表示当前共多少天 inta; //2.表示年份 ints; //3.表示存在多少个闰年 intday; //4.总过多少天 s= runnian(&t, &a);//5.调用ruannian()函数,返回有几个闰年 printf("请输入月份:\n");//6.按要求输入月份输入 scanf("%d",&y); while ( (y >=12) || (0 >= y) ){ printf("输入错误请重新输入月份:\n"); scanf("%d",&y); } printf("请输入日:\n"); //7.按要求输入日 scanf("%d",&r); while( (r >=31) || (0 >= r) ){ printf("输入错误请重新输入日:\n"); scanf("%d",&r); } { if(y== 12) //8.判断是哪个月,计算出在当年中总共的天数 n= 6*31+4*30+t+r; elseif(y ==11) n= 6*31+3*30+t+r; elseif(y == 10) n= 5*31+3*30+t+r; elseif(y == 9) n= 5*31+2*30+t+r; elseif(y == 8) n= 4*31+2*30+t+r; elseif(y ==7) n= 3*31+2*30+t+r; elseif(y == 6) n= 3*31+1*30+t+r; elseif(y == 5) n= 2*31+1*30+t+r; elseif(y == 4) n= 2*31+0*30+t+r; elseif(y ==3) n= 31+t+r; elseif(y== 2) n= 31+r; elseif(y == 1) n= r; } day= n+s+365*(a-2006)-1; //9.计算出总过的天数 if("day%3 == 1") printf("第%d天遇到的是美女\n",day);//10.打印出遇到的是美女还是帅哥 else printf("第%d天遇到的是帅哥\n",day); return0; } int runnian(int *p, int *q) { intnum=0; //1.num用来记录有多少闰年 printf("请输入年份:\n"); //2.按要求输入年份 年份必须大于2006 scanf("%d",q); while( *q <= 2006 ){ printf("输入错误请重新输入年份:\n"); scanf("%d",q); } for(inti=0; i<=*q-2006 ;i++) //3.循环判断这之间的年份是否有闰年,有计数加以且是闰年就将2月定为29天否则28天 { if((2006+i)%400 == 0 ) { *p=29; num++; } elseif( ( (2006+i)%4 == 0) && ( (2006+i)%100 != 0) ) { *p=29; num++; } else *p=28; } returnnum; //4.返回有几个闰年 }
|