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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有问题的地方希望能帮忙提出来,也希望可以帮到大家一点
  1. #include <stdio.h>

  2. void boyOrGirl(int year,int mouth,int day)
  3. {   //一年有多少天
  4.     int dayOfYear = 0;
  5.     //年数差换算成天数
  6.     int sumOfYear = 0;
  7.     //月数差换算成天数
  8.     int sumOfMouth = 0;
  9.     //天数差
  10.     int sumOfDay = 0;
  11.     //定义数组存放闰年12个月,每月的天数
  12.     int runYear[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
  13.     //定义数组存放一般年12个月,每月天数
  14.     int norYear[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
  15.    
  16.     for (int x = 2006; x < year; x++) {
  17.         //判断如果输入年份是2006,则将年数差换算成的天数差为0
  18.         if (year == 2006) {
  19.             sumOfYear = 0;
  20.         }else{
  21.             if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0) {
  22.                 dayOfYear = 366;
  23.             }else{
  24.                 dayOfYear = 365;
  25.             }
  26.             sumOfYear += dayOfYear;
  27.         }
  28.     }
  29.     for (int m = 1; m < mouth; m++) {
  30.         //判断如果输入月份是1,则将月数差换算成的天数差为0
  31.         if (mouth == 1) {
  32.             sumOfMouth = 0;
  33.         }else{
  34.             if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
  35.                 sumOfMouth += runYear[m-1];
  36.             }else{
  37.                 sumOfMouth += norYear[m-1];
  38.             }
  39.         }
  40.     }
  41.     sumOfDay = day - 1;
  42.    
  43.     //定义一个变量存放两个时间差换算成的总天数
  44.     int allDays = sumOfDay + sumOfMouth + sumOfYear;
  45.     printf("%d",allDays);
  46.    
  47.     if (allDays % 6 == 0) {
  48.         printf("小明结识了一个美女和一个帅哥\n");
  49.     }else if(allDays % 3 == 0){
  50.         printf("小明结识了一个美女\n");
  51.     }else if(allDays % 2 == 0){
  52.         printf("小明结识了一个帅哥\n");
  53.     }else{
  54.         printf("小明目测宅家里没出去- -\n");
  55.     }
  56. }

  57. void date()
  58. {
  59.     int a = 0;
  60.     int b = 0;
  61.     int c = 0;
  62.     //do while循环对输入内容进行限制以及格式提示
  63.     do {
  64.         printf("请输入时间2006年1月1日之后的任意一天,输入格式例如:2008,2,15\n");
  65.         scanf("%d,%d,%d",&a,&b,&c);
  66.     } while (a < 2006||b > 13||c > 31);
  67.     boyOrGirl(a, b, c);
  68. }

  69. int main(int argc, const char * argv[]) {
  70.     // insert code here...
  71.     //调用函数
  72.     date();
  73.    
  74.     return 0;
  75. }
复制代码



5 个回复

倒序浏览
这个题,题目是这样的
10、 小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)
回复 使用道具 举报
这代码真啰嗦,逻辑也不对!
回复 使用道具 举报
呵呵 ,楼上好犀利工
回复 使用道具 举报
xiezhongmin 发表于 2015-3-12 17:13
这代码真啰嗦,逻辑也不对!

新手:)求指点,快教我做人,啊嘿嘿。
回复 使用道具 举报
#在这里快速回复#谢谢。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马