问答详情
源自:4-17 switch与if语句的应用

为什么我的没有输出

#include <stdio.h>
int main()
{
 /* 定义需要计算的日期 */
 int year = 2008;
 int month = 8;
 int day = 8;
 int sum = 0;
 int i = 0;
 int j = 0;
 /*
 * 请使用switch语句,if...else语句完成本题
 * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
 * 小编还是希望大家独立完成哦~
 */
 month = i;
 if (i>7)
 {
  i -= 7;
  sum += 213;
 }
 i -= 1;
 i /= 2;
 i *= 61;
 sum = i + (month % 2) * 31;
 if (year % 100 == 0 && year % 400 == 0 || year % 4 == 0 && year % 100 != 0)j = 1;
 else j = 0;
 if (j == 1 && month>2)
 {
  sum -= 2;
 }
 if (j == 0 && month <= 2)
 {
  sum -= 1;
 }
 sum += day;
 printf("2008年8月8日是该年的第%d天", sum);

















 return 0;
}


提问者:世纪__ 2016-01-03 05:04

个回答

  • qq_夜深沉_0
    2016-02-20 14:50:10

    新手表示看不懂0.0

  • 慕移动9341187
    2016-01-04 03:53:05

    用codeblocks试试,可以得出是第8天

  • 嘀咕01
    2016-01-03 20:38:17

    #include <stdio.h>
    int main()
    {
     /* 定义需要计算的日期 */
     int year = 2008;
     int month = 8;
     int day = 8;
     int sum = 0;
     int i = 0;
     int j = 0;
     /*
     * 请使用switch语句,if...else语句完成本题
     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
     * 小编还是希望大家独立完成哦~
     */
     month = i;
     if (i>7)  //i为0,不执行
     {
          i -= 7;
          sum += 213;
     }
     i -= 1;   //-1
     i /= 2;   //-0.5
     i *= 61;  //-30.3
     sum = i + (month % 2) * 31;   //上面month = i ,month为0, sum为i,-30.5
     //&&和||是并列关系,要打括号,这里是j = 0
     if (year % 100 == 0 && year % 400 == 0 || year % 4 == 0 && year % 100 != 0)j = 1;
     else j = 0;
     if (j == 1 && month>2)
     {
          sum -= 2;
     }
     if (j == 0 && month <= 2)  //到这里
     { 
          sum -= 1;
     }
     sum += day;
     printf("2008年8月8日是该年的第%d天", sum);   //输出是7
     return 0;                                    //这逻辑...........
    }


  • stone007
    2016-01-03 09:02:48

    有几种情况:1、在线编译器有BUG;2、有些字符的大小写不对(看你的编码没有问题);3、上传服务器时出错。

    俺也是新手,以上是学习中遇到过的问题,希望能帮到你。