为什么运行出来结果不对啊,求指点...还是不太懂switch语句怎么用...

来源:4-17 switch与if语句的应用

菠萝不困

2015-08-01 14:11

#include<stdio.h>

int main() 

    /* 定义需要计算的日期 */

    int year = 2008;

    int month = 8;

    int day = 8;

    int i,flag;

    switch(month)

{

case 1:i=0;break;

case 2:i=i+31;break;

case 3:i=i+28;break;

case 4:i=i+31;break;

case 5:i=i+30;break;

case 6:i=i+31;break;

case 7:i=i+30;break;

case 8:i=i+31;break;

case 9:i=i+31;break;

case 10:i=i+30;break;

case 11:i=i+31;break;

case 12:i=i+30;break;

default:printf("一年只有12个月");break;

}

i=i+day;

if(year%400==0||(year%4==0 && year%100!=0))

flag=1;

else

flag=0;

if(flag=1&&month>=2)

i++;

    printf("%d年%d月%d日是这一年的第%d天\n",year,month,day,i);

    return 0;

}


写回答 关注

1回答

  • onemoo
    2015-08-01 15:18:41
    已采纳

    最后那个if的控制表达式中,应该是 flag == 1 吧,你写成了给flag赋值1。

    onemoo 回复菠萝不困

    你的month定义为8,在switch中会直接跳到case 8处,假设你的i初值为0,那么这样i就是31(只是七月的天数),然后就跳出了switch语句... 这样加不到前几个月的天数,应该是算法有问题。

    2015-08-05 23:24:12

    共 4 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题