黑马程序员技术交流社区

标题: 帮忙解决一下吧....... [打印本页]

作者: longer057    时间: 2015-5-1 23:03
标题: 帮忙解决一下吧.......
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)


看看下面两个方法哪个错了,错在哪里?
  1. #include <stdio.h>
  2. typedef struct {
  3.     int year;
  4.     int month;
  5.     int day;
  6. } DATE;
  7. int main(int argc, const char * argv[]) {
  8.     int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};
  9.     int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  10.     int falt=1;
  11.     while (falt) {
  12.         // 定义日期
  13.         DATE date;
  14.         // 提示用户输入日期  并接收日期
  15.         printf("请输入年:\n");
  16.         scanf("%d",&date.year);
  17.         printf("请输入月:\n");
  18.         scanf("%d",&date.month);
  19.         printf("请输入日:\n");
  20.         scanf("%d",&date.day);
  21.         // 对日期进行计算得到相差天数
  22.         int count1 = 0; // 记录闰年数
  23.         int count2 = 0; // 记录非闰年数
  24.         for (int i=2006; i<date.year; i++) {
  25.             if((i%4==0&&i%100!=0)|| i%400==0){
  26.                 count1++;
  27.             }
  28.         }
  29.         count2 = date.year - 2006 - count1;
  30.         int count = 0;
  31.         count =  count1 * 366 + count2 * 365; // 记录总天数
  32.         if(((date.year)%4==0&&(date.year)%100!=0)|| (date.year)%400==0){
  33.             for (int i=0; i<date.month-1; i++) {
  34.                 count += a[i];
  35.             }
  36.         }else {
  37.             for (int i=0; i<date.month-1; i++) {
  38.                 count += b[i];
  39.             }
  40.         }
  41.         count += date.day;
  42.         // 天数 对2/3进行取余
  43.         printf("小明熬了%d天\n", count);
  44.         if (count % 2 == 0) {
  45.             printf("卧槽,有帅哥!\n");
  46.         }
  47.         if (count % 3 == 0) {
  48.             printf("MLGB,大美女!\n");
  49.         }
  50.         if (count%2&&count%3) {
  51.             printf("尽情的开撸吧...\n");
  52.         }
  53.         printf("请按:0.退出  1.继续\n");
  54.         scanf("%d",&falt);
  55.     }
  56.    
  57.     return 0;
  58. }
复制代码
  1. #include <stdio.h>

  2. int getYears(int year);
  3. int getMonth(int year,int month);
  4. int getAllDay(int year, int month, int day);

  5. int main(int argc, const char * argv[]) {
  6.    
  7.     int year,month,day;
  8.     printf("请输入一个日期 年-月-日 来看看小明现在有没有精尽人亡.\n");
  9.     scanf("%d-%d-%d",&year,&month,&day);
  10.    
  11.     int all_day = getAllDay(year, month, day);
  12.    
  13.     //NSLog(@"%d",all_day);
  14.     printf("%d\n",all_day);
  15.    
  16.     //判断小明的行为
  17.     if (all_day % 2 == 0) {
  18.         printf("小明现在在泡妞呢,叔叔咱们不约!\n");
  19.     }
  20.     if (all_day % 3 == 0) {
  21.         printf("小明现在在搞基呢,你要不要一起来!\n");
  22.     }
  23.     if (all_day % 2 == 0 && all_day % 3 == 0) {
  24.         printf("小明现在在3P呢,不带外人,你洗洗睡吧!\n");
  25.     }
  26.     if (all_day % 2 != 0 && all_day % 3 != 0) {
  27.         printf("小明现在自己在家撸着呢....\n");
  28.     }
  29.     return 0;
  30. }
  31. //获取闰年和平年各多少天的函数
  32. int getYears(int year)
  33. {
  34.     //如果是闰年返回366天
  35.     if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
  36.         return 366;
  37.     }
  38.     else {//否则返回365天
  39.         return 365;
  40.     }
  41. }
  42. //获取一共几个月,合计多少天.
  43. int getMonth(int year,int month)
  44. {
  45.     //定义润月
  46.     int double_array[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
  47.     //定义平月
  48.     int arrar[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
  49.    
  50.     int day_month = 0;
  51.    
  52.     //闰月天数
  53.     if ((year % 4 == 0 && year % 100 != 0 )||year % 400 == 0) {
  54.         for (int i = 1; i < month; i++) {
  55.             day_month += double_array[i-1];
  56.         }
  57.     }
  58.     else {//平月天数
  59.         for(int i = 1; i < month; i++) {
  60.             day_month += arrar[i-1];
  61.         }
  62.     }
  63.    
  64.     return day_month;
  65.    
  66. }
  67. //获取总天数
  68. int getAllDay(int year, int month, int day)
  69. {
  70.     int allDay = 0;
  71.     int day_years = 0;
  72.     int day_month = 0;
  73.    
  74.     //计算总年数
  75.     for (int i = 2006; i < year; i++) {
  76.         day_years += getYears(year);
  77.     }
  78.    
  79.     //计算月份总天数
  80.     day_month = getMonth(year, month);
  81.    
  82.     //计算总天数
  83.     allDay = day_years + day_month + day;
  84.    
  85.    // NSLog(@"%d",allDay);
  86.    
  87.    
  88.     return  allDay;
  89.    
  90.    
  91. }
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2