- /*
- 小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意闰年问题)(C语言)
- */
- #include <stdio.h>
- //定义一个判断是否是闰年的函数
- int leapYear(int n){
- if(n%4==0){
- if(n%100!=0){
- return 1;
- }
- else if(n%400==0){
- return 1;
- }
- else{return 0;}
- }
- else{return 0;}
- }
- int main(int argc, const char * argv[]) {
-
- //定义年月日变量
- int year,month,day;
- //提示用户输入一个日期
- printf("请以2006-1-1的格式输入一个2006年之后的日期:\n");
- //接收用户输入的日期
- scanf("%d-%d-%d",&year,&month,&day);
- //判断是否非法
- if(year<2006 && month<1 && month>12 && day<1 && day>31){
- printf("您输入的日期有误,请核对好日历后重新运行本程序。");
- return 0;
- }
- //定义变量计数闰年年数及非闰年年数
- int countLeap=0;
- int countOther=year-2006;
- //通过for循环判断有几年是闰年
- for(int i=2006; i<year; i++){
- //调用判断闰年的函数
- if (leapYear(i)){
- countLeap++;
- countOther--;
- }
- }
- //定义两个数组用于存放闰年与非闰年的月份天数
- int leapMonth[]={31,29,31,30,31,30,31,31,30,31,30,31};
- int nonMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
- int sumDay=0;
- int sumMonth=0;
- //用for循环遍历数组求出当年前几个月份的天数之和
- if (leapYear(year)) {
- for (int i=0; i<month-1; i++) {
- sumMonth+=leapMonth[i];
- }
- }
- else {
- for (int i=0; i<month-1; i++) {
- sumMonth+=nonMonth[i];
- }
- }
- //计算总天数
- sumDay=countLeap*366+countOther*365+sumMonth+day;
- printf("这是小明开始认识人生的第%d天\n",sumDay);
- //利用求余法判断认识的是美女还是帅哥并打印
- if(sumDay%3==0 && sumDay%2==0) printf("%d-%d-%d这天有点忙哦,既认识了个美女,又认识了个帅哥!",year,month,day);
- else if(sumDay%3==0) printf("%d-%d-%d这天认识了个美女!\n",year,month,day);
- else if(sumDay%2==0) printf("%d-%d-%d这天认识了个帅哥!\n",year,month,day);
- else printf("%d-%d-%d这天弱爆了,一个都没认识,继续加油哦!\n",year,month,day);
- return 0;
- }
复制代码 |
|