A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意闰年问题)(C语言)
  3. */
  4. #include <stdio.h>
  5. //定义一个判断是否是闰年的函数
  6. int leapYear(int n){
  7.     if(n%4==0){
  8.         if(n%100!=0){
  9.             return 1;
  10.         }
  11.         else if(n%400==0){
  12.             return 1;
  13.         }
  14.         else{return 0;}
  15.     }
  16.     else{return 0;}
  17. }
  18. int main(int argc, const char * argv[]) {
  19.    
  20.     //定义年月日变量
  21.     int year,month,day;
  22.     //提示用户输入一个日期
  23.     printf("请以2006-1-1的格式输入一个2006年之后的日期:\n");
  24.     //接收用户输入的日期
  25.     scanf("%d-%d-%d",&year,&month,&day);
  26.     //判断是否非法
  27.     if(year<2006 && month<1 && month>12 && day<1 && day>31){
  28.         printf("您输入的日期有误,请核对好日历后重新运行本程序。");
  29.         return 0;
  30.     }
  31.     //定义变量计数闰年年数及非闰年年数
  32.     int countLeap=0;
  33.     int countOther=year-2006;
  34.     //通过for循环判断有几年是闰年
  35.     for(int i=2006; i<year; i++){
  36.         //调用判断闰年的函数
  37.         if (leapYear(i)){
  38.             countLeap++;
  39.             countOther--;
  40.         }
  41.     }
  42.     //定义两个数组用于存放闰年与非闰年的月份天数
  43.     int leapMonth[]={31,29,31,30,31,30,31,31,30,31,30,31};
  44.     int nonMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
  45.     int sumDay=0;
  46.     int sumMonth=0;
  47.     //用for循环遍历数组求出当年前几个月份的天数之和
  48.     if (leapYear(year)) {
  49.         for (int i=0; i<month-1; i++) {
  50.             sumMonth+=leapMonth[i];
  51.         }
  52.     }
  53.     else {
  54.         for (int i=0; i<month-1; i++) {
  55.             sumMonth+=nonMonth[i];
  56.         }
  57.     }
  58.     //计算总天数
  59.     sumDay=countLeap*366+countOther*365+sumMonth+day;
  60.     printf("这是小明开始认识人生的第%d天\n",sumDay);
  61.     //利用求余法判断认识的是美女还是帅哥并打印
  62.     if(sumDay%3==0 && sumDay%2==0) printf("%d-%d-%d这天有点忙哦,既认识了个美女,又认识了个帅哥!",year,month,day);
  63.     else if(sumDay%3==0) printf("%d-%d-%d这天认识了个美女!\n",year,month,day);
  64.     else if(sumDay%2==0) printf("%d-%d-%d这天认识了个帅哥!\n",year,month,day);
  65.     else printf("%d-%d-%d这天弱爆了,一个都没认识,继续加油哦!\n",year,month,day);
  66.     return 0;
  67. }
复制代码

3 个回复

倒序浏览
小明好福气呀。。。。。
回复 使用道具 举报
你好有想法啊,艳遇吗?
回复 使用道具 举报
小明被玩坏了  哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马